libFAUDES

Sections

Index

faudes::TBaseSet< T, Cmp > Class Template Reference
[State, Event and Transition Set]

#include <baseset.h>

Inherits faudes::Type.

Inherited by faudes::IndexSet [virtual], faudes::NameSet [virtual], faudes::TaBaseSet< T, Attr, Cmp > [virtual], faudes::TTransSet< Cmp > [virtual], faudes::TaBaseSet< faudes::Transition, Attr, faudes::TransSort::X1EvX2 > [virtual], faudes::TaBaseSet< long unsigned int, Attr > [virtual], faudes::TaBaseSet< long unsigned int, EventAttr > [virtual], faudes::TaBaseSet< long unsigned int, faudes::AttributeCFlags > [virtual], faudes::TaBaseSet< long unsigned int, faudes::AttributeFailureEvents > [virtual], faudes::TaBaseSet< long unsigned int, faudes::AttributeSignalEvent > [virtual], faudes::TaBaseSet< long unsigned int, faudes::AttributeSimplenetEvent > [virtual], faudes::TaBaseSet< long unsigned int, faudes::AttributeTimedState > [virtual], faudes::TaBaseSet< long unsigned int, faudes::DiagLabelSet > [virtual], faudes::TaBaseSet< long unsigned int, faudes::HioEventFlags > [virtual], faudes::TaBaseSet< long unsigned int, faudes::HioStateFlags > [virtual], faudes::TaBaseSet< long unsigned int, faudes::SimConditionAttribute > [virtual], faudes::TaBaseSet< long unsigned int, faudes::SimEventAttribute > [virtual], faudes::TaBaseSet< long unsigned int, StateAttr > [virtual], faudes::TTransSet< faudes::TransSort::EvX2X1 > [virtual], and faudes::TTransSet< faudes::TransSort::X1EvX2 > [virtual].

List of all members.


Detailed Description

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. Clearly, this introduces some 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.

While the TBaseSet itself does not provide any attributes attached to its elements, it does provide an interface to attributes implemented in derived classes. The implementation of the interface behaves as if the attribute type was AttributeVoid. Thus, there is a uniform access to attributes for all faudes container classes. The actual attribute type can be detected via the C++ RTTI.

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) differ in this aspect. The class TBaseSet::Iterator hides the issue from the faudes API but it is still present internaly: in its current implementation, libfaudes will not compile with MS STL. At this stage we are aware of two workarounds, one simple but on cost of performance, one a little bit awkward. Let us know if MS STL is missioncrititical for your libfaudes application.

Definition at line 96 of file baseset.h.


Public Member Functions

virtual TBaseSetNew (void) const
 Construct on heap.
virtual TBaseSetCopy (void) const
 Construct on heap.
virtual const TBaseSetCast (const Type *pOther) const
 Cast other object to this type.
virtual TBaseSetAssign (const Type &rSrc)
 Assign configuration data from other object.
virtual bool Equal (const Type &rOther) const
 Test equality of configuration data.
virtual TBaseSetoperator= (const TBaseSet &rSrc)
virtual bool operator== (const TBaseSet &rOther) const
virtual bool operator!= (const TBaseSet &rOther) const
 TBaseSet (void)
 Constructor.
 TBaseSet (const TBaseSet &rOtherSet)
 Copy-constructor.
 TBaseSet (const std::string &rFilename, const std::string &rLabel="BaseSet")
 Constructor from file.
virtual ~TBaseSet (void)
 Virtual destructor.
const std::string & Name (void) const
 Return name of TBaseSet.
void Name (const std::string &rName)
 Set name of TBaseSet.
virtual void Clear (void)
 Clear all set.
Idx Size (void) const
 Get Size of TBaseSet.
bool Empty (void) const
 Check if the TBaseSet ist Empty.
virtual std::string Str (const T &rElem) const
 Return pretty printable element.
Iterator Begin (void) const
 Iterator to the begin of set.
Iterator End (void) const
 Iterator to the end of set.
virtual bool Valid (const T &rElem) const
 Test validty of candidate element.
virtual bool Erase (const T &rElem)
 Erase element by reference.
virtual Iterator Erase (const Iterator &pos)
 Erase element by iterator.
virtual void EraseSet (const TBaseSet &rOtherSet)
 Erase elements given by other set.
virtual void RestrictSet (const TBaseSet &rOtherSet)
 Restrict elements given by other set.
virtual bool Insert (const T &rElem)
 Insert specified element.
