libFAUDES

Sections

Index

faudes::NameSet Class Reference
[Classes]

#include <nameset.h>

Inherits faudes::TBaseSet< long unsigned int >.

Inherited by faudes::ClockSet, faudes::ColorSet, faudes::TaNameSet< Attr > [virtual], faudes::TaNameSet< EventAttr > [virtual], faudes::TaNameSet< faudes::AttributeCFlags > [virtual], faudes::TaNameSet< faudes::AttributeFailureEvents > [virtual], faudes::TaNameSet< faudes::AttributeSignalEvent > [virtual], faudes::TaNameSet< faudes::AttributeSimplenetEvent > [virtual], faudes::TaNameSet< faudes::HioEventFlags > [virtual], faudes::TaNameSet< faudes::SimConditionAttribute > [virtual], and faudes::TaNameSet< faudes::SimEventAttribute > [virtual].

List of all members.


Detailed Description

Set of indices with symbolic names.

In a NameSet, symbolic names are mandatory. The class is derived from IndexSet and uses a pointer to a SymbolTable to maintain the symbolic names. The static SymbolTable is used as default, which in the context of libfaudes becomes the global event symbol table. It is an error to refer to an unknown symbolic name or to an index with no name associated. When FAUDES_CHECKED is defined, an exception will be thrown. It is also considered an error to relate two NameSets that refer to different SymbolTables (using e.g. SetUnion).

Since symbolic names are mandatory, file IO uses names rather than indices. Technically, file IO is done by TaNameSet functions. This requires a copy and for that reason may be reimplemented in a future versions. The format is demonstrated by the following example of a set with name "Alphabet" consisting of events "alpha", "beta" and "gamma":

 <Alphabet> 
 "alpha" "beta" "gamma"
 <\Alphabet> 
Note that when reading a file, indices will be associated with the symbolic names based on availability. Within one libfaudes session, each individual event will be referred to by a unique index.

Definition at line 75 of file nameset.h.


Public Member Functions

virtual NameSetNew (void) const
 Construct on heap.
virtual NameSetCopy (void) const
 Construct on heap.
virtual const NameSetCast (const Type *pOther) const
 Cast other object to this type.
virtual NameSetAssign (const Type &rSrc)
 Assign configuration data from other object.
virtual bool Equal (const Type &rOther) const
 Test equality of configuration data.
virtual NameSetoperator= (const NameSet &rSrc)
virtual bool operator== (const NameSet &rOther) const
virtual bool operator!= (const NameSet &rOther) const
 NameSet (void)
 Constructor for NameSet referring to the static SymbolTable.
 NameSet (const NameSet &rOtherSet)
 Copy-constructor from other NameSet.
 NameSet (const std::string &rFilename, const std::string &rLabel="")
 Constructor from file.
virtual ~NameSet (void)
 Virtual destructor.
NameSet NewN () const
 Return an empty NameSet with same SymbolTable as this set.
SymbolTableSymbolTablep (void) const
 Get Pointer mpSymbolTable.
void SymbolTablep (SymbolTable *pSymTab)
 Set SymbolTable reference.
bool Insert (const Idx &rIndex)
 Add an element by index.
Idx Insert (const std::string &rName)
 Add an element by its symbolic name.
virtual void InsertSet (const NameSet &rOtherSet)
 Inserts elements of rOtherSet.
virtual bool Erase (const Idx &rIndex)
 Delete element by index.
virtual bool Erase (const std::string &rName)
 Delete element by symbolic name.
virtual Iterator Erase (const Iterator &pos)
 Delete element by iterator.
void EraseSet (const NameSet &rOtherSet)
 Erase elements specified by rOtherSet.
void RestrictSet (const NameSet &rOtherSet)
 Restrict elements specified by rOtherSet.
void SymbolicName (Idx index, const std::string &rName)
 Set new name for existing index.
void SymbolicName (const std::string &rName, const std::string &rNewName)
 Set new name for existing name FAUDES_CHECKED checks if the specified name exists in NameSet.
std::string SymbolicName (Idx index) const
 Name lookup.
