62    virtual const std::string 
getClassName() { 
return std::string(
"Field"); }
 
  128    virtual inline bool deserialize(
const std::string& str) { 
return false; }
 
  162    void attach(std::shared_ptr<FCallBackFunc> func);
 
  163    void detach(std::shared_ptr<FCallBackFunc> func);
 
 
  209#define DEFINE_FIELD_FUNC(DerivedField, Data, FieldName)                        \ 
  210FieldName() : FBase("", ""){}                               \ 
  212FieldName(std::string name, std::string description, FieldTypeEnum fieldType, OBase* parent)        \ 
  213    : FBase(name, description, fieldType, parent){}             \ 
  215const std::string getTemplateName() override { return std::string(typeid(VarType).name()); }            \ 
  216const std::string getClassName() override { return std::string(#FieldName); }                   \ 
  218std::shared_ptr<Data>& getDataPtr()                                 \ 
  220    FBase* topField = this->getTopField();                      \ 
  221    DerivedField* derived = dynamic_cast<DerivedField*>(topField);  \ 
  223    return derived->m_data;                                         \ 
  226std::shared_ptr<Data>& constDataPtr()                               \ 
  228    FBase* topField = this->getTopField();                      \ 
  229    DerivedField* derived = dynamic_cast<DerivedField*>(topField);  \ 
  230    return derived->m_data;                                         \ 
  233std::shared_ptr<Data> allocate()                                    \ 
  235    auto& data = this->getDataPtr();                                \ 
  236    if (data == nullptr) {                                          \ 
  237        data = std::make_shared<Data>();                            \ 
  242bool connect(DerivedField* dst)                                     \ 
  244    this->connectField(dst);                                        \ 
  247bool connect(FBase* dst) override {                                 \ 
  248    DerivedField* derived = dynamic_cast<DerivedField*>(dst);       \ 
  249    if (derived == nullptr) return false;                           \ 
  250    return this->connect(derived);                                  \ 
  253    auto dataPtr = this->getDataPtr();                              \ 
  254    assert(dataPtr != nullptr);                                     \ 
  257const Data& constData() {                                           \ 
  258    auto dataPtr = this->constDataPtr();                            \ 
  259    assert(dataPtr != nullptr);                                     \ 
  263    std::shared_ptr<Data> m_data = nullptr;                         \ 
 
virtual bool disconnect(FBase *dst)
 
void setSource(FBase *source)
 
FieldTypeEnum getFieldType()
 
void tagOptional(bool optional)
 
std::string getObjectName()
 
virtual const std::string getClassName()
 
bool removeSource(FBase *f)
 
virtual bool deserialize(const std::string &str)
 
std::vector< FBase * > mMultipleSources
 
void requestValidSources(std::vector< FBase * > &src)
 
std::string m_description
 
void attach(std::shared_ptr< FCallBackFunc > func)
 
void setMin(float min_val)
 
FBase * promoteOuput()
Display a state field as an ouput field.
 
virtual DeviceType getDeviceType()
 
void setDerived(bool derived)
 
FInputPolicy
Field with a policy of FInputPolicy::Many is not allowed to be connected to FInputPolicy::One Field w...
 
std::vector< std::shared_ptr< FCallBackFunc > > mCallbackFunc
 
std::vector< FBase * > & getSinks()
 
void detach(std::shared_ptr< FCallBackFunc > func)
 
virtual const std::string getTemplateName()
 
void setParent(OBase *owner)
 
void setObjectName(std::string name)
 
FBase * demoteInput()
Hide a state field from inputs.
 
std::vector< FBase * > mSinks
 
void setAutoDestroy(bool autoDestroy)
 
bool disconnectField(FBase *dst)
 
virtual FInputPolicy inputPolicy()
 
virtual bool connect(FBase *dst)=0
 
FBase * promoteInput()
Display a state field as an input field.
 
void setDescription(std::string description)
 
uint sizeOfValidSources()
 
FBase * demoteOuput()
Hide a state field from outputs.
 
bool isActive()
A variable to control the visibility of the field.
 
bool removeSink(FBase *f)
 
void setMax(float max_val)
 
virtual std::string serialize()
 
std::string getDescription()
 
bool connectField(FBase *dst)
 
void setRange(float min_val, float max_val)
 
std::vector< FBase * > & getSources()
 
This is an implementation of AdditiveCCD based on peridyno.