virtual void InsertSet (const TBaseSet &rOtherSet)
 Insert elements given by rOtherSet.
virtual void SetUnion (const TBaseSet &rOtherSet)
 Set Union, result is accumulated in this set.
virtual void SetIntersection (const TBaseSet &rOtherSet)
 Set Intersection, result is stored in this set.
bool Exists (const T &rElem) const
 Test existence of element.
Iterator Find (const T &rElem) const
 Find element and return iterator.
TBaseSet operator+ (const TBaseSet &rOtherSet) const
 Set union operator.
TBaseSet operator- (const TBaseSet &rOtherSet) const
 Set difference operator.
TBaseSet operator* (const TBaseSet &rOtherSet) const
 Set intersection operator.
bool operator<= (const TBaseSet &rOtherSet) const
 Test for subset.
bool operator>= (const TBaseSet &rOtherSet) const
 Test for superset.
bool operator< (const TBaseSet &rOtherSet) const
 Order for sorting containers of TBaseSet.
void DValid (const std::string &rMessage="") const
 Some validation of deferred copy mechanism (provoke abort).
virtual void Detach (void) const
 Detach from extern storage (incl allocation and true copy).
virtual void Lock (void) const
 Detach and lock any further reallocation.
virtual const AttributeVoidAttributep (void) const
 Attribute typeinfo.
virtual const AttributeVoidAttribute (void) const
 Attribute typeinfo.
virtual bool AttributeTry (const Type &rAttr) const
 Attribute typeinfo.
virtual TBaseSetAssignWithoutAttributes (const TBaseSet &rSourceSet)
 Attribute access.
virtual void Attributes (const TBaseSet &rOtherSet)
 Attributes access.
virtual Idx AttributesSize (void) const
 Attribute access.
virtual void ClearAttributes (void)
 Attribute access.
virtual bool EqualAttributes (const TBaseSet &rOtherSet) const
 Attribute access.
virtual AttributeVoidAttributep (const T &rElem)
 Attribute access.
virtual const AttributeVoidAttribute (const T &rElem) const
 Attribute access.
virtual void Attribute (const T &rElem, const Type &rAttr)
 Attribute access.
virtual void AttributeTry (const T &rElem, const Type &rAttr)
 Attribute access.
virtual void ClrAttribute (const T &rElem)
 Attribute access.

Protected Types

typedef std::set< T, Cmp >
::iterator 
iterator
 STL iterator, non-const version.
typedef std::set< T, Cmp >
::const_iterator 
const_iterator
 STL iterator, const version.
typedef std::map< T,
AttributeVoid * >::iterator 
aiterator
 STL attribute iterator, non-const version.
typedef std::map< T,
AttributeVoid * >
::const_iterator 
const_aiterator
 STL attribute iterator, const version.

Protected Member Functions

virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Token output, see Type::DWrite for public wrappers.
virtual void DoDWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Token output, debugging see Type::DWrite for public wrappers.
virtual void DoSWrite (TokenWriter &rTw) const
 Token output, see Type::SWrite for public wrappers.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Token input, see Type::Read for public wrappers.
virtual TBaseSetDoAssign (const TBaseSet &rSourceSet)
 assign my members
virtual bool DoEqual (const TBaseSet &rOtherSet) const
 test equality
TBaseSet< T, Cmp >::Iterator ThisIterator (const typename std::set< T, Cmp >::const_iterator &sit) const
 Convert STL iterator.
void RelinkReferences (void)
 Ensure that we do not serve contents to anyone else.
void AttachReference (TBaseSet *pRef) const
 Record that we serve contents to some other TBaseSet.
void DetachReference (TBaseSet *pRef) const
 Record that we stop serving contents to some TBaseSet.
void AttachIterator (Iterator *pFit) const
 Record that an iterator refers to this TBaseSet.
void DetachIterator (Iterator *pFit) const
 Record that an iterator stops to refer to this TBaseSet.

Protected Attributes

std::set< T, Cmp > * mpSet
 STL set, if the object owns content (else NULL).
std::map< T, AttributeVoid * > * mpAttributes
 Attribute map, if this object owns content (else NULL).
std::set< T, Cmp > * pSet
 Pointer on STL set to operate on.
std::map< T, AttributeVoid * > * pAttributes
 Pointer to attribute map to operate on.
std::string mMyName
 Name of TBaseSet.
std::set< TBaseSet< T, Cmp > * > mReferences
 Other BaseSets, that refer to the STL set provided by this TBaseSet.
