|
template<class T, class Cmp = std::less<T>>
class faudes::TBaseSet< T, Cmp >
STL style set template.
This class template is built on top of the STL set template. It provides essentials of the STL interface relevant to libFAUDES plus a deferred copy mechanism, aka copy-on-write. TBaseSet serves as a base class for all libFaudes containers:
The public functions of a TBaseSet provide the high-level api, with the intention to organize the deferred copy machanism in a transparent manner. Since STL iterators refer to a particular STL container, they become invalid when the internal container is copied. Therefor, TBaseSet tracks iterators and fixes them when the actual copy takes place. This introduces some runtime overhead, in particular when your application represents subsets as sets of iterators. You may use the public method Lock() to enforce a full copy and to prevent any further re-allocation.
Alternatively to the high-level api, a protected low-level api is provided with direct access to the internal STL set. When using this api, it is up to the derived class to ensure that the BaseSet gets detached from its refernces befor write operations can take place.
The virtual function TBaseSet<T>::Valid() is used to indicate whether a candidate element is valid as a set member. If the macro FAUDES_CHECKED is defined, the attempt to insert an invalid element triggers an exception (id 61). Invalid iterators throw an exception (id 62) when used as an argument to a BaseSet function.
The TBaseSet also hosts a container to associate an attribute with each set element. However, in the plain TBAseSey the attribute type is set to void and member methods only deal with attributes when this does not invilve too much overhead. To make effective use of attributes, one is meant to derive a class from TBaseSet that encodes the actual attribute type and that provides appropriate access methods. This is facilitated by the class TAttrMap.
Note on a boring technical detail: since STL sets are sorted, effectively all set iterators should be const. However, there is a minor issue whether or not the erase function should use a const iterator as argument. SGI derived STL implementations (as used on most GNU systems) avoid this issue by defining const and non-const iterators on sets as identical types. MS implementation (used in VS C++ by default, as of 2006) differ in this aspect. The class TBaseSet::Iterator hides the issue from the faudes API but it is still present internaly.
Definition at line 93 of file cfl_baseset.h.
#include <cfl_baseset.h>
|
| TBaseSet (void) |
| Constructor. More...
|
|
| TBaseSet (const TBaseSet &rOtherSet) |
| Copy-constructor. More...
|
|
| TBaseSet (const std::string &rFilename, const std::string &rLabel="BaseSet") |
| Constructor from file. More...
|
|
virtual | ~TBaseSet (void) |
| Virtual destructor. More...
|
|
const std::string & | Name (void) const |
| Return name of TBaseSet. More...
|
|
void | Name (const std::string &rName) |
| Set name of TBaseSet. More...
|
|
virtual void | Clear (void) |
| Clear all set. More...
|
|
Idx | Size (void) const |
| Get Size of TBaseSet. More...
|
|
bool | Empty (void) const |
| Test whether if the TBaseSet is Empty. More...
|
|
virtual std::string | Str (const T &rElem) const |
| Return pretty printable element. More...
|
|
Iterator | Begin (void) const |
| Iterator to the begin of set. More...
|
|
Iterator | End (void) const |
| Iterator to the end of set. More...
|
|
virtual bool | Valid (const T &rElem) const |
| Test validty of candidate element. More...
|
|
virtual bool | Erase (const T &rElem) |
| Erase element by reference. More...
|
|
virtual Iterator | Erase (const Iterator &pos) |
| Erase element by iterator. More...
|
|
virtual void | EraseSet (const TBaseSet &rOtherSet) |
| Erase elements given by other set. More...
|
|
virtual void | RestrictSet (const TBaseSet &rOtherSet) |
| Restrict elements given by other set. More...
|
|
virtual bool | Disjoint (const TBaseSet &rOtherSet) const |
| Test for this set to be disjoint witg other set. More...
|
|
virtual bool | Insert (const T &rElem) |
| Insert specified element. More...
|
|
virtual Iterator | Inject (const Iterator &pos, const T &rElem) |
| Insert specified element. More...
|
|
virtual void | Inject (const T &rElem) |
| Insert specified element. More...
|
|
virtual void | InsertSet (const TBaseSet &rOtherSet) |
| Insert elements given by rOtherSet. More...
|
|
bool | Exists (const T &rElem) const |
| Test existence of element. More...
|
|
Iterator | Find (const T &rElem) const |
| Find element and return iterator. More...
|
|
TBaseSet | operator+ (const TBaseSet &rOtherSet) const |
| Set union operator. More...
|
|
TBaseSet | operator- (const TBaseSet &rOtherSet) const |
| Set difference operator. More...
|
|
TBaseSet | operator* (const TBaseSet &rOtherSet) const |
| Set intersection operator. More...
|
|
bool | operator<= (const TBaseSet &rOtherSet) const |
| Test for subset
More...
|
|
bool | operator>= (const TBaseSet &rOtherSet) const |
| Test for superset. More...
|
|
bool | operator< (const TBaseSet &rOtherSet) const |
| Order for sorting containers of TBaseSet. More...
|
|
void | DValid (const std::string &rMessage="") const |
| Some validation of deferred copy mechanism (provoke abort) More...
|
|
void | Detach (DetachMode flag=AttrIncl) const |
|
void | Lock (void) const |
| Detach and lock any further reallocation. More...
|
|
virtual const AttributeVoid * | AttributeType (void) const |
| Attribute typeinfo. More...
|
|
virtual bool | AttributeTest (const Type &rAttr) const |
| Attribute typeinfo. More...
|
|
virtual TBaseSet & | AssignWithoutAttributes (const TBaseSet &rSourceSet) |
| Attribute access. More...
|
|
virtual void | Attributes (const TBaseSet &rOtherSet) |
| Attributes access. More...
|
|
Idx | AttributesSize (void) const |
| Attribute access. More...
|
|
void | ClearAttributes (void) |
| Attribute access. More...
|
|
bool | EqualAttributes (const TBaseSet &rOtherSet) const |
| Attribute access. More...
|
|
virtual AttributeVoid * | Attributep (const T &rElem) |
| Attribute access. More...
|
|
virtual const AttributeVoid & | Attribute (const T &rElem) const |
| Attribute access. More...
|
|
virtual void | Attribute (const T &rElem, const Type &rAttr) |
| Attribute access. More...
|
|
virtual void | AttributeTry (const T &rElem, const Type &rAttr) |
| Attribute access. More...
|
|
virtual void | ClrAttribute (const T &rElem) |
| Attribute access. More...
|
|
virtual void | XElementTag (const std::string &rTag) |
| Configure the element name tag. More...
|
|
virtual const std::string & | TypeName (void) const |
| Get objects's type name. More...
|
|
virtual void | TypeName (const std::string &rType) |
| Overwrite faudes-type name. More...
|
|
| Type (void) |
| Constructor. More...
|
|
| Type (const Type &rType) |
| Copy constructor. More...
|
|
virtual | ~Type (void) |
| Destructor. More...
|
|
virtual Type * | New (void) const |
| Construct on heap. More...
|
|
virtual Type * | Copy (void) const |
| Construct on heap. More...
|
|
virtual const Type * | Cast (const Type *pOther) const |
| Cast other object to this type. More...
|
|
virtual Type & | Assign (const Type &rSrc) |
| Assign configuration data from other object. More...
|
|
virtual Type & | operator= (const Type &rSrc) |
| Assign configurationdata from other object. More...
|
|
virtual bool | Equal (const Type &rOther) const |
| Test equality of configuration data. More...
|
|
virtual bool | operator== (const Type &rOther) const |
| Test equality of configuration data. More...
|
|
virtual bool | operator!= (const Type &rOther) const |
| Test equality of configuration data. More...
|
|
void | Write (const Type *pContext=0) const |
| Write configuration data to console. More...
|
|
void | Write (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const |
| Write configuration data to a file. More...
|
|
void | Write (const std::string &pFileName, std::ios::openmode openmode) const |
| Write configuration data to a file. More...
|
|
void | Write (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data to TokenWriter. More...
|
|
virtual void | XWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data to an XML file. More...
|
|
void | XWrite (const Type *pContext=0) const |
| Write configuration data in XML format to concole Note: this write function uses the virtual function DoXWrite(), to be reimplemented by derived classes. More...
|
|
void | XWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data in XML format to TokenWriter. More...
|
|
std::string | ToString (const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data to a string. More...
|
|
std::string | ToText (const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data to a formated string. More...
|
|
void | DWrite (const Type *pContext=0) const |
| Write configuration data to console, debugging format. More...
|
|
void | DWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const |
| Write configuration data to a file, debugging format. More...
|
|
void | DWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data in debug format to TokenWriter. More...
|
|
void | SWrite (TokenWriter &rTw) const |
| Write statistics comment to TokenWriter. More...
|
|
void | SWrite (void) const |
| Write statistics comment to console. More...
|
|
std::string | ToSText (void) const |
| Write statistics to a string. More...
|
|
void | Read (const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0) |
| Read configuration data from file with label specified. More...
|
|
void | FromString (const std::string &rString, const std::string &rLabel="", const Type *pContext=0) |
| Read configuration data from a string. More...
|
|
void | Read (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0) |
| Read configuration data from TokenReader with label sepcified. More...
|
|
|
virtual void | DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Token output, see Type::DWrite for public wrappers. More...
|
|
virtual void | DoDWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Token output, debugging see Type::DWrite for public wrappers. More...
|
|
virtual void | DoSWrite (TokenWriter &rTw) const |
| Token output, see Type::SWrite for public wrappers. More...
|
|
virtual void | DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0) |
| Token input, see Type::Read for public wrappers. More...
|
|
void | DoAssign (const TBaseSet &rSourceSet) |
| assign my members More...
|
|
bool | DoEqual (const TBaseSet &rOtherSet) const |
| test equality More...
|
|
void | DoAttribute (const T &rElem, const Type *pAttr) |
| set attribute in map (assume elem exists in set, NULL <=> set to default) More...
|
|
const AttributeVoid * | DoAttribute (const T &rElem) const |
| get attribute from map (return null if elem does not exist in map) More...
|
|
AttributeVoid * | DoAttributeExplicit (const T &rElem) |
| get attribute from map (insert explicit default if elem does not exist in map) More...
|
|
TBaseSet< T, Cmp >::Iterator | ThisIterator (const typename std::set< T, Cmp >::const_iterator &sit) const |
| Convert STL iterator to API iterator. More...
|
|
void | RelinkClients (void) |
| Ensure that we do not host contents to anyone else. More...
|
|
void | AttachClient (TBaseSet *pRef) const |
| Record that we provide contents to some other BaseSet. More...
|
|
void | DetachClient (TBaseSet *pRef) const |
| Record that we stop providing data for some TBaseSet. More...
|
|
void | AttachIterator (Iterator *pFit) const |
| Record that an iterator refers to this TBaseSet. More...
|
|
void | DetachIterator (Iterator *pFit) const |
| Record that an iterator stops to refer to this TBaseSet. More...
|
|
virtual const TypeDefinition * | TypeDefinitionp (void) const |
| Reimplment from type to use chache. More...
|
|
virtual const std::string & | XElementTag (void) const |
| Get name of elements (used for XML IO) More...
|
|
void | DoAssign (const Type &rSrc) |
| Assign configuration data from other object. More...
|
|
bool | DoEqual (const Type &rOther) const |
| Test equality of configuration data. More...
|
|
virtual void | DoXWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
| Write configuration data of this object to TokenWriter in XML format. More...
|
|
virtual Token | XBeginTag (const std::string &rLabel="", const std::string &rFallbackLabel="") const |
|
|
std::string | mMyName |
| Name of this BaseSet. More...
|
|
std::set< T, Cmp > * | pSet |
| Pointer on STL set to operate on. More...
|
|
std::set< T, Cmp > * | mpSet |
| STL set, if this object hosts data (else NULL) More...
|
|
std::map< T, AttributeVoid * > * | pAttributes |
| Pointer to attribute map to operate on. More...
|
|
std::map< T, AttributeVoid * > * | mpAttributes |
| Attribute map, if this object hosts data (else NULL). More...
|
|
TBaseSet< T, Cmp > * | pHostSet |
| Pointer on BaseSet that hosts our data (THIS if we host) More...
|
|
std::list< TBaseSet< T, Cmp > * >::iterator | mClientRecord |
| Iterator to the client list that hosts our data (maintained by host) More...
|
|
std::list< TBaseSet< T, Cmp > * > * | mpClients |
| BaseSets, that use data hosted by us (NULL if we dont host data, emptyset if we host to ourself excl.) More...
|
|
bool | mDetached |
| Indicate "hosts data to myself only". More...
|
|
bool | mLocked |
| Indicate "dont re-allocate the STL set ever again". More...
|
|
std::set< Iterator * > | mIterators |
| Iterators that refer to this TBaseSet. More...
|
|
|
template<class TP , class AP , class CP > |
class | TAttrMap |
| allow access to attribute interface class More...
|
|
◆ aiterator
template<class T , class Cmp = std::less<T>>
STL attribute iterator, non-const version.
Definition at line 933 of file cfl_baseset.h.
◆ const_aiterator
template<class T , class Cmp = std::less<T>>
STL attribute iterator, const version.
Definition at line 936 of file cfl_baseset.h.
◆ const_iterator
template<class T , class Cmp = std::less<T>>
◆ iterator
template<class T , class Cmp = std::less<T>>
◆ DetachMode
template<class T , class Cmp = std::less<T>>
Detach from extern storage (incl allocation and true copy)
Enumerator |
---|
SetOnly | |
AttrIncl | |
Definition at line 367 of file cfl_baseset.h.
◆ AttributeTry()
template<class T , class Cmp = std::less<T>>
Attribute access.
This virtual function provides an interface for derived classes with attributes eg TaIndexSet. It is meant to try to set the attribute as specified if the type can be casted. Otherwise it does nothing. - Parameters
-
rElem | Element of which the attribute is to be set |
rAttr | Attribute value to set. |
Reimplemented in faudes::TaTransSet< Attr >, faudes::TaNameSet< Attr >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< AttributeSimCondition >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< SimEventAttribute >, faudes::TaIndexSet< Attr >, faudes::TaIndexSet< StateAttr >, and faudes::TaIndexSet< faudes::DiagLabelSet >.
Definition at line 778 of file cfl_baseset.h.
◆ TAttrMap
template<class T , class Cmp = std::less<T>>
template<class TP , class AP , class CP >
allow access to attribute interface class
Definition at line 100 of file cfl_baseset.h.
◆ mClientRecord
template<class T , class Cmp = std::less<T>>
◆ mDetached
template<class T , class Cmp = std::less<T>>
Indicate "hosts data to myself only".
Definition at line 951 of file cfl_baseset.h.
◆ mFaudesTypeName
template<class T , class Cmp = std::less<T>>
◆ mIterators
template<class T , class Cmp = std::less<T>>
◆ mLocked
template<class T , class Cmp = std::less<T>>
Indicate "dont re-allocate the STL set ever again".
Definition at line 954 of file cfl_baseset.h.
◆ mMyName
template<class T , class Cmp = std::less<T>>
◆ mpAttributes
template<class T , class Cmp = std::less<T>>
Attribute map, if this object hosts data (else NULL).
Definition at line 930 of file cfl_baseset.h.
◆ mpClients
template<class T , class Cmp = std::less<T>>
BaseSets, that use data hosted by us (NULL if we dont host data, emptyset if we host to ourself excl.)
Definition at line 948 of file cfl_baseset.h.
◆ mpSet
template<class T , class Cmp = std::less<T>>
STL set, if this object hosts data (else NULL)
Definition at line 913 of file cfl_baseset.h.
◆ mXElementTag
template<class T , class Cmp = std::less<T>>
Current/cached name of elements (used protected accessor method)
Definition at line 997 of file cfl_baseset.h.
◆ pAttributes
template<class T , class Cmp = std::less<T>>
Pointer to attribute map to operate on.
Definition at line 927 of file cfl_baseset.h.
◆ pHostSet
template<class T , class Cmp = std::less<T>>
Pointer on BaseSet that hosts our data (THIS if we host)
Definition at line 942 of file cfl_baseset.h.
◆ pSet
template<class T , class Cmp = std::less<T>>
◆ pTypeDefinition
template<class T , class Cmp = std::less<T>>
The documentation for this class was generated from the following file:
libFAUDES 2.32b
--- 2024.03.01
--- c++ api documentaion by doxygen
|