Idx Index (const std::string &rName) const
 Index lookup.
bool Exists (const Idx &rIndex) const
 Test existence of index.
bool Exists (const std::string &rName) const
 Test existence of name.
NameSet::Iterator Find (const Idx &rIndex) const
 Find iterator for index.
NameSet::Iterator Find (const std::string &rName) const
 Find iterator for name.
virtual void Attributes (const NameSet &rOtherSet)
 Set attributes.
NameSet operator+ (const NameSet &rOtherSet) const
 Set union operator.
NameSet operator- (const NameSet &rOtherSet) const
 Set difference operator.
NameSet operator* (const NameSet &rOtherSet) const
 Set intersection operator.
bool operator<= (const NameSet &rOtherSet) const
 Test for subset.
bool operator>= (const NameSet &rOtherSet) const
 Test for superset.
std::string Str (const Idx &rIndex) const
 Return pretty printable symbolic name for index.

Protected Member Functions

virtual NameSetDoAssign (const NameSet &rSourceSet)
 Assign from other name set.
virtual bool DoEqual (const NameSet &rOtherSet) const
 Test equality of configuration data.
virtual void DoWrite (TokenWriter &tw, const std::string &rLabel="", const Type *pContext=0) const
 Write to TokenWriter, see Type::Write for public wrappers This function will also do the token io of attributes in derived classes.
virtual void DoDWrite (TokenWriter &tw, const std::string &rLabel="", const Type *pContext=0) const
 Write debug info to TokenWriter, see Type::DWrite for public wrapper.
virtual void DoRead (TokenReader &tr, const std::string &rLabel="", const Type *pContext=0)
 Read from TokenReader, see Type::Read for public wrappers.

Protected Attributes

SymbolTablempSymbolTable
 Pointer to local SymbolTable.

Friends

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

Constructor & Destructor Documentation

faudes::NameSet::NameSet ( void   ) 

Constructor for NameSet referring to the static SymbolTable.

Definition at line 34 of file nameset.cpp.

faudes::NameSet::NameSet ( const NameSet rOtherSet  ) 

Copy-constructor from other NameSet.

This also copies the SymbolTable reference, hence the new NameSet will use the same SymbolTable as rOtherSet.

Parameters:
rOtherSet Set to copy

Definition at line 42 of file nameset.cpp.

faudes::NameSet::NameSet ( const std::string &  rFilename,
const std::string &  rLabel = "" 
)

Constructor from file.

This constructor reads a NameSet from a file using the DoRead(TokenReader&, const std::string&) function. The section is specified by rLabel and the static SymbolTable is used.

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

Definition at line 50 of file nameset.cpp.

faudes::NameSet::~NameSet ( void   )  [virtual]

Virtual destructor.

Definition at line 57 of file nameset.cpp.


Member Function Documentation