TBaseSet< T, Cmp > * pBaseSet
 Pointer on BaseSet that owns the STL set this BaseSet referrs to.
bool mDetached
 Indicate "has no references, provides STL set".
bool mLocked
 Indicate "dont re-allocate the STL set again".
std::set< Iterator * > mIterators
 Iterators that refer to this TBaseSet.

Static Protected Attributes

static std::set< T, Cmp > mEmptySet = std::set<T,Cmp>()
 static empty STL set for default constructor
static std::map< T,
AttributeVoid * > 
mEmptyAttributes = std::map<T,AttributeVoid*>()
 static empty STL map for default constructor

Friends

class TaBaseSet
 We implement "protected privacy for template classes" by friendship.

Classes

class  Iterator
 Iterator class for high-level api to TBaseSet. More...

Member Typedef Documentation


Constructor & Destructor Documentation

template<class T, class Cmp>
faudes::TBaseSet< T, Cmp >::TBaseSet ( void   )  [inline]

Constructor.

Definition at line 1051 of file baseset.h.

template<class T, class Cmp>
faudes::TBaseSet< T, Cmp >::TBaseSet ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline]

Copy-constructor.

Parameters:
rOtherSet Source to copy from

Definition at line 1087 of file baseset.h.

template<class T, class Cmp>
faudes::TBaseSet< T, Cmp >::TBaseSet ( const std::string &  rFilename,
const std::string &  rLabel = "BaseSet" 
) [inline]

Constructor from file.

This constructor indicates the intended interface for derived classes. The base set itself cannot read from token streams.

Parameters:
rFilename Name of File
rLabel Section for the set in the file;

Definition at line 1068 of file baseset.h.

template<class T, class Cmp>
faudes::TBaseSet< T, Cmp >::~TBaseSet ( void   )  [inline, virtual]

Virtual destructor.

Definition at line 1112 of file baseset.h.


Member Function Documentation

template<class T, class Cmp>
TBaseSet< T, Cmp > * faudes::TBaseSet< T, Cmp >::New ( void   )  const [inline, virtual]

Construct on heap.

Technically not a constructor, this function creates an object with the same type Type. New() is defined as a virtual function and derived classes are meant to re-implement with the appropiate constructor. This can be done via the provided macros FAUDES_TYPE_DECLARATION and FAUDES_TYPE_IMPLEMENTATION. As with new, it is the callers reponsabilty to delete the object when no longer needed.

Returns:
Pointer to new Type object

Reimplemented from faudes::Type.

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >, faudes::IndexSet, faudes::TaIndexSet< Attr >, faudes::NameSet, faudes::TaNameSet< Attr >, faudes::SymbolSet, faudes::TTransSet< Cmp >, faudes::TaTransSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, faudes::TaBaseSet< long unsigned int, faudes::SimEventAttribute >, faudes::TaBaseSet< long unsigned int, faudes::AttributeCFlags >, faudes::TaBaseSet< long unsigned int, EventAttr >, faudes::TaBaseSet< long unsigned int, faudes::HioStateFlags >, faudes::TaBaseSet< long unsigned int, StateAttr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeTimedState >, faudes::TaBaseSet< long unsigned int, faudes::AttributeFailureEvents >, faudes::TaBaseSet< long unsigned int, faudes::DiagLabelSet >, faudes::TaBaseSet< long unsigned int, faudes::HioEventFlags >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSimplenetEvent >, faudes::TaBaseSet< long unsigned int, Attr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSignalEvent >, faudes::TaBaseSet< faudes::Transition, Attr, faudes::TransSort::X1EvX2 >, faudes::TaBaseSet< long unsigned int, faudes::SimConditionAttribute >, faudes::TaIndexSet< faudes::AttributeTimedState >, faudes::TaIndexSet< faudes::HioStateFlags >, faudes::TaIndexSet< StateAttr >, faudes::TaIndexSet< faudes::DiagLabelSet >, faudes::TaNameSet< faudes::HioEventFlags >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< faudes::SimConditionAttribute >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::SimEventAttribute >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< faudes::AttributeCFlags >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1034 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > * faudes::TBaseSet< T, Cmp >::Copy ( void   )  const [inline, virtual]

Construct on heap.

Technically not a constructor, this function creates an object with the same type Type and the same configuration. Copy() is defined as a virtual function and derived classes are meant to re-implement with the appropiate copy constructor. This can be done via the provided macros FAUDES_TYPE_DECLARATION and FAUDES_TYPE_IMPLEMENTATION. As with new, it is the callers reponsabilty to delete the object when no longer needed.

