52 virtual const std::string
getClassName() {
return std::string(
"Field"); }
94 virtual inline std::string
serialize() {
return ""; }
95 virtual inline bool deserialize(
const std::string& str) {
return false; }
132 void attach(std::shared_ptr<FCallBackFunc> func);
133 void detach(std::shared_ptr<FCallBackFunc> func);
170#define DEFINE_FIELD_FUNC(DerivedField, Data, FieldName) \
171FieldName() : FBase("", ""){} \
173FieldName(std::string name, std::string description, FieldTypeEnum fieldType, OBase* parent) \
174 : FBase(name, description, fieldType, parent){} \
176const std::string getTemplateName() override { return std::string(typeid(VarType).name()); } \
177const std::string getClassName() override { return std::string(#FieldName); } \
179std::shared_ptr<Data>& getDataPtr() \
181 FBase* topField = this->getTopField(); \
182 DerivedField* derived = dynamic_cast<DerivedField*>(topField); \
184 return derived->m_data; \
187std::shared_ptr<Data>& constDataPtr() \
189 FBase* topField = this->getTopField(); \
190 DerivedField* derived = dynamic_cast<DerivedField*>(topField); \
191 return derived->m_data; \
194std::shared_ptr<Data> allocate() \
196 auto& data = this->getDataPtr(); \
197 if (data == nullptr) { \
198 data = std::make_shared<Data>(); \
203bool connect(DerivedField* dst) \
205 this->connectField(dst); \
208bool connect(FBase* dst) override { \
209 DerivedField* derived = dynamic_cast<DerivedField*>(dst); \
210 if (derived == nullptr) return false; \
211 return this->connect(derived); \
214 auto dataPtr = this->getDataPtr(); \
215 assert(dataPtr != nullptr); \
218const Data& constData() { \
219 auto dataPtr = this->constDataPtr(); \
220 assert(dataPtr != nullptr); \
224 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()
virtual bool deserialize(const std::string &str)
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)
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 bool connect(FBase *dst)=0
FBase * promoteInput()
Display a state field as an input field.
void setDescription(std::string description)
FBase * demoteOuput()
Hide a state field from outputs.
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)
This is an implementation of AdditiveCCD based on peridyno.