Attribute is an abstract class that can be implemented in order to track custom metadata about MooseObject instances - enabling warehouse queries over the attribute. More...
#include <TheWarehouse.h>
Public Member Functions | |
Attribute (TheWarehouse &w, const std::string name) | |
Constructs/initializes a new attribute with the specified name for use in warehouse w. More... | |
virtual | ~Attribute () |
bool | operator== (const Attribute &other) const |
bool | operator!= (const Attribute &other) const |
unsigned int | id () const |
returns the unique attribute ID associated with all attributes that have the same (mose derived) class as this object. More... | |
virtual size_t | hash () const =0 |
This function must return a deterministic value that is uniquely determined by the data the attribute holds (i.e. More... | |
virtual void | initFrom (const MooseObject *obj)=0 |
initFrom reads and stores the desired meta-data from obj for later matching comparisons. More... | |
virtual bool | isMatch (const Attribute &other) const =0 |
isMatch returns true if the meta-data stored in this attribute is equivalent to that stored in other. More... | |
virtual bool | isEqual (const Attribute &other) const =0 |
isEqual returns true if the meta-data stored in this attribute is identical to that stored in other. More... | |
virtual std::unique_ptr< Attribute > | clone () const =0 |
clone creates and returns and identical (deep) copy of this attribute - i.e. More... | |
Private Attributes | |
int | _id = -1 |
Attribute is an abstract class that can be implemented in order to track custom metadata about MooseObject instances - enabling warehouse queries over the attribute.
Attribute subclasses must be registered with the warehouse (i.e. via TheWarehouse::registerAttribute) where they will be used before objects are added to that warehouse. Specific Attribute instances cannot (and should not) generally be created before the class is registered with a warehouse.
Definition at line 31 of file TheWarehouse.h.
Attribute::Attribute | ( | TheWarehouse & | w, |
const std::string | name | ||
) |
Constructs/initializes a new attribute with the specified name for use in warehouse w.
The attribute must have been previously registered with w prior to calling this constructor.
Definition at line 36 of file TheWarehouse.C.
|
inlinevirtual |
Definition at line 37 of file TheWarehouse.h.
|
pure virtual |
clone creates and returns and identical (deep) copy of this attribute - i.e.
the result of clone should return true if passed into isMatch.
Referenced by TheWarehouse::update().
|
pure virtual |
This function must return a deterministic value that is uniquely determined by the data the attribute holds (i.e.
is initialized with). Ideally, the data should be uniformly and randomly distributed across the domain of size_t values - e.g. 1 and 2 should hash to completely unrelated values. Use of std::hash for POD is encouraged. A convenience hash_combine function is also provided to combine the results an existing hash with one or more other values.
Referenced by std::hash< Attribute >::operator()().
|
inline |
returns the unique attribute ID associated with all attributes that have the same (mose derived) class as this object.
This ID is determined at construction time this
Definition at line 48 of file TheWarehouse.h.
Referenced by std::hash< Attribute >::operator()().
|
pure virtual |
initFrom reads and stores the desired meta-data from obj for later matching comparisons.
Implemented in AttribInterfaces, AttribVar, AttribSystem, AttribName, AttribPreAux, AttribPreIC, AttribThread, AttribBoundaries, AttribSubdomains, AttribExecOns, AttribVectorTags, and AttribMatrixTags.
|
pure virtual |
isEqual returns true if the meta-data stored in this attribute is identical to that stored in other.
isEqual does not need to check/compare the values from the instances' id() functions.
Implemented in AttribInterfaces, AttribVar, AttribSystem, AttribName, AttribPreAux, AttribPreIC, AttribThread, AttribBoundaries, AttribSubdomains, AttribExecOns, and AttribTagBase.
Referenced by operator==().
|
pure virtual |
isMatch returns true if the meta-data stored in this attribute is equivalent to that stored in other.
This is is for query matching - not exact equivalence. isMatch does not need to check/compare the values from the instances' id() functions.
Implemented in AttribInterfaces, AttribVar, AttribSystem, AttribName, AttribPreAux, AttribPreIC, AttribThread, AttribBoundaries, AttribSubdomains, AttribExecOns, and AttribTagBase.
|
inline |
Definition at line 43 of file TheWarehouse.h.
|
inline |
Definition at line 39 of file TheWarehouse.h.
|
private |
Definition at line 73 of file TheWarehouse.h.
Referenced by id(), and operator==().