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.