Returns:
Pointer to new Type object

Reimplemented from faudes::Type.

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >, faudes::IndexSet, faudes::TaIndexSet< Attr >, faudes::NameSet, faudes::TaNameSet< Attr >, faudes::SymbolSet, faudes::TTransSet< Cmp >, faudes::TaTransSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, faudes::TaBaseSet< long unsigned int, faudes::SimEventAttribute >, faudes::TaBaseSet< long unsigned int, faudes::AttributeCFlags >, faudes::TaBaseSet< long unsigned int, EventAttr >, faudes::TaBaseSet< long unsigned int, faudes::HioStateFlags >, faudes::TaBaseSet< long unsigned int, StateAttr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeTimedState >, faudes::TaBaseSet< long unsigned int, faudes::AttributeFailureEvents >, faudes::TaBaseSet< long unsigned int, faudes::DiagLabelSet >, faudes::TaBaseSet< long unsigned int, faudes::HioEventFlags >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSimplenetEvent >, faudes::TaBaseSet< long unsigned int, Attr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSignalEvent >, faudes::TaBaseSet< faudes::Transition, Attr, faudes::TransSort::X1EvX2 >, faudes::TaBaseSet< long unsigned int, faudes::SimConditionAttribute >, faudes::TaIndexSet< faudes::AttributeTimedState >, faudes::TaIndexSet< faudes::HioStateFlags >, faudes::TaIndexSet< StateAttr >, faudes::TaIndexSet< faudes::DiagLabelSet >, faudes::TaNameSet< faudes::HioEventFlags >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< faudes::SimConditionAttribute >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::SimEventAttribute >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< faudes::AttributeCFlags >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1035 of file baseset.h.

template<class T, class Cmp>
const TBaseSet< T, Cmp > * faudes::TBaseSet< T, Cmp >::Cast ( const Type pOther  )  const [inline, virtual]

Cast other object to this type.

Enables the run-time interface to test whether pObject is derived from this object. This feature is used e.g. in the faudes container classes to test attributes. Derived classes must reimplement this function using the appropriate dynamic cast.

Re-implementation can be done via the convenience macros FAUDES_TYPE_DECLARATION and FAUDES_TYPE_IMPLEMENTATION.

Returns:
Typed pointer object

Reimplemented from faudes::Type.

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >, faudes::IndexSet, faudes::TaIndexSet< Attr >, faudes::NameSet, faudes::TaNameSet< Attr >, faudes::SymbolSet, faudes::TTransSet< Cmp >, faudes::TaTransSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, faudes::TaBaseSet< long unsigned int, faudes::SimEventAttribute >, faudes::TaBaseSet< long unsigned int, faudes::AttributeCFlags >, faudes::TaBaseSet< long unsigned int, EventAttr >, faudes::TaBaseSet< long unsigned int, faudes::HioStateFlags >, faudes::TaBaseSet< long unsigned int, StateAttr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeTimedState >, faudes::TaBaseSet< long unsigned int, faudes::AttributeFailureEvents >, faudes::TaBaseSet< long unsigned int, faudes::DiagLabelSet >, faudes::TaBaseSet< long unsigned int, faudes::HioEventFlags >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSimplenetEvent >, faudes::TaBaseSet< long unsigned int, Attr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSignalEvent >, faudes::TaBaseSet< faudes::Transition, Attr, faudes::TransSort::X1EvX2 >, faudes::TaBaseSet< long unsigned int, faudes::SimConditionAttribute >, faudes::TaIndexSet< faudes::AttributeTimedState >, faudes::TaIndexSet< faudes::HioStateFlags >, faudes::TaIndexSet< StateAttr >, faudes::TaIndexSet< faudes::DiagLabelSet >, faudes::TaNameSet< faudes::HioEventFlags >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< faudes::SimConditionAttribute >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::SimEventAttribute >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< faudes::AttributeCFlags >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1036 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > & faudes::TBaseSet< T, Cmp >::Assign ( const Type rSrc  )  [inline, virtual]

Assign configuration data from other object.

Derived classes should reimplement this method to first try to cast the source to the respective class. If successful, the protected function DoAssign is invoked to perform the actual assignment. If the cast fails, the Assign method of the parent class is called. Thus, faudes objects are up- and downcatsted for assignment, maintaining as much of the source data as digestable by the destination object. On the downside, there is no sensible typechecking at compile-time.

Re-implementation can be done via the convenience macros FAUDES_TYPE_DECLARATION and FAUDES_TYPE_IMPLEMENTATION.