NameSet * faudes::NameSet::New ( void   )  const [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::TBaseSet< T, Cmp >.

Reimplemented in faudes::TaNameSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 62 of file nameset.cpp.

NameSet * faudes::NameSet::Copy ( void   )  const [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::TBaseSet< T, Cmp >.

Reimplemented in faudes::TaNameSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 28 of file nameset.cpp.

const NameSet * faudes::NameSet::Cast ( const Type pOther  )  const [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::TBaseSet< T, Cmp >.

Reimplemented in faudes::TaNameSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 29 of file nameset.cpp.

NameSet & faudes::NameSet::Assign ( const Type rSrc  )  [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::TBaseSet< T, Cmp >.

Reimplemented in faudes::TaNameSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 30 of file nameset.cpp.

bool faudes::NameSet::Equal ( const Type rOther  )  const [virtual]

Test equality of configuration data.

Derived classes should reimplement this method to return true if both actual types and configuration data match. The object name is not consired in the test.

This method calls the virtual method DoEqual(). Re-implementation can be done via the convenience macros FAUDES_TYPE_DECLARATION and FAUDES_TYPE_IMPLEMENTATION.

Parameters:
rOther Other objevt to compare with.
Returns:
True on match.

Reimplemented from faudes::TBaseSet< T, Cmp >.

Reimplemented in faudes::TaNameSet< Attr >, faudes::ColorSet, faudes::ClockSet, faudes::SimConditionSet, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 31 of file nameset.cpp.

bool faudes::NameSet::operator== ( const NameSet rOther  )  const [virtual]

Definition at line 31 of file nameset.cpp.

bool faudes::NameSet::operator!= ( const NameSet rOther  )  const [virtual]

Definition at line 31 of file nameset.cpp.

SymbolTable * faudes::NameSet::SymbolTablep ( void   )  const

Get Pointer mpSymbolTable.

Returns:
Pointer mpSymbolTable

Definition at line 99 of file nameset.cpp.

void faudes::NameSet::SymbolTablep ( SymbolTable pSymTab  ) 

Set SymbolTable reference.

This function sets the reference to the SymbolTable. The current implementation clears the set, future versions may implement a re-indexing.

Parameters:
pSymTab Pointer to SymbolTable

Definition at line 104 of file nameset.cpp.

bool faudes::NameSet::Insert ( const Idx rIndex  ) 

Idx faudes::NameSet::Insert ( const std::string &  rName  ) 

Add an element by its symbolic name.

If the name is unknown, a new index will be generated and recorded in the symboltable. If the name is known, the corresponding index will be added to the set.

Parameters:
rName Symbolic name of element to add
Returns:
Index of (new) element

Reimplemented in faudes::TaNameSet< Attr >, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 212 of file nameset.cpp.

bool faudes::NameSet::Erase ( const std::string &  rName  )  [virtual]

void faudes::NameSet::SymbolicName ( Idx  index,
const std::string &  rName 
)

Set new name for existing index.

FAUDES_CHECKED checks if index exists in NameSet.

Parameters:
index Index to edit
rName New name
Exceptions:
Exception 
  • index not in this set (id 60)
  • index not found in SymbolTable (id 42)
  • name already associated with another index (id 44)

Definition at line 287 of file nameset.cpp.

void faudes::NameSet::SymbolicName ( const std::string &  rName,
const std::string &  rNewName 
)

Set new name for existing name FAUDES_CHECKED checks if the specified name exists in NameSet.

Parameters:
rName Symbolic name to edit
rNewName New name
Exceptions:
Exception 
  • symbolic name not in this set (id 60)
  • new name already associated with another index (id 44)

Definition at line 300 of file nameset.cpp.

std::string faudes::NameSet::SymbolicName ( Idx  index  )  const

Name lookup.

Parameters:
index Index to lookup
Returns:
Corresponding name or empty std::string if non-existent

Definition at line 282 of file nameset.cpp.

Idx faudes::NameSet::Index ( const std::string &  rName  )  const

Index lookup.

Parameters:
rName Symbolic name to look up
Returns:
Corresponding index or 0 for non-existent

Definition at line 315 of file nameset.cpp.

bool faudes::NameSet::Exists ( const Idx rIndex  )  const

Test existence of index.

Parameters:
rIndex Index to test
Returns:
True if index is in this set

Definition at line 320 of file nameset.cpp.

bool faudes::NameSet::Exists ( const std::string &  rName  )  const

Test existence of name.

Parameters:
rName Symbolic name to test
Returns:
True if index is in this set

Definition at line 325 of file nameset.cpp.

NameSet::Iterator faudes::NameSet::Find ( const Idx rIndex  )  const

Find iterator for index.

Returns either a valid iterator or End() for non-existent.

Parameters:
rIndex Index to find
Returns:
NameSet::Iterator

Definition at line 330 of file nameset.cpp.

NameSet::Iterator faudes::NameSet::Find ( const std::string &  rName  )  const

Find iterator for name.

Returns either a valid iterator or End() for non-existent.

Parameters:
rName Name to find
Returns:
NameSet::Iterator

Definition at line 335 of file nameset.cpp.

virtual void faudes::NameSet::Attributes ( const NameSet rOtherSet  )  [inline, virtual]

Set attributes.

This virtual interface function is overloaded by the derived class TaNameSet to set attributes by the specified set. Since the plain NameSet has no attributes, this function does nothing.

Parameters:
rOtherSet Other NameSet
Exceptions:
Exception 
  • Element does not exist (63)
  • Cannot cast attribute type (63)

Reimplemented in faudes::TaNameSet< Attr >, 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 >, and faudes::TaNameSet< faudes::AttributeCFlags >.

Definition at line 348 of file nameset.h.

NameSet faudes::NameSet::operator+ ( const NameSet rOtherSet  )  const

Set union operator.

Returns:
Union Set
Exceptions:
Exception 
  • symboltable mismatch (id 67)

Definition at line 341 of file nameset.cpp.

NameSet faudes::NameSet::operator- ( const NameSet rOtherSet  )  const

Set difference operator.

Returns:
Difference NameSet
Exceptions:
Exception 
  • symboltable mismatch (id 67)

Definition at line 361 of file nameset.cpp.

NameSet faudes::NameSet::operator* ( const NameSet rOtherSet  )  const

Set intersection operator.

Returns:
Intersection NameSet
Exceptions:
Exception 
  • symboltable mismatch (id 67)

Definition at line 381 of file nameset.cpp.

bool faudes::NameSet::operator<= ( const NameSet rOtherSet  )  const

Test for subset.

Definition at line 401 of file nameset.cpp.

bool faudes::NameSet::operator>= ( const NameSet rOtherSet  )  const

Test for superset.

Definition at line 413 of file nameset.cpp.

NameSet & faudes::NameSet::DoAssign ( const NameSet rSourceSet  )  [protected, virtual]

Assign from other name set.

Performs a fake copy, see TBaseSet.

Parameters:
rSourceSet Destination to copy from
Returns:
ref to this set

Definition at line 76 of file nameset.cpp.

bool faudes::NameSet::DoEqual ( const NameSet rOtherSet  )  const [protected, virtual]

Test equality of configuration data.

Ignore name of the set, insist in matching symboltables.

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

Definition at line 87 of file nameset.cpp.

void faudes::NameSet::DoWrite ( TokenWriter tw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [protected, virtual]

Write to TokenWriter, see Type::Write for public wrappers This function will also do the token io of attributes in derived classes.

Parameters:
tw Reference to TokenWriter
rLabel Label of the section to write, defaults to name of set or "NameSet"
pContext Write context to provide contextual information
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::TBaseSet< T, Cmp >.

Definition at line 113 of file nameset.cpp.

void faudes::NameSet::DoDWrite ( TokenWriter tw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [protected, virtual]

Write debug info to TokenWriter, see Type::DWrite for public wrapper.

The debug version writes a format that includes symbolic names and indices.

Parameters:
tw Reference to TokenWriter
rLabel Label of the section to write, defaults to name of set or "NameSet"
pContext Write context to provide contextual information
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::TBaseSet< T, Cmp >.

Definition at line 136 of file nameset.cpp.

void faudes::NameSet::DoRead ( TokenReader tr,
const std::string &  rLabel = "",
const Type pContext = 0 
) [protected, virtual]

Read from TokenReader, see Type::Read for public wrappers.

It is an error if the file contains a plain index (id 52). The method invokes TokenReader::SeekBegin() to seek the specified section, reads subsequent symbols, and calls matching TokenReader::SeekEnd(). If no section is specified, the section is assumed to start at the current position of the token stream. If the current position is no begin token, the section "NameSet" is read. When used by a derived class with attributes, attributes are read, too.

Parameters:
tr Reference to TokenReader
rLabel Label to read, defaults to current begin label or else "NameSet"
pContext Write context to provide contextual information
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Reimplemented from faudes::TBaseSet< T, Cmp >.

Definition at line 150 of file nameset.cpp.


Friends And Related Function Documentation

friend class TaNameSet [friend]

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

This is used for the pragmatic implemention conversion constructors.

Definition at line 83 of file nameset.h.


Member Data Documentation

Pointer to local SymbolTable.

Definition at line 408 of file nameset.h.


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

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