23 #ifndef COPASI_CCopasiObject
24 #define COPASI_CCopasiObject
78 void(CType::*method)(
const VType &))
104 {
return (
this == rhs);}
208 virtual void print(std::ostream * ostream)
const = 0;
288 const std::string & type =
"CN",
304 virtual void print(std::ostream * ostream)
const;
453 virtual std::string
getUnits()
const;
494 virtual const std::string &
getKey()
const;
500 template <
class CType>
502 void (CType::*method)(
const C_FLOAT64 &))
513 template <
class CType>
515 void (CType::*method)(
const C_INT32 &))
526 template <
class CType>
528 void (CType::*method)(
const bool &))
543 template <
class CType>
545 void (CType::*method)(
void))
601 template <
typename ForwardAccessIterator>
603 ForwardAccessIterator end,
606 std::list< const CCopasiObject * > SortedList;
607 std::list< const CCopasiObject * >::iterator itList;
608 std::list< const CCopasiObject * >::iterator endList;
611 std::list< CCopasiObject::DataObjectSet > DependencySet;
612 std::list< CCopasiObject::DataObjectSet >::iterator itDependencies;
614 for (; begin != end; ++begin)
616 AllDependencies.clear();
617 (*begin)->getAllDependencies(AllDependencies, context);
619 itList = SortedList.begin();
620 endList = SortedList.end();
621 itDependencies = DependencySet.begin();
623 for (; itList != endList; ++itList, ++itDependencies)
624 if (itDependencies->count(*begin))
break;
626 SortedList.insert(itList, *begin);
627 DependencySet.insert(itDependencies, AllDependencies);
633 #endif // COPASI_CCopasiObject
CCopasiDataModel * getObjectDataModel()
virtual bool setObjectParent(const CCopasiContainer *pParent)
virtual Refresh * getRefresh() const
CCopasiContainer * getObjectAncestor(const std::string &type) const
virtual void operator()(const VType &value)
unsigned C_INT32 mObjectFlag
virtual std::string getObjectDisplayName(bool regular=true, bool richtext=false) const
void clearDirectDependencies()
void setRefresh(CType *pType, void(CType::*method)(void))
CCopasiStaticString * mpObjectDisplayName
UpdateMethod * getUpdateMethod() const
bool isNameVector() const
void setObjectValue(const C_FLOAT64 &value)
friend std::ostream & operator<<(std::ostream &os, const CCopasiObject &o)
virtual CCopasiObjectName getCN() const
virtual ~SpecificUpdateMethod()
CCopasiMatrixReference< CType > * createMatrixReference(const std::string &name, const CCopasiContainer *pParent, CType &reference, const unsigned C_INT32 &flag=0)
const std::string & getObjectName() const
virtual ~RefreshTemplate()
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const
virtual CCopasiObjectName getCN() const =0
virtual const CObjectInterface::ObjectSet & getPrerequisites() const =0
virtual ~CObjectInterface()
bool hasCircularDependencies(DataObjectSet &candidates, DataObjectSet &verified, const DataObjectSet &context) const
static CRenameHandler * smpRenameHandler
void setDirectDependencies(const DataObjectSet &directDependencies)
virtual CCopasiObject * getObject() const
bool isNonUniqueName() const
void(CClass::* mMethod)(void)
UpdateMethod * mpUpdateMethod
const std::string & getObjectType() const
virtual CCopasiObject * getObject() const
SpecificUpdateMethod(CType *pType, void(CType::*method)(const VType &))
virtual bool isEqual(Refresh *const rhs) const
virtual void operator()(const C_INT32 &C_UNUSED(value))
DataObjectSet mDependencies
std::vector< Refresh * > DataUpdateSequence
void setUpdateMethod(CType *pType, void(CType::*method)(const C_FLOAT64 &))
std::list< const CCopasiObject * > sortObjectsByDependency(ForwardAccessIterator begin, ForwardAccessIterator end, const CCopasiObject::DataObjectSet &context)
void setUpdateMethod(CType *pType, void(CType::*method)(const C_INT32 &))
virtual void operator()(void)
virtual const std::string & getKey() const
void addDirectDependency(const CCopasiObject *pObject)
void(CType::* mMethod)(const VType &)
virtual void operator()(const bool &C_UNUSED(value))
virtual void operator()(const C_FLOAT64 &C_UNUSED(value))
virtual void print(std::ostream *ostream) const =0
virtual const CObjectInterface::ObjectSet & getPrerequisites() const
static UpdateMethod mDefaultUpdateMethod
RefreshTemplate(CClass *pInstance, void(CClass::*method)(void))
virtual bool isEqual(Refresh *const rhs) const
void setUpdateMethod(CType *pType, void(CType::*method)(const bool &))
bool hasUpdateMethod() const
virtual bool isPrerequisiteForContext(const CObjectInterface *pObject, const CMath::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects) const =0
virtual bool mustBeDeleted(const DataObjectSet &deletedObjects) const
bool dependsOn(DataObjectSet candidates, const DataObjectSet &context=DataObjectSet()) const
std::set< const CObjectInterface * > ObjectSet
virtual const DataObjectSet & getDirectDependencies(const DataObjectSet &context=DataObjectSet()) const
CCopasiContainer * mpObjectParent
virtual const CObjectInterface * getObject(const CCopasiObjectName &cn) const =0
virtual std::string getUnits() const
bool isValueString() const
CCopasiObject referenceType
bool isValueInt64() const
void removeDirectDependency(const CCopasiObject *pObject)
static std::vector< Refresh * > buildUpdateSequence(const DataObjectSet &objects, const DataObjectSet &uptoDateObjects, const DataObjectSet &context=DataObjectSet())
virtual void * getValuePointer() const
virtual void operator()(void)
CCopasiVectorReference< CType > * createVectorReference(const std::string &name, const CCopasiContainer *pParent, CType &reference, const unsigned C_INT32 &flag=0)
bool isStaticString() const
void getAllDependencies(DataObjectSet &dependencies, const DataObjectSet &context) const
virtual void * getValuePointer() const =0
static void setRenameHandler(CRenameHandler *rh)
virtual const CCopasiObject * getValueObject() const
static const C_FLOAT64 DummyValue
bool setObjectName(const std::string &name)
std::set< const CCopasiObject * > DataObjectSet
virtual void print(std::ostream *ostream) const
CCopasiContainer * getObjectParent() const
virtual bool isPrerequisiteForContext(const CObjectInterface *pObject, const CMath::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects) const
std::vector< CObjectInterface * > UpdateSequence
CCopasiObjectReference< CType > * createReference(const std::string &name, const CCopasiContainer *pParent, CType &reference, const unsigned C_INT32 &flag=0)