Parameters:
rSrc Source to copy from
Returns:
Reference to this object.

Reimplemented from faudes::Type.

Reimplemented in faudes::IndexSet, faudes::TaIndexSet< Attr >, faudes::NameSet, faudes::TaNameSet< Attr >, faudes::SymbolSet, faudes::TTransSet< Cmp >, faudes::TaTransSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, faudes::TaIndexSet< faudes::AttributeTimedState >, faudes::TaIndexSet< faudes::HioStateFlags >, faudes::TaIndexSet< StateAttr >, faudes::TaIndexSet< faudes::DiagLabelSet >, faudes::TaNameSet< faudes::HioEventFlags >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< faudes::SimConditionAttribute >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::SimEventAttribute >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< faudes::AttributeCFlags >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1042 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Equal ( const Type rOther  )  const [inline, virtual]

template<class T, class Cmp>
TBaseSet< T, Cmp > & faudes::TBaseSet< T, Cmp >::operator= ( const TBaseSet< T, Cmp > &  rSrc  )  [inline, virtual]

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1042 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::operator== ( const TBaseSet< T, Cmp > &  rOther  )  const [inline, virtual]

Definition at line 1043 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::operator!= ( const TBaseSet< T, Cmp > &  rOther  )  const [inline, virtual]

Definition at line 1043 of file baseset.h.

template<class T, class Cmp>
const std::string & faudes::TBaseSet< T, Cmp >::Name ( void   )  const [inline, virtual]

Return name of TBaseSet.

Returns:
Name of TBaseSet

Reimplemented from faudes::Type.

Definition at line 1493 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::Name ( const std::string &  rName  )  [inline, virtual]

Set name of TBaseSet.

Parameters:
rName Name to set

Reimplemented from faudes::Type.

Definition at line 1498 of file baseset.h.

template<class T, class Cmp>
Idx faudes::TBaseSet< T, Cmp >::Size ( void   )  const [inline]

Get Size of TBaseSet.

Returns:
Number of indices in TBaseSet

Definition at line 1510 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Empty ( void   )  const [inline]

Check if the TBaseSet ist Empty.

Returns:
True if empty

Definition at line 1515 of file baseset.h.

template<class T, class Cmp>
std::string faudes::TBaseSet< T, Cmp >::Str ( const T &  rElem  )  const [inline, virtual]

Return pretty printable element.

Reimplement this method for derived classes.

Parameters:
rElem Element to print
Returns:
String

Reimplemented in faudes::SymbolSet.

Definition at line 1503 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp >::Iterator faudes::TBaseSet< T, Cmp >::Begin ( void   )  const [inline]

template<class T, class Cmp>
TBaseSet< T, Cmp >::Iterator faudes::TBaseSet< T, Cmp >::End ( void   )  const [inline]

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Valid ( const T &  rElem  )  const [inline, virtual]

Test validty of candidate element.

Reimplement this function for particular type T of elements, eg for an index set with T=Idx indicate 0 an invalid index.

Parameters:
rElem Candidate to test
Returns:
True if element is valid

Reimplemented in faudes::SymbolSet.

Definition at line 1636 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Erase ( const T &  rElem  )  [inline, virtual]

Erase element by reference.

Parameters:
rElem Element to erase
Returns:
True if element used to exist

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1681 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp >::Iterator faudes::TBaseSet< T, Cmp >::Erase ( const Iterator pos  )  [inline, virtual]

Erase element by iterator.

