In addition to a value (ARTvariant) of some kind, this class can also contain the formula to (re)calculate its value.
The formula can be a parser expression or a functionoid. The ARTdataContainer also implements the client observer pattern, ensuring that if a value is changed, all values that depend on the changed one are invalidated and subject to recalculation, when their value is queried. Users must be carful to avoid circular references.
Use ARTdataContainer for values which have a small scope and when the name of the value you are processing is unimportant, because you can keep track of it. Use ARTdataProp when you want to add values to an ARTobject, they can then be added to the list of properties of the object. ARTdataProp is also useful when you have several values, and you can not keep track of their names easily without storing them as strings within the object.
Public Member Functions |
void | EvaluateIfInvalid () |
void | DebugDepTree (const string intend, const string linebreak="\n") |
| Just for debugging: to print the dependency tree...
|
string | WriteDepTree (const string intend, const string linebreak="\n") |
| ARTdataContainer () |
| default constructor
|
| ARTdataContainer (const T_ART_Type dtyp, const int dlen, const string varname="") |
| ARTdataContainer (std::string name, ARTfunctionoid *func=NULL) |
| ARTdataContainer (const int i) |
| ARTdataContainer (const double d) |
| ARTdataContainer (const float f) |
| ARTdataContainer (const char *s) |
| ARTdataContainer (const char *s1, const char *s2) |
| ARTdataContainer (const char *s1, const char *s2, const char *s3) |
| ARTdataContainer (const char *s1, const char *s2, const char *s3, const char *s4) |
| ARTdataContainer (const ARTdataContainer &orig) |
| copy constructor
|
ARTdataContainer * | clone () |
T_ART_Type | GetDatatype () |
int | GetCount () |
int | GetIterationNumber () |
double | GetComplexity () |
| This function is not used right now.
|
T_ART_Var * | GetValue () |
bool | IsValid () |
int | GetInt () |
const string & | GetDefinition () |
void | SetValue (ARTvariant *var) |
| direct change of data value (ignore definition string); set value pointer and force value to be valid.
|
virtual void | SetVal (const int i, const int ind=0) |
virtual void | SetVal (const double d, const int ind=0) |
virtual void | SetVal (const float f, const int ind=0) |
virtual void | SetVal (std::complex< double >, const int ind=0) |
virtual void | SetVal (const double re, const double im, const int ind=0) |
virtual void | SetVal (const char *s) |
virtual void | SetVal (const char *s, int ind) |
void | Invalidate () |
| mark value as invalid and invalidate all dependent data containers
|
void | NotifyClients () |
| invalidate all dependent data containers
|
int | GetEvaluationCost () |
void | AddDependency (ARTdataContainer *dependency) |
| Observe AND be notified.
|
void | RemoveAllDependencies () |
void | AddPropertiesAsDependency (ARTobject *obj) |
| Add all data properties of the ARTobject pointed to by obj as dependencies.
|
void | DoNotNotify (ARTdataContainer *client) |
void | RemoveDependency (ARTdataContainer *dependency) |
void | RemoveFromDefinition (ARTdataContainer *dependency) |
void | SetParser (ParserX *p) |
virtual ParserX * | GetParser () |
virtual ARTdataContainer * | GetParent () |
void | Rename (const string &newname) |
void | SetParserVar (const string &varname) |
virtual const Variable & | GetParserVar () const |
virtual const Variable & | GetParserVar () |
void | DestroyParserVar () |
string | GetVarName () const |
void | SetDefinition (const string &s, ARTsimulator *scope) |
void | SetDefinition (const string &s) |
void | RedoDefinitionDependencies () |
void | ResetEvaluation () |
| This function sets the flags of this data container and all dependencies to the value indicating that no evaluation is taking place.
|
void | SetScope (ARTsimulator *sim) |
ARTsimulator * | GetScope () |
void | SetFunction (ARTfunctionoid *func) |
string | DebugInfo () |
list< ARTdataContainer * > | GetClientList () |
bool | CheckValidity () |
ARTdataContainer & | GetArrayElement (int idx) |
void | SetCurrentIndex (int idx) |
void | SetParentModuleName (const string &name) |
const string & | GetParentModuleName () const |
void | deleteVar () |
| Array constructor.
|
virtual IValue & | operator[] (std::size_t idx) |
virtual IValue & | operator[] (int idx) |
virtual IValue & | operator= (int_type a_iVal) |
virtual IValue & | operator= (float_type a_fVal) |
virtual IValue & | operator= (string_type a_sVal) |
virtual IValue & | operator= (bool val) |
virtual IValue & | operator= (const array_type &a_vVal) |
virtual IValue & | operator= (const cmplx_type &val) |
virtual IValue & | operator= (const char_type *a_szVal) |
virtual char_type | GetType () const |
virtual float_type | GetFloat () const |
virtual float_type | GetImag () const |
virtual bool | GetBool () const |
virtual const cmplx_type & | GetComplex () const |
virtual const string_type & | GetString () const |
virtual const array_type & | GetArray () const |
virtual bool | IsVolatile () const |
virtual IToken * | Clone () const |
virtual Value * | AsValue () |
virtual IValue * | AsIValue () |