Parameters:
pos Iterator to specify element
Returns:
Iterator to next element (or End if no such)

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >, faudes::TaIndexSet< Attr >, faudes::NameSet, faudes::TaNameSet< Attr >, faudes::TTransSet< Cmp >, faudes::TaTransSet< Attr >, faudes::TaBaseSet< long unsigned int, faudes::SimEventAttribute >, faudes::TaBaseSet< long unsigned int, faudes::AttributeCFlags >, faudes::TaBaseSet< long unsigned int, EventAttr >, faudes::TaBaseSet< long unsigned int, faudes::HioStateFlags >, faudes::TaBaseSet< long unsigned int, StateAttr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeTimedState >, faudes::TaBaseSet< long unsigned int, faudes::AttributeFailureEvents >, faudes::TaBaseSet< long unsigned int, faudes::DiagLabelSet >, faudes::TaBaseSet< long unsigned int, faudes::HioEventFlags >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSimplenetEvent >, faudes::TaBaseSet< long unsigned int, Attr >, faudes::TaBaseSet< long unsigned int, faudes::AttributeSignalEvent >, faudes::TaBaseSet< faudes::Transition, Attr, faudes::TransSort::X1EvX2 >, faudes::TaBaseSet< long unsigned int, faudes::SimConditionAttribute >, faudes::TaIndexSet< faudes::AttributeTimedState >, faudes::TaIndexSet< faudes::HioStateFlags >, faudes::TaIndexSet< StateAttr >, faudes::TaIndexSet< faudes::DiagLabelSet >, faudes::TaNameSet< faudes::HioEventFlags >, faudes::TaNameSet< faudes::AttributeFailureEvents >, faudes::TaNameSet< faudes::SimConditionAttribute >, faudes::TaNameSet< faudes::AttributeSignalEvent >, faudes::TaNameSet< faudes::SimEventAttribute >, faudes::TaNameSet< faudes::AttributeSimplenetEvent >, faudes::TaNameSet< EventAttr >, faudes::TaNameSet< faudes::AttributeCFlags >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1688 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::EraseSet ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Erase elements given by other set.

Parameters:
rOtherSet Set of elements to erase

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1706 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::RestrictSet ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Restrict elements given by other set.

Parameters:
rOtherSet Set of elements to keep

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1731 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Insert ( const T &  rElem  )  [inline, virtual]

Insert specified element.

Parameters:
rElem Element to insert
Returns:
True if index was new to set

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >, and faudes::SymbolSet.

Definition at line 1642 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::InsertSet ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Insert elements given by rOtherSet.

Parameters:
rOtherSet Set of elements to insert

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1655 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::SetUnion ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Set Union, result is accumulated in this set.

Parameters:
rOtherSet Other TBaseSet

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1772 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::SetIntersection ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Set Intersection, result is stored in this set.

Parameters:
rOtherSet Other TBaseSet

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1797 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::Exists ( const T &  rElem  )  const [inline]

Test existence of element.

Parameters:
rElem Element to test
Returns:
True if element exists in set

Definition at line 1766 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp >::Iterator faudes::TBaseSet< T, Cmp >::Find ( const T &  rElem  )  const [inline]

Find element and return iterator.

Parameters:
rElem Element to find
Returns:
Iterator to element or End() if nonexistent

Definition at line 1761 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > faudes::TBaseSet< T, Cmp >::operator+ ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Set union operator.

Returns:
Union Set

Definition at line 1826 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > faudes::TBaseSet< T, Cmp >::operator- ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Set difference operator.

Returns:
Difference Set

Definition at line 1837 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > faudes::TBaseSet< T, Cmp >::operator* ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Set intersection operator.

Returns:
Intersection Set

Definition at line 1849 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::operator<= ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Test for subset.

Definition at line 1869 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::operator>= ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Test for superset.

Definition at line 1874 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::operator< ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline]

Order for sorting containers of TBaseSet.

Definition at line 1879 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DValid ( const std::string &  rMessage = ""  )  const [inline]

Some validation of deferred copy mechanism (provoke abort).

Definition at line 1387 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::Lock ( void   )  const [inline, virtual]

Detach and lock any further reallocation.

Definition at line 1291 of file baseset.h.

template<class T, class Cmp = std::less<T>>
virtual bool faudes::TBaseSet< T, Cmp >::AttributeTry ( const Type rAttr  )  const [inline, virtual]

template<class T, class Cmp = std::less<T>>
virtual TBaseSet& faudes::TBaseSet< T, Cmp >::AssignWithoutAttributes ( const TBaseSet< T, Cmp > &  rSourceSet  )  [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. It is meant to ignore any attributes. The TBaseSet itself has no attributes, so it calls its Assign method that ignores attributes anyway.

Parameters:
rSourceSet Set to copy from

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 663 of file baseset.h.

template<class T, class Cmp = std::less<T>>
virtual void faudes::TBaseSet< T, Cmp >::Attributes ( const TBaseSet< T, Cmp > &  rOtherSet  )  [inline, virtual]

Attributes access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. It is meant to copy attributes from the specified set. The TBaseSet itself has no attributes and thus this function does nothing.

Parameters:
rOtherSet Other BaseSet

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 674 of file baseset.h.

template<class T, class Cmp = std::less<T>>
virtual bool faudes::TBaseSet< T, Cmp >::EqualAttributes ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. Derived classes that provide attributes are meant to return true if attributes match for shared elements. The base set returns true as a default.

Parameters:
rOtherSet Other object to compare with.
Returns:
True on match.

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 702 of file baseset.h.

template<class T, class Cmp>
AttributeVoid * faudes::TBaseSet< T, Cmp >::Attributep ( const T &  rElem  )  [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. The TBaseSet has no attributes and thus throws an exception. Derived classes that provide attributes are meant to return a pointer to the attribute specified by rElem.

Parameters:
rElem Element of which the attribute is requested
Returns:
Attribute of specified element
Exceptions:
Exception 
  • No attributes provided (id 63)

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1897 of file baseset.h.

template<class T, class Cmp>
const AttributeVoid & faudes::TBaseSet< T, Cmp >::Attribute ( const T &  rElem  )  const [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. The TBaseSet has no attributes and thus returns a void attribute. Derived classes that provide attributes are meant to return the attribute specified by rElem.

Parameters:
rElem Element of which the attribute is requested
Returns:
Attribute of specified element

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1907 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::Attribute ( const T &  rElem,
const Type rAttr 
) [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. The TBaseSet itself has void attributes and thus formally accepts any nontrivial attribute, however, ignoring any value. Derived classes that provide attributes are meant to set the attribute as specified. Only if the required cast to the actual attribute type fails an exception is thrown.

Parameters:
rElem Element of which the attribute is to be set
rAttr Attribute value to set.
Exceptions:
Exception 
  • Element does not exist (60)
  • Cannot cast attribute type (63)

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 1914 of file baseset.h.

template<class T, class Cmp = std::less<T>>
virtual void faudes::TBaseSet< T, Cmp >::AttributeTry ( const T &  rElem,
const Type rAttr 
) [inline, virtual]

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::TaBaseSet< T, Attr, Cmp >.

Definition at line 758 of file baseset.h.

template<class T, class Cmp = std::less<T>>
virtual void faudes::TBaseSet< T, Cmp >::ClrAttribute ( const T &  rElem  )  [inline, virtual]

Attribute access.

This virtual function provides an interface for derived classes with attributes eg TaIndexSet. It is meant to set the attribute of the specified element to the default value. The TBaseSet itself has no attributes and thus this function does nothing.

Parameters:
rElem Element of which the attribute is to be cleared

Reimplemented in faudes::TaBaseSet< T, Attr, Cmp >.

Definition at line 768 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DoWrite ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [inline, protected, virtual]

Token output, see Type::DWrite for public wrappers.

Reimplement this function in derived classes for specific specific template parameters. By convention, the default label "" should be translated to a) the name of the set or b) some meaningful default, eg "IndexSet" for a set of indices". The pContext pointer can de type-checked and interpreted, ie as a symboltable to provide symbolic names. It is also passed on to attributes.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write, defaults to name of set
pContext Write context to provide contextual information

Reimplemented from faudes::Type.

Reimplemented in faudes::IndexSet, faudes::NameSet, faudes::SymbolSet, faudes::TTransSet< Cmp >, faudes::TTransSet< faudes::TransSort::EvX2X1 >, and faudes::TTransSet< faudes::TransSort::X1EvX2 >.

Definition at line 1521 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DoDWrite ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [inline, protected, virtual]

Token output, debugging see Type::DWrite for public wrappers.

Reimplement this function in derived classes for specific specific template parameters.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write, defaults to name of set
pContext Write context to provide contextual information

Reimplemented from faudes::Type.

Reimplemented in faudes::NameSet.

Definition at line 1533 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DoSWrite ( TokenWriter rTw  )  const [inline, protected, virtual]

Token output, see Type::SWrite for public wrappers.

Statistics include size, name and attributey type. The latter is retrieved from the RTI, if initialized. Dereived sets may reimplement this method.

Parameters:
rTw Reference to TokenWriter

Reimplemented from faudes::Type.

Definition at line 1548 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DoRead ( TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0 
) [inline, protected, virtual]

Token input, see Type::Read for public wrappers.

Reimplement this function in derived classes for specific specific template parameters. By convention, the default label "" should be translated to some meaningful default, eg "IndexSet" for a set of indices". The pContext pointer can de type-checked and interpreted, ie as a symboltable to provide symbolic names. It is also passed on to attributes.

Parameters:
rTr Reference to TokenReader
rLabel Label of section to read, defaults to name of set
pContext Read context to provide contextual information

Reimplemented from faudes::Type.

Reimplemented in faudes::IndexSet, faudes::NameSet, and faudes::SymbolSet.

Definition at line 1564 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp > & faudes::TBaseSet< T, Cmp >::DoAssign ( const TBaseSet< T, Cmp > &  rSourceSet  )  [inline, protected, virtual]

assign my members

Definition at line 1134 of file baseset.h.

template<class T, class Cmp>
bool faudes::TBaseSet< T, Cmp >::DoEqual ( const TBaseSet< T, Cmp > &  rOtherSet  )  const [inline, protected, virtual]

test equality

Definition at line 1861 of file baseset.h.

template<class T, class Cmp>
TBaseSet< T, Cmp >::Iterator faudes::TBaseSet< T, Cmp >::ThisIterator ( const typename std::set< T, Cmp >::const_iterator sit  )  const [inline, protected]

Convert STL iterator.

Definition at line 1575 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::RelinkReferences ( void   )  [inline, protected]

Ensure that we do not serve contents to anyone else.

Definition at line 1318 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::AttachReference ( TBaseSet< T, Cmp > *  pRef  )  const [inline, protected]

Record that we serve contents to some other TBaseSet.

Definition at line 1361 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DetachReference ( TBaseSet< T, Cmp > *  pRef  )  const [inline, protected]

Record that we stop serving contents to some TBaseSet.

Definition at line 1367 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::AttachIterator ( Iterator pFit  )  const [inline, protected]

Record that an iterator refers to this TBaseSet.

Definition at line 1373 of file baseset.h.

template<class T, class Cmp>
void faudes::TBaseSet< T, Cmp >::DetachIterator ( Iterator pFit  )  const [inline, protected]

Record that an iterator stops to refer to this TBaseSet.

Definition at line 1380 of file baseset.h.


Friends And Related Function Documentation

template<class T, class Cmp = std::less<T>>
friend class TaBaseSet [friend]

We implement "protected privacy for template classes" by friendship.

This is used for the pragmatic implemention conversion constructors.

Definition at line 105 of file baseset.h.


Member Data Documentation

template<class T, class Cmp = std::less<T>>
std::set<T,Cmp>* faudes::TBaseSet< T, Cmp >::mpSet [protected]

STL set, if the object owns content (else NULL).

Definition at line 842 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::map<T,AttributeVoid*>* faudes::TBaseSet< T, Cmp >::mpAttributes [protected]

Attribute map, if this object owns content (else NULL).

Definition at line 845 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::set< T, Cmp > faudes::TBaseSet< T, Cmp >::mEmptySet = std::set<T,Cmp>() [inline, static, protected]

static empty STL set for default constructor

Definition at line 848 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::map< T, AttributeVoid * > faudes::TBaseSet< T, Cmp >::mEmptyAttributes = std::map<T,AttributeVoid*>() [inline, static, protected]

static empty STL map for default constructor

Definition at line 851 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::set<T,Cmp>* faudes::TBaseSet< T, Cmp >::pSet [protected]

Pointer on STL set to operate on.

Definition at line 854 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::map<T,AttributeVoid*>* faudes::TBaseSet< T, Cmp >::pAttributes [protected]

Pointer to attribute map to operate on.

Definition at line 857 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::string faudes::TBaseSet< T, Cmp >::mMyName [protected]

Name of TBaseSet.

Definition at line 879 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::set< TBaseSet<T,Cmp>* > faudes::TBaseSet< T, Cmp >::mReferences [protected]

Other BaseSets, that refer to the STL set provided by this TBaseSet.

Definition at line 882 of file baseset.h.

template<class T, class Cmp = std::less<T>>
TBaseSet<T,Cmp>* faudes::TBaseSet< T, Cmp >::pBaseSet [protected]

Pointer on BaseSet that owns the STL set this BaseSet referrs to.

Definition at line 885 of file baseset.h.

template<class T, class Cmp = std::less<T>>
bool faudes::TBaseSet< T, Cmp >::mDetached [protected]

Indicate "has no references, provides STL set".

Definition at line 888 of file baseset.h.

template<class T, class Cmp = std::less<T>>
bool faudes::TBaseSet< T, Cmp >::mLocked [protected]

Indicate "dont re-allocate the STL set again".

Definition at line 891 of file baseset.h.

template<class T, class Cmp = std::less<T>>
std::set< Iterator* > faudes::TBaseSet< T, Cmp >::mIterators [protected]

Iterators that refer to this TBaseSet.

Definition at line 903 of file baseset.h.


The documentation for this class was generated from the following file:

libFAUDES 2.14g --- 2009-12-3 --- c++ source docu by doxygen 1.5.6