libFAUDES

Sections

Index

faudes::vGenerator Class Reference
[Generator Classes]

Base class of all FAUDES generators. More...

#include <cfl_generator.h>

List of all members.

Public Member Functions

Constructors & Destructor

 vGenerator (void)
 Default constructor.
 vGenerator (const vGenerator &rOtherGen)
 Copy-constructror.
 vGenerator (const std::string &rFileName)
 Construct from file.
virtual vGeneratorNew (void) const
 Construct on heap.
virtual vGeneratorCopy (void) const
 Construct copy on heap.
virtual ~vGenerator (void)
 Destructor.
Copy and Assignment

virtual vGeneratorAssign (const vGenerator &rSrc)
 Copy from other vGenerator.
virtual vGeneratorAssign (const Type &rSrc)
 Copy from other faudes type.
virtual vGeneratorAssignWithoutAttributes (const vGenerator &rGen)
 Copy from other vGenerator, ignore attributes.
virtual void Move (vGenerator &rGen)
 Destructive copy to other vGenerator.
virtual vGeneratoroperator= (const vGenerator &rOtherGen)
 Assignment operator (uses Copy method) Note: you must reimplement this operator in derived classes in order to handle internal pointers correctly.
virtual void Version (const std::string &rVersion, vGenerator &rResGen) const
 Create another version of this generator.
virtual void Version (Idx version, vGenerator &rResGen) const
 Create another version of this generator.
virtual void Version (const std::string &rPattern, const std::string &rReplacement, vGenerator &rResGen) const
 Create another version of this generator.
Basic Maintenance

void Name (const std::string &rName)
 Set the generator's name.
const std::string & Name (void) const
 Get generator's name.
virtual bool Valid (void)
 Check if generator is valid.
virtual void Clear (void)
 Clear generator data.
void ClearStates (void)
 Clear all states and transitions, maintain alphabet.
Idx AlphabetSize (void) const
 Get number of events in alphabet.
Idx Size (void) const
 Get generator size (number of states).
Idx TransRelSize (void) const
 Get number of transitions.
Idx InitStatesSize (void) const
 Get number of initial states.
Idx MarkedStatesSize (void) const
 Get number of marked states.
bool Empty (void) const
 Check if generator is empty (no states).
bool AlphabetEmpty (void) const
 Check if alphabet is Empty.
bool TransRelEmpty (void) const
 Check if transition relation is empty.
bool InitStatesEmpty (void) const
 Check if set of initial states are empty.
bool MarkedStatesEmpty (void) const
 Check if set of marked states are empty.
Event Symboltable

SymbolTableEventSymbolTablep (void) const
 Get Pointer to EventSymbolTable currently used by this vGenerator.
virtual void EventSymbolTablep (SymbolTable *pSymTab)
 Set EventSymbolTable to be used by this vGenerator.
virtual void EventSymbolTablep (const vGenerator &rOtherGen)
 Set EventSymbolTable as given by rOtherGen.
EventSet NewEventSet (void) const
 Create EventSet with generator's EventSymbolTable (on stack).
EventSetNewEventSetp (void) const
 Create EventSet with generator's EventSymbolTable (on heap).
Idx EventIndex (const std::string &rName) const
 Event index lookup.
std::string EventName (Idx index) const
 Event name lookup.
void EventName (Idx index, const std::string &rName)
 Set name for existing event.
std::string UniqueEventName (const std::string &rName) const
 Create a new unique symbolic event name.
bool EventRename (Idx event, const std::string &rNewName)
 Rename event in this generator.
State Symboltable

const SymbolTableStateSymbolTable (void) const
 Get StateSymbolTable.
void StateSymbolTable (const SymbolTable &rSymTab)
 Set StateSymbolTable.
Idx StateIndex (const std::string &rName) const
 State index lookup.
std::string StateName (Idx index) const
 State name lookup.
void StateName (Idx index, const std::string &rName)
 Set name of state.
void ClearStateNames (void)
 Remove all names from generator's StateSymbolTable.
void ClrStateName (Idx index)
 Clear name for individual state.
void ClrStateName (const std::string &rName)
 Clear name for individual state.
bool StateNamesEnabled (void) const
 Whether libFAUEDS functions are requested to generate state names.
void StateNamesEnabled (bool flag)
 Enable/disable libFAUEDS functions to automatically generate state names.
void SetDefaultStateNames (void)
 Assign each state a default name based on its index.
void EnforceStateNames (const std::string &rTemplate)
 For all states without a symbolic name, assign a name based on suggested template and the index.
std::string UniqueStateName (const std::string &rName) const
 Create a new unique symbolic state name.
Read Access to Core Members

EventSet::Iterator AlphabetBegin (void) const
 Iterator to Begin() of alphabet.
EventSet::Iterator AlphabetEnd (void) const
 Iterator to End() of alphabet.
bool ExistsEvent (Idx index) const
 Test existence of event in alphabet.
bool ExistsEvent (const std::string &rName) const
 Test existence of event in alphabet.
EventSet::Iterator FindEvent (Idx index) const
 Returns a iterator to event index in alphabet.
EventSet::Iterator FindEvent (const std::string &rName) const
 Returns a iterator to event index in alphabet.
const EventSetAlphabet (void) const
 Return const reference to alphabet.
StateSet::Iterator StatesBegin (void) const
 Iterator to Begin() of state set.
StateSet::Iterator StatesEnd (void) const
 Iterator to End() of state set.
bool ExistsState (Idx index) const
 Test existence of state in state set.
bool ExistsState (const std::string &name) const
 Test existence of state in state set.
StateSet::Iterator FindState (Idx index) const
 Returns a iterator to state index in state set.
StateSet::Iterator FindState (const std::string &rName) const
 Returns a iterator to state with specified name.
const StateSetStates (void) const
 Return reference to state set.
Idx InitState (void) const
 Return initial state.
StateSet::Iterator InitStatesBegin (void) const
 Iterator to Begin() of mInitStates.
StateSet::Iterator InitStatesEnd (void) const
 Iterator to End() of mInitStates.
bool ExistsInitState (Idx index) const
 Test existence of state in mInitStates.
StateSet::Iterator FindInitState (Idx index) const
 Iterator to state index in mInitStates.
const StateSetInitStates (void) const
 Const ref to initial states.
StateSet::Iterator MarkedStatesBegin (void) const
 Iterator to Begin() of mMarkedStates.
StateSet::Iterator MarkedStatesEnd (void) const
 Iterator to End() of mMarkedStates.
bool ExistsMarkedState (Idx index) const
 Test existence of state in mMarkedStates.
StateSet::Iterator FindMarkedState (Idx index) const
 Returns a iterator to state index in mMarkedStates.
const StateSetMarkedStates (void) const
 Return const ref of marked states.
TransSet::Iterator TransRelBegin (void) const
 Iterator to Begin() of transition relation.
TransSet::Iterator TransRelEnd (void) const
 Iterator to End() of transition relation.
TransSet::Iterator TransRelBegin (Idx x1) const
 Iterator to begin of transitions with x1 as predecessor state.
TransSet::Iterator TransRelEnd (Idx x1) const
 iterator to end of transitions with x1 as predecessor state.
TransSet::Iterator TransRelBegin (Idx x1, Idx ev) const
 iterator to begin of transitions with x1 as predecessor state and event ev.
TransSet::Iterator TransRelEnd (Idx x1, Idx ev) const
 Iterator to end of transitions with x1 as predecessor state and event ev.
TransSet::Iterator FindTransition (const std::string &rX1, const std::string &rEv, const std::string &rX2) const
 iterator to transition given by x1, ev, x2
TransSet::Iterator FindTransition (Idx x1, Idx ev, Idx x2) const
 Iterator to transition given by x1, ev, x2.
TransSet::Iterator FindTransition (const Transition &rTrans) const
 Iterator to transition.
bool ExistsTransition (const std::string &rX1, const std::string &rEv, const std::string &rX2) const
 Test for transition given by x1, ev, x2.
bool ExistsTransition (Idx x1, Idx ev, Idx x2) const
 Test for transition given by x1, ev, x2.
bool ExistsTransition (const Transition &rTrans) const
 test for transition
const TransSetTransRel (void) const
 Return reference to transition relation.
void TransRel (TransSetX1EvX2 &res) const
 Get copy of trantision relation sorted by other compare operator, e.g.
void TransRel (TransSetEvX1X2 &res) const
void TransRel (TransSetEvX2X1 &res) const
void TransRel (TransSetX2EvX1 &res) const
void TransRel (TransSetX2X1Ev &res) const
void TransRel (TransSetX1X2Ev &res) const
Transition TransitionByNames (const std::string &rX1, const std::string &rEv, const std::string &rX2) const
 Convebience function.
Write Access to Core Members

bool InsEvent (Idx index)
 Add an existing event to alphabet by index.
Idx InsEvent (const std::string &rName)
 Add named event to generator.
void InsEvents (const EventSet &events)
 Add new named events to generator.
bool DelEvent (Idx index)
 Delete event from generator by index.
bool DelEvent (const std::string &rName)
 Delete event from generator by name.
void DelEvents (const EventSet &rEvents)
 Delete a set of events from generator.
bool DelEventFromAlphabet (Idx index)
 Delete event from alphabet without consistency check.
void InjectAlphabet (const EventSet &rNewalphabet)
 Set mpAlphabet without consistency check.
void RestrictAlphabet (const EventSet &rNewalphabet)
 Restricts mpAlphabet without consistency check.
Idx InsState (void)
 Add new anonymous state to generator.
bool InsState (Idx index)
 Add (perhaps new) state to generator.
Idx InsState (const std::string &rName)
 Add new named state to generator.
bool DelState (Idx index)
 Delete a state from generator by index.
bool DelState (const std::string &rName)
 Delete a state from generator by name.
void DelStates (const StateSet &rDelStates)
 Delete a set of states Cleans mpStates, mInitStates, mMarkedStates, mpTransrel, and mpStateSymboltable.
bool DelStateFromStates (Idx index)
 Delete a state from generator without consistency check.
StateSet::Iterator DelStateFromStates (StateSet::Iterator pos)
 Delete a state from generator without consistency check.
void InjectState (Idx index)
 Inject an existing state index into generators mStates Use with care! For use in performance optimized functions.
void InjectStates (const StateSet &rNewStates)
 Inject a complete state set without consistency checks (without attributes).
Idx InsInitState (void)
 Create new anonymous state and set as initial state.
bool InsInitState (Idx index)
 Add (perhaps new) state to generator and turn it into a initial state.
Idx InsInitState (const std::string &rName)
 Create a new named state and set as initial state.
Idx InsMarkedState (void)
 Create new anonymous state and set as marked state.
bool InsMarkedState (Idx index)
 Add (perhaps new) state to generator and turn it into a marked state.
Idx InsMarkedState (const std::string &rName)
 Create a new named state and set as marked state.
void SetInitState (Idx index)
 Set an existing state as initial state by index.
void SetInitState (const std::string &rName)
 Set an existing state as initial state by name.
void InjectInitStates (const StateSet &rNewInitStates)
 Replace mInitStates with StateSet given as parameter without consistency checks.
void ClrInitState (Idx index)
 Unset an existing state as initial state by index.
void ClrInitState (const std::string &rName)
 Unset an existing state as initial state by name.
StateSet::Iterator ClrInitState (StateSet::Iterator pos)
 Unset an existing state as initial state by iterator.
void ClearInitStates (void)
 Clear all mInitStates.
void SetMarkedState (Idx index)
 Set an existing state as marked state by index.
void SetMarkedState (const std::string &rName)
 Set an existing state as marked state by name.
void ClrMarkedState (Idx index)
 Unset an existing state as marked state by index.
void ClrMarkedState (const std::string &rName)
 Unset an existing state as marked state by name.
StateSet::Iterator ClrMarkedState (StateSet::Iterator pos)
 Unset an existing state as marked state by iterator.
void ClearMarkedStates (void)
 Clear all marked states.
void InjectMarkedStates (const StateSet &rNewMarkedStates)
 Replace mMarkedStates with StateSet given as parameter without consistency checks.
bool SetTransition (Idx x1, Idx ev, Idx x2)
 Add a transition to generator by indices.
bool SetTransition (const std::string &rX1, const std::string &rEv, const std::string &rX2)
 Add a transition to generator by names.
bool SetTransition (const Transition &rTransition)
 Add a transition to generator.
void ClrTransition (Idx x1, Idx ev, Idx x2)
 Remove a transition by indices.
void ClrTransition (const Transition &rTrans)
 Remove a transition by transition object.
TransSet::Iterator ClrTransition (TransSet::Iterator it)
 Remove a transition by iterator.
void ClearTransRel (void)
 Clear all transitions.
void InjectTransition (const Transition &rTrans)
 Set transition without consistency check.
void InjectTransRel (const TransSet &rNewtransrel)
 Set transition relation without consistency check (no attributes).
Attributes

virtual void ClearAttributes (void)
 Clear Attributes.
virtual bool UpdateAttributes (void)
 Updates internal attributes.
virtual void ClearEventAttributes (void)
 Clear event attributes.
virtual void ClrEventAttribute (Idx index)
 Clear attribute for existing event.
virtual void EventAttribute (Idx index, const Type &rAttr)
 Set attribute for existing event.
virtual void EventAttributes (const EventSet &rEventSet)
 Set attributes for existing events.
virtual const AttributeVoidEventAttribute (Idx index) const
 Event attribute lookup.
virtual const AttributeVoidEventAttribute (const std::string &rName) const
 Event attribute lookup.
virtual AttributeVoidEventAttributep (Idx index)
 Event attribute pointer to access Attribute methods.
virtual AttributeVoidEventAttributep (const std::string &rName)
 Event attribute pointer to access Attribute methods.
virtual void ClearStateAttributes (void)
 Clear state attributes.
virtual void ClrStateAttribute (Idx index)
 Clear attribute for existing state.
virtual void StateAttribute (Idx index, const Type &rAttr)
 Set attribute for existing state.
virtual const AttributeVoidStateAttribute (Idx index) const
 State attribute lookup.
virtual AttributeVoidStateAttributep (Idx index)
 State attribute pointer to access Attribute methods.
virtual void ClearTransAttributes (void)
 Clear transition attributes.
virtual void TransAttribute (const Transition &rTrans, const Type &rAttr)
 Set attribute for existing transition.
virtual void ClrTransAttribute (const Transition &rTrans)
 Clear attribute for existing transition.
virtual const AttributeVoidTransAttribute (const Transition &rTrans) const
 Transition attribute lookup.
virtual AttributeVoidTransAttributep (const Transition &rTrans)
 Transition attribute pointer to access Attribute methods.
virtual void ClearGlobalAttribute (void)
 Clear global attribute.
virtual void GlobalAttribute (const Type &rAttr)
 Set global attribute.
virtual void GlobalAttributeTry (const Type &rAttr)
 Set global attribute.
virtual const AttributeVoidGlobalAttribute (void) const
 Global attribute lookup.
virtual AttributeVoidGlobalAttributep (void)
 Get attribute pointer The global attribute allways exits.
Reachability

StateSet AccessibleSet (void) const
 Compute set of accessible states.
bool Accessible (void)
 Make generator accessible.
bool IsAccessible (void) const
 Check if generator is accessible.
StateSet CoaccessibleSet (void) const
 Compute set of Coaccessible states.
bool Coaccessible (void)
 Make generator Coaccessible.
bool IsCoaccessible (void) const
 Check if generator is Coaccessible.
StateSet BlockingStates (void) const
 Compute set of blocking states.
StateSet TerminalStates (void) const
 Compute set of terminal states.
StateSet TerminalStates (const StateSet &rStates) const
 Compute set of terminal states.
bool Complete (void)
 Make generator Complete.
bool IsComplete (void) const
 Check if generator is complete.
bool IsComplete (const StateSet &rStates) const
 Check if generator is complete.
StateSet TrimSet (void) const
 Compute set of trim states.
bool Trim (void)
 Make generator trim.
bool IsTrim (void) const
 Check if generator is trim.
bool OmegaTrim (void)
 Make generator omega-trim.
bool IsOmegaTrim (void) const
 Check if generator is omega-trim.
File IO

void WriteAlphabet (void) const
 Write generators alphabet to console.
std::string AlphabetToString (void) const
 Write generators alphabet to string.
void WriteAlphabet (TokenWriter &rTw) const
 Write generators alphabet to tokenwriter.
void WriteStateSet (const StateSet &rStateSet) const
 Write a stateset to console (no re-indexing).
std::string StateSetToString (const StateSet &rStateSet) const
 Write a stateset to string (no re-indexing).
std::string StateSetToText (const StateSet &rStateSet) const
 Write a stateset to formated text (no re-indexing).
void WriteStateSet (TokenWriter &rTw, const StateSet &rStateSet) const
 Write a stateset to TokenWriter.
void DWriteStateSet (TokenWriter &rTw, const StateSet &rStateSet) const
 Write a stateset to TokenWriter (debug version, no re-indexing).
std::string StatesToString (void) const
 Write stateset of this generator to a string (no re-indexing).
std::string StatesToText (void) const
 Write stateset of this generator to formated text (no re-indexing).
std::string MarkedStatesToString (void) const
 Write set of marked states to a string (no re-indexing).
std::string InitStatesToString (void) const
 Write set of initial states to a string (no re-indexing).
void WriteTransRel (void) const
 Write transition relation to console (no re-indexing).
std::string TransRelToString (void) const
 Write transition relation to string (no re-indexing).
std::string TransRelToText (void) const
 Write transition relation to formated text (no re-indexing).
void WriteTransRel (TokenWriter &rTw) const
 Write transition relation to tokenwriter (no re-indexing).
void DWriteTransRel (TokenWriter &rTw) const
 Write transition relation to tokenwriter (debug version).
virtual void DotWrite (const std::string &rFileName) const
 Writes generator to dot input format.
virtual void DDotWrite (const std::string &rFileName) const
 Writes generator to dot input format (no re-indexing).
virtual void XDotWrite (const std::string &rFileName) const
 Writes generator to dot input format for export to VioLib.
void ReadStateSet (TokenReader &rTr, const std::string &rLabel, StateSet &rStateSet) const
 Read a state set.
Misc

EventSet UsedEvents (void) const
 Return used events (executed in transitions).
EventSet UnusedEvents (void) const
 Return unused events.
void MinimizeAlphabet (void)
 Set the alphabet to used events.
EventSet ActiveEventSet (Idx x1) const
 Return active event set at state x1.
TransSet ActiveTransSet (Idx x1) const
 Return active transition set at state x1.
StateSet TransRelStateSpace (void) const
 Return the states covered by transitions.
StateSet TransRelStateSpace (Idx x1) const
 Return the successor states of state x1.
bool IsDeterministic (void) const
 Check if generator is deterministic.
void SetMinStateIndexMap (void) const
 Set minimal index map for file io of generator states.
void ClearMinStateIndexMap (void) const
 Clear minimal index map for 1:1 file io.
Idx MinStateIndex (Idx index) const
 Get state index as is it will be written to file.
const std::map< Idx, Idx > & MinStateIndexMap (void) const
 Get state index translation map.
std::string EStr (Idx index) const
 Pretty printable event name for index (eg for debugging).
std::string SStr (Idx index) const
 Return pretty printable state name for index (eg for debugging).
std::string TStr (const Transition &rTrans) const
 Return pretty printable transition (eg for debugging).
void GraphWrite (const std::string &rFileName, const std::string &rOutFormat="", const std::string &rDotExec="dot") const
 Produce graphical representation of this generator.
bool operator< (const vGenerator &rOtherGen) const
 Order for sorting containers of generators.

Static Public Member Functions

static SymbolTableGlobalEventSymbolTablep (void)
 Get Pointer to global EventSymbolTable.
static void StateNamesEnabledDefault (bool flag)
 Sets the default for automatic state name generation.

Protected Member Functions

virtual void NewCore (void)
 Allocate my heap members (attribute dependent types).
virtual void DeleteCore (void)
 Free my heap members (attribute dependent types).
virtual void UpdateCore (void)
 Callback for core update.
void ConfigureAttributeTypes (const AttributeVoid *pNewGlobalPrototype, const StateSet *pNewStatesPrototype, const EventSet *pNewAlphabetPrototype, const TransSet *pNewTransRelPrototype)
 Configure attribute types.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read generator object from TokenReader, see Type::Read for public wrappers.
virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write generator to TokenWriter, see Type::Write for public wrappers.
virtual void DoDWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write generator in debugging format to TokenWriter, see Type::DWrite for public wrappers.
virtual void DoSWrite (TokenWriter &rTw) const
 Write generator statistics as comment to TokenWriter, see Type::SWrite for public wrappers.
void ReadGeneratorName (const std::string &rFileName)
 Read the generator's name from a file.
void ReadGeneratorName (TokenReader &rTr)
 Read the generator's name from a TokenReader.
void ReadAlphabet (const std::string &rFileName)
 Read the generator's alphabet from a file.
void ReadAlphabet (TokenReader &rTr)
 Read the generator's alphabet from a TokenReader.
void ReadStates (const std::string &rFileName)
 Read the generator's state set from a file.
void ReadStates (TokenReader &rTr)
 Read the generator's stateset from a TokenReader.
void ReadTransRel (const std::string &rFileName)
 Read the generator's transition relation from a file.
void ReadTransRel (TokenReader &rTr)
 Read the generator's transition relation from a TokenReader.
void CheckAccessible (StateSet &accessibleset, Idx startState) const
 Get accessible states by filling accessibleset recursive.
void CheckCoaccessible (StateSet &Coaccessibleset, const TransSetX2EvX1 &rtrel, Idx startState) const
 Get Coaccessible states by filling Coaccessibleset recursive.

Static Protected Member Functions

static const EventSetAlphabetVoid (void)
 Static default alphabet prototype (incl.
static const StateSetStatesVoid (void)
 Static default state set prototype (incl.
static const TransSetTransRelVoid (void)
 Static default transition relation prototype (incl.
static const AttributeVoidGlobalVoid (void)
 Static default global attribute prototype (configures global attribute type).

Protected Attributes

std::string mMyName
 Name of generator.
Idx mId
 Number of generator.
SymbolTable mStateSymbolTable
 State symbol table (local per Generator).
SymbolTablempStateSymbolTable
 Pointer to State symbol table.
SymbolTablempEventSymbolTable
 Pointer to Event symbol table.
bool mStateNamesEnabled
 Automatic state names.
EventSetmpAlphabet
 Pointer to alphabet (actual type depends on attributes).
StateSetmpStates
 Pointer to state set (actual type depends on attributes).
TransSetmpTransRel
 Pointer to ransition relation (actual type depends on attributes).
AttributeVoidmpGlobalAttribute
 Pointer to lobal attribute (actual type depends on attributes).
const EventSetpAlphabetPrototype
 Pointer to alphabet prototype (incl.
const StateSetpStatesPrototype
 Pointer to state set prototype (incl.
const TransSetpTransRelPrototype
 Pointer to transition relation prototype (incl.
const AttributeVoidpGlobalPrototype
 Pointer to global attribute prototype (configures global attribute type).
StateSet mInitStates
 Initial states.
StateSet mMarkedStates
 Marked states.
std::map< Idx, IdxmMinStateIndexMap
 Map State indices to consecutive indices.

Static Protected Attributes

static Idx msObjectCount = 0
 Number of generator objects.
static bool msStateNamesEnabledDefault = true
 Default for automatic statenames.

Detailed Description

Base class of all FAUDES generators.

Overview

The faudes::Generator models the plain five-tupel G = (X, Sigma, Delta, X_0, X_m) to represent the marked language L(G) and closed language L_m(G), respectively. It provides read and write access to core menbers, e.g. methods for inserting/deleting events, states and transitions.

States, events and transitions in a generator can be addressed in three alternative methods:

  • by index, involves a search on a sorted set (efficient)
  • by name, involves two searches on sorted sets (not quite so efficient)
  • by iterator, involves pointer dereferencing (very efficient)

For read access, const refererences to sets are provided. In order to allow for consistency checks, write access is via generator methods only. When the compiletime option FAUDES_CHECKED is defined, write methods throw an exception on inconsistent data, eg. setting an initial state that is not an element of the state set, or introducing a transition with an event label that is not in the alphabet.

Events Versus States

While both events and states are represented by the integer type faudes::Idx, there is a fundamental distinction between both, that stems our choice to use the generator as a tool to represent a formal language. From this perspective, events are global enteties while states are local to the respective generator. Any two events are related while states only compare within a generator.

In consequence of the different role of events and states, there is one global sybmoltable that provides event name resolution, while there is a local state symbol table for each generator. Furthermore, state names are considered cosmetic and hence are optional, while event names are mandatory.

Example: two machines both refer to the event name "alpha" that models the process of passing a workpiece from one machine to the other. In libFAUDES this is indeed modelled as one event which is represented by one index. However, both machines may have a state "Idle" which indicates that the respective machine is idle. In libFAUDES the two states are treated locally to the generators and whether or not they have the same index is regarded irrelevant.

The generator class carries a flag to indicate that functions with result type generator shall attach names to the newly created states, perhaps based on the state names of the respective arguments. Turning of this feature and avoiding state names alltogether considerably increases libFAUDES performance.

File IO

Generators inherit the standard token IO interface from the libFAUDES general purpose base Type, so you may use Read and Write functions for generators. The file-format consists of a generator section that includes one subsection for each core member. It is illustrated by the below example

 <Generator>
 % libFAUDES Generator for the simple machine
 "simple machine"                   

 <Alphabet>                         
 "alpha" "beta" "mue" "lambda"      
 </Alphabet>

 <States>                           
 "idle" "busy" "down"
 </States>

 <TransRel>
 "idle" "alpha" "busy"
 "busy" "beta" "idle"
 "busy" "mue" "down"
 "down" "lambda" "idle"
 </TransRel>
 
 <InitStates>
 "idle"
 </InitStates>
 
 <MarkedStates>
 "idle"
 </MarkedStates>
 </Generator>

Note that for file IO states may be represented either ba symbolic name or index. However, when writing a file indices will be chosen consecutively and beginning at 1. Thus, state indices are not maintained by file IO. Events are always represented by their symbolic name.

Attributes

libFAUDES generators provide an interface to access so called attributes, ie data that is optionally attached to individual states, events, transitions, or globally to the generator.

The faudes::Generator's interface to attributes is abstract in the sense that a generator is not aware of the actual type of its attributes. Instances of the class Generator indeed have trivial attributes that hold no data at all. To use attributes, you are meant to instantiate objects of the derived class TaGenerator with template parameters to specify attribute types. Basic algorithms implemented for plain generators will accept attributed generators as arguments. Such algorithms may occasionally inspect or set attributes using the abstract interface and C++ dynamic casts. For specialised algorithms that refer to extended generator semantics, we recommend derived generator classes as argument type.

Definition at line 155 of file cfl_generator.h.


Constructor & Destructor Documentation

faudes::vGenerator::vGenerator ( void   ) 

Default constructor.

doxygen group

Definition at line 56 of file cfl_generator.cpp.

faudes::vGenerator::vGenerator ( const vGenerator rOtherGen  ) 

Copy-constructror.

Definition at line 90 of file cfl_generator.cpp.

faudes::vGenerator::vGenerator ( const std::string &  rFileName  ) 

Construct from file.

This constructor effectively uses the DoRead(TokenReader&) function to read.

Parameters:
rFileName Name of file
Exceptions:
Exception 
  • IO errors (id 1)
  • Token mismatch (id 50, 51, 52, 80, 85)

Definition at line 121 of file cfl_generator.cpp.

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

Destructor.

Definition at line 178 of file cfl_generator.cpp.


Member Function Documentation

bool faudes::vGenerator::Accessible ( void   ) 

Make generator accessible.

Returns:
True if generator contains at least one initial state

Definition at line 1843 of file cfl_generator.cpp.

StateSet faudes::vGenerator::AccessibleSet ( void   )  const

Compute set of accessible states.

doxygen group

Definition at line 1832 of file cfl_generator.cpp.

EventSet faudes::vGenerator::ActiveEventSet ( Idx  x1  )  const

Return active event set at state x1.

Parameters:
x1 Index of x1
Returns:
EventSet

Definition at line 1765 of file cfl_generator.cpp.

TransSet faudes::vGenerator::ActiveTransSet ( Idx  x1  )  const

Return active transition set at state x1.

Parameters:
x1 Index of x1
Returns:
EventSet

Definition at line 1775 of file cfl_generator.cpp.

const EventSet & faudes::vGenerator::Alphabet ( void   )  const

Return const reference to alphabet.

Returns:
EventSet Reference to mpAlphabet

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1705 of file cfl_generator.cpp.

EventSet::Iterator faudes::vGenerator::AlphabetBegin ( void   )  const

Iterator to Begin() of alphabet.

doxygen group

Returns:
Iterator to begin of mpAlphabet

Definition at line 929 of file cfl_generator.cpp.

bool faudes::vGenerator::AlphabetEmpty ( void   )  const

Check if alphabet is Empty.

Returns:
True if mpAlphabet is empty

Definition at line 596 of file cfl_generator.cpp.

EventSet::Iterator faudes::vGenerator::AlphabetEnd ( void   )  const

Iterator to End() of alphabet.

Returns:
Iterator to end of mpAlphabet

Definition at line 934 of file cfl_generator.cpp.

Idx faudes::vGenerator::AlphabetSize ( void   )  const

Get number of events in alphabet.

Returns:
Number of events

Definition at line 521 of file cfl_generator.cpp.

std::string faudes::vGenerator::AlphabetToString ( void   )  const

Write generators alphabet to string.

Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2161 of file cfl_generator.cpp.

const EventSet & faudes::vGenerator::AlphabetVoid ( void   )  [static, protected]

Static default alphabet prototype (incl.

attribute type)

Definition at line 36 of file cfl_generator.cpp.

vGenerator & faudes::vGenerator::Assign ( const Type rSrc  )  [virtual]

Copy from other faudes type.

The current implementation tests whether the source object can be casted to a generator and then performs the according assignment.

Parameters:
rSrc Source to copy from.

Reimplemented from faudes::Type.

Definition at line 268 of file cfl_generator.cpp.

vGenerator & faudes::vGenerator::Assign ( const vGenerator rSrc  )  [virtual]

Copy from other vGenerator.

doxygen group The current implementation tries to be smart and copy attributes if types can be casted. Use CopyWithoutAttributes to explicitely ignore attributes.

Parameters:
rSrc Source to copy from.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 239 of file cfl_generator.cpp.

vGenerator & faudes::vGenerator::AssignWithoutAttributes ( const vGenerator rGen  )  [virtual]

Copy from other vGenerator, ignore attributes.

Parameters:
rGen Source to copy from.

Definition at line 277 of file cfl_generator.cpp.

StateSet faudes::vGenerator::BlockingStates ( void   )  const

Compute set of blocking states.

A state is considered blocking it is accessible but not coaccessible.

Definition at line 1949 of file cfl_generator.cpp.

void faudes::vGenerator::CheckAccessible ( StateSet accessibleset,
Idx  startState 
) const [protected]

Get accessible states by filling accessibleset recursive.

Parameters:
accessibleset Reference to StateSet with accessibel states
startState State index to start with

Definition at line 1808 of file cfl_generator.cpp.

void faudes::vGenerator::CheckCoaccessible ( StateSet Coaccessibleset,
const TransSetX2EvX1 rtrel,
Idx  startState 
) const [protected]

Get Coaccessible states by filling Coaccessibleset recursive.

Parameters:
Coaccessibleset Reference to StateSet with coaccessibel states
rtrel Reverse transition relation where x1 <-> x2
startState State index to start with

Definition at line 1820 of file cfl_generator.cpp.

void faudes::vGenerator::Clear ( void   )  [virtual]

Clear generator data.

Clears state set, alphabet and transitionrealtion. Behavioural flags eg StateNamesEnabled are maintained.

Reimplemented from faudes::Type.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::Executor, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 531 of file cfl_generator.cpp.

void faudes::vGenerator::ClearAttributes ( void   )  [virtual]

Clear Attributes.

doxygen group

Definition at line 563 of file cfl_generator.cpp.

void faudes::vGenerator::ClearEventAttributes ( void   )  [virtual]

Clear event attributes.

Definition at line 553 of file cfl_generator.cpp.

void faudes::vGenerator::ClearGlobalAttribute ( void   )  [virtual]

Clear global attribute.

Definition at line 543 of file cfl_generator.cpp.

void faudes::vGenerator::ClearInitStates ( void   ) 

Clear all mInitStates.

Definition at line 1345 of file cfl_generator.cpp.

void faudes::vGenerator::ClearMarkedStates ( void   ) 

Clear all marked states.

Definition at line 1420 of file cfl_generator.cpp.

void faudes::vGenerator::ClearMinStateIndexMap ( void   )  const

Clear minimal index map for 1:1 file io.

Definition at line 622 of file cfl_generator.cpp.

void faudes::vGenerator::ClearStateAttributes ( void   )  [virtual]

Clear state attributes.

Reimplemented in faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >.

Definition at line 548 of file cfl_generator.cpp.

void faudes::vGenerator::ClearStateNames ( void   ) 

Remove all names from generator's StateSymbolTable.

Definition at line 855 of file cfl_generator.cpp.

void faudes::vGenerator::ClearStates ( void   ) 

Clear all states and transitions, maintain alphabet.

Definition at line 572 of file cfl_generator.cpp.

void faudes::vGenerator::ClearTransAttributes ( void   )  [virtual]

Clear transition attributes.

Definition at line 558 of file cfl_generator.cpp.

void faudes::vGenerator::ClearTransRel ( void   ) 

Clear all transitions.

Definition at line 1544 of file cfl_generator.cpp.

void faudes::vGenerator::ClrEventAttribute ( Idx  index  )  [virtual]

Clear attribute for existing event.

Parameters:
index Event index

Definition at line 1564 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::ClrInitState ( StateSet::Iterator  pos  ) 

Unset an existing state as initial state by iterator.

Parameters:
pos StateSet::iterator
Returns:
Iterator to next init state

Definition at line 1339 of file cfl_generator.cpp.

void faudes::vGenerator::ClrInitState ( const std::string &  rName  ) 

Unset an existing state as initial state by name.

Parameters:
rName State name
Exceptions:
Exception 
  • State name not known in generator (id 90)

Definition at line 1325 of file cfl_generator.cpp.

void faudes::vGenerator::ClrInitState ( Idx  index  ) 

Unset an existing state as initial state by index.

Define FAUDES_CHECKED for consistency checks.

Parameters:
index State index
Exceptions:
Exception 
  • State index not found in generator (id 91)

Definition at line 1311 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::ClrMarkedState ( StateSet::Iterator  pos  ) 

Unset an existing state as marked state by iterator.

Parameters:
pos StateSet::iterator
Returns:
Iterator to next marked state

Definition at line 1414 of file cfl_generator.cpp.

void faudes::vGenerator::ClrMarkedState ( const std::string &  rName  ) 

Unset an existing state as marked state by name.

Parameters:
rName State name
Exceptions:
Exception 
  • State index not found in generator (id 91)

Definition at line 1400 of file cfl_generator.cpp.

void faudes::vGenerator::ClrMarkedState ( Idx  index  ) 

Unset an existing state as marked state by index.

Parameters:
index State index
Exceptions:
Exception 
  • State index not found in generator (id 91)

Definition at line 1386 of file cfl_generator.cpp.

void faudes::vGenerator::ClrStateAttribute ( Idx  index  )  [virtual]

Clear attribute for existing state.

Parameters:
index State index

Definition at line 1577 of file cfl_generator.cpp.

void faudes::vGenerator::ClrStateName ( const std::string &  rName  ) 

Clear name for individual state.

Parameters:
rName State name

Definition at line 877 of file cfl_generator.cpp.

void faudes::vGenerator::ClrStateName ( Idx  index  ) 

Clear name for individual state.

Parameters:
index State index
Exceptions:
Exception 
  • state does not exist in generator (id 90)

Definition at line 863 of file cfl_generator.cpp.

void faudes::vGenerator::ClrTransAttribute ( const Transition rTrans  )  [virtual]

Clear attribute for existing transition.

Parameters:
rTrans transition

Definition at line 1538 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::ClrTransition ( TransSet::Iterator  it  ) 

Remove a transition by iterator.

Parameters:
it TransSet::iterator
Returns:
Iterator to next transition

Definition at line 1514 of file cfl_generator.cpp.

void faudes::vGenerator::ClrTransition ( const Transition rTrans  ) 

Remove a transition by transition object.

Parameters:
rTrans Transition object

Definition at line 1508 of file cfl_generator.cpp.

void faudes::vGenerator::ClrTransition ( Idx  x1,
Idx  ev,
Idx  x2 
)

Remove a transition by indices.

Parameters:
x1 Predecessor state index
ev Event index
x2 Successor state index

Definition at line 1501 of file cfl_generator.cpp.

bool faudes::vGenerator::Coaccessible ( void   ) 

Make generator Coaccessible.

Returns:
True if generator contains at least one marked state

Definition at line 1886 of file cfl_generator.cpp.

StateSet faudes::vGenerator::CoaccessibleSet ( void   )  const

Compute set of Coaccessible states.

Definition at line 1872 of file cfl_generator.cpp.

bool faudes::vGenerator::Complete ( void   ) 

Make generator Complete.

This procedure removes all states are guaranteed to evolve into a terminal state within a finite number of transitios. The current implementations in initialized by the set of terminal states and then performs a backward reachability analysis.

Returns:
True if generator contains at least one initial state

Definition at line 1979 of file cfl_generator.cpp.

void faudes::vGenerator::ConfigureAttributeTypes ( const AttributeVoid pNewGlobalPrototype,
const StateSet pNewStatesPrototype,
const EventSet pNewAlphabetPrototype,
const TransSet pNewTransRelPrototype 
) [protected]

Configure attribute types.

Definition at line 185 of file cfl_generator.cpp.

vGenerator * faudes::vGenerator::Copy ( void   )  const [virtual]

Construct copy on heap.

Technically not a constructor, this function creates a vGenerator with the same event symboltable. It is the callers reponsebilty to delete the object when no longer needed. Derived classes must reimplement this function to create an object of the same class and the same event symboltable. The StateNamesEnabled indicator should be copied, too.

Returns:
New vGenerator

Reimplemented from faudes::Type.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TdiagGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioConstraint< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioController< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioEnvironment< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioPlant< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TIoSystem< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioConstraint< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioController< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioEnvironment< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, and faudes::THioPlant< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 170 of file cfl_generator.cpp.

void faudes::vGenerator::DDotWrite ( const std::string &  rFileName  )  const [virtual]

Writes generator to dot input format (no re-indexing).

Variant of DotWrite() without re-indexing.

Parameters:
rFileName File to write
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2466 of file cfl_generator.cpp.

void faudes::vGenerator::DeleteCore ( void   )  [protected, virtual]

Free my heap members (attribute dependent types).

Definition at line 223 of file cfl_generator.cpp.

bool faudes::vGenerator::DelEvent ( const std::string &  rName  ) 

Delete event from generator by name.

mpEventSymbolTable stays untouched. Transitions containing event will be removed too.

Parameters:
rName Name of event
Returns:
True, if event was in alphabet

Definition at line 1097 of file cfl_generator.cpp.

bool faudes::vGenerator::DelEvent ( Idx  index  ) 

Delete event from generator by index.

mpEventSymbolTable stays untouched. Transitions containing event will be removed too.

Parameters:
index Index of event
Returns:
True, if event was in alphabet

Definition at line 1090 of file cfl_generator.cpp.

bool faudes::vGenerator::DelEventFromAlphabet ( Idx  index  ) 

Delete event from alphabet without consistency check.

The event is only deleted from mpAlphabet but not from transition relation.

Parameters:
index Index of event
Returns:
True, if event was in alphabet

Definition at line 1115 of file cfl_generator.cpp.

void faudes::vGenerator::DelEvents ( const EventSet rEvents  ) 

Delete a set of events from generator.

mpEventSymbolTable stays untouched. Transitions containing events will be removed too.

Parameters:
rEvents EventSet containing events to remove

Definition at line 1105 of file cfl_generator.cpp.

bool faudes::vGenerator::DelState ( const std::string &  rName  ) 

Delete a state from generator by name.

Cleans mpStates, mInitStates, mMarkedStates, mpTransRel and mpStateSymbolTable.

Parameters:
rName Name of state to delete. Will be erased in mpStateSymbolTable too
Returns:
True, if state was in stateset
Exceptions:
Exception 
  • Symbolic name not known (id 90)

Definition at line 1222 of file cfl_generator.cpp.

bool faudes::vGenerator::DelState ( Idx  index  ) 

Delete a state from generator by index.

Cleans mpStates, mInitStates, mMarkedStates, mpTransRel and mpStateSymbolTable.

Parameters:
index Index of state to delete.
Returns:
True, if state was in stateset

Definition at line 1207 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::DelStateFromStates ( StateSet::Iterator  pos  ) 

Delete a state from generator without consistency check.

This removes the state from mpStates and mpStateSymbolTable but doesn't touch mpTransRel, mInitStates and mMarkedStates. Index to delete is given by iterator.

Parameters:
pos StateSet::Iterator
Returns:
Iteraror to next state

Definition at line 1269 of file cfl_generator.cpp.

bool faudes::vGenerator::DelStateFromStates ( Idx  index  ) 

Delete a state from generator without consistency check.

This removes the state from mpStates and mpStateSymbolTable but doesn't touch mpTransRel, mInitStates and mMarkedStates.

Parameters:
index Index of state to delete.
Returns:
True, if state was in stateset

Definition at line 1262 of file cfl_generator.cpp.

void faudes::vGenerator::DelStates ( const StateSet rDelStates  ) 

Delete a set of states Cleans mpStates, mInitStates, mMarkedStates, mpTransrel, and mpStateSymboltable.

Parameters:
rDelStates StateSet containing states aka indicees to delete

Definition at line 1238 of file cfl_generator.cpp.

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

Write generator in debugging format to TokenWriter, see Type::DWrite for public wrappers.

Reimplement this method in derived classes to provide the std token io interface defined in the public section of Type.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write
pContext Write context to provide contextual information (ignored)
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Type.

Definition at line 2125 of file cfl_generator.cpp.

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

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

Virtual function for std token io interface. Context is ignored, label defaults to "Generator".

Parameters:
rTr TokenReader to read from
rLabel Section to read
pContext Read context to provide contextual information (ignored)
Exceptions:
Exception 
  • token mismatch (id 50, 51, 52, 80, 85)
  • IO error (id 1)

Reimplemented from faudes::Type.

Definition at line 2558 of file cfl_generator.cpp.

void faudes::vGenerator::DoSWrite ( TokenWriter rTw  )  const [protected, virtual]

Write generator statistics as comment to TokenWriter, see Type::SWrite for public wrappers.

Reimplement this method in derived classes to provide the std token io interface defined in the public section of Type.

Parameters:
rTw Reference to TokenWriter
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Type.

Reimplemented in faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >.

Definition at line 2390 of file cfl_generator.cpp.

void faudes::vGenerator::DotWrite ( const std::string &  rFileName  )  const [virtual]

Writes generator to dot input format.

The dot file format is specified by the graphiz package; see http://www.graphviz.org. The package includes the dot command line tool to generate a graphical representation of the generators graph. See also GraphWrite(). This functions sets the re-indexing to minimal indices.

Parameters:
rFileName File to write
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented in faudes::TdiagGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >.

Definition at line 2406 of file cfl_generator.cpp.

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

Write generator to TokenWriter, see Type::Write for public wrappers.

Virtual function for std token io interface. Context is ignored, label defaults to "Generator". If the tokenwriter writes to a file, state indices will be re-indext to start from 1.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write
pContext Write context to provide contextual information (ignored)
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Type.

Reimplemented in faudes::TdiagGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >.

Definition at line 2092 of file cfl_generator.cpp.

void faudes::vGenerator::DWriteStateSet ( TokenWriter rTw,
const StateSet rStateSet 
) const

Write a stateset to TokenWriter (debug version, no re-indexing).

Parameters:
rTw Reference to TokenWriter
rStateSet Reference to stateset
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2244 of file cfl_generator.cpp.

void faudes::vGenerator::DWriteTransRel ( TokenWriter rTw  )  const

Write transition relation to tokenwriter (debug version).

Parameters:
rTw Reference to TokenWriter
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2348 of file cfl_generator.cpp.

bool faudes::vGenerator::Empty ( void   )  const

Check if generator is empty (no states).

Returns:
True if state set is empty

Definition at line 601 of file cfl_generator.cpp.

void faudes::vGenerator::EnforceStateNames ( const std::string &  rTemplate  ) 

For all states without a symbolic name, assign a name based on suggested template and the index.

Parameters:
rTemplate basis for name generation

Definition at line 909 of file cfl_generator.cpp.

std::string faudes::vGenerator::EStr ( Idx  index  )  const

Pretty printable event name for index (eg for debugging).

Parameters:
index Event index
Returns:
std::string

Reimplemented in faudes::Executor.

Definition at line 2907 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::EventAttribute ( const std::string &  rName  )  const [virtual]

Event attribute lookup.

In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
rName 
Returns:
reference to attribute

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1653 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::EventAttribute ( Idx  index  )  const [virtual]

Event attribute lookup.

In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index 
Returns:
reference to attribute

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1643 of file cfl_generator.cpp.

void faudes::vGenerator::EventAttribute ( Idx  index,
const Type rAttr 
) [virtual]

Set attribute for existing event.

This version uses a dynamic cast to test the actual type of the provided attribute. An exception is thrown for an invalid attribute type. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index Event index
rAttr New attribute
Exceptions:
Exception 
  • Index not found in alphabet (id 60)
  • Cannot cast attribute (id 63)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1549 of file cfl_generator.cpp.

AttributeVoid * faudes::vGenerator::EventAttributep ( const std::string &  rName  )  [virtual]

Event attribute pointer to access Attribute methods.

If there are no attributes (plain vGenerator) this method returs 0. If there are attributes, an explicit default value may be inserted. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
rName 
Returns:
pointer to attribute

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1658 of file cfl_generator.cpp.

AttributeVoid * faudes::vGenerator::EventAttributep ( Idx  index  )  [virtual]

Event attribute pointer to access Attribute methods.

If there are no attributes (plain vGenerator) this method returs 0. If there are attributes, an explicit default value may be inserted. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index 
Returns:
pointer to attribute

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1648 of file cfl_generator.cpp.

void faudes::vGenerator::EventAttributes ( const EventSet rEventSet  )  [virtual]

Set attributes for existing events.

This version uses a dynamic cast to test the actual type of the provided attributes. An exception is thrown for an invalid attribute type.

Parameters:
rEventSet Set of attributed events
Exceptions:
Exception 
  • Element not found in alphabet (id 60)
  • Cannot cast attribute (id 63)

Definition at line 1557 of file cfl_generator.cpp.

Idx faudes::vGenerator::EventIndex ( const std::string &  rName  )  const

Event index lookup.

Parameters:
rName Name of event to lookup
Returns:
Valid index or 0 if name unknown to symboltable

Definition at line 724 of file cfl_generator.cpp.

void faudes::vGenerator::EventName ( Idx  index,
const std::string &  rName 
)

Set name for existing event.

Note: since the event symboltable is global, this affect all generators that refer to the specified event.

Parameters:
index Event index
rName New name
Exceptions:
Exception 
  • index not found in EventSymbolMap (id 42)
  • name already associated with another index (id 44)
  • event does not exist in generator (id 89)

Definition at line 734 of file cfl_generator.cpp.

std::string faudes::vGenerator::EventName ( Idx  index  )  const

Event name lookup.

Parameters:
index Index of event to look up
Returns:
Name or empty std::string if non-existent

Reimplemented in faudes::Executor.

Definition at line 729 of file cfl_generator.cpp.

bool faudes::vGenerator::EventRename ( Idx  event,
const std::string &  rNewName 
)

Rename event in this generator.

This method renames the specified event. It does so by removing and adding transitions. This does not effect other generators.

Parameters:
event Event to rename
rNewName New name
Returns:
True, if the new name did already exist

Definition at line 757 of file cfl_generator.cpp.

void faudes::vGenerator::EventSymbolTablep ( const vGenerator rOtherGen  )  [virtual]

Set EventSymbolTable as given by rOtherGen.

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

Parameters:
rOtherGen Other generator

Definition at line 719 of file cfl_generator.cpp.

void faudes::vGenerator::EventSymbolTablep ( SymbolTable pSymTab  )  [virtual]

Set EventSymbolTable to be used by this vGenerator.

This function sets the reference to the event symboltable. The current implementation in derived classes clears the generator, future versions may implement a re-indexing.

Parameters:
pSymTab Pointer to SymbolTable

Definition at line 713 of file cfl_generator.cpp.

SymbolTable * faudes::vGenerator::EventSymbolTablep ( void   )  const

Get Pointer to EventSymbolTable currently used by this vGenerator.

doxygen group

Returns:
Pointer to EventSymbolTable

Definition at line 703 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsEvent ( const std::string &  rName  )  const

Test existence of event in alphabet.

Parameters:
rName Event name
Returns:
True / false

Definition at line 1588 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsEvent ( Idx  index  )  const

Test existence of event in alphabet.

Parameters:
index Event index
Returns:
True / false

Definition at line 1583 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsInitState ( Idx  index  )  const

Test existence of state in mInitStates.

Parameters:
index State index
Returns:
true / false

Definition at line 1623 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsMarkedState ( Idx  index  )  const

Test existence of state in mMarkedStates.

Parameters:
index State index
Returns:
true / false

Definition at line 1633 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsState ( const std::string &  name  )  const

Test existence of state in state set.

Parameters:
name State name
Returns:
true / false

Definition at line 1608 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsState ( Idx  index  )  const

Test existence of state in state set.

Parameters:
index State index
Returns:
true / false

Definition at line 1603 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsTransition ( const Transition rTrans  )  const

test for transition

Parameters:
rTrans transition
Returns:
true / false

Definition at line 996 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsTransition ( Idx  x1,
Idx  ev,
Idx  x2 
) const

Test for transition given by x1, ev, x2.

Parameters:
x1 Predecessor state
ev Event
x2 Successor state
Returns:
true / false

Definition at line 1001 of file cfl_generator.cpp.

bool faudes::vGenerator::ExistsTransition ( const std::string &  rX1,
const std::string &  rEv,
const std::string &  rX2 
) const

Test for transition given by x1, ev, x2.

Parameters:
rX1 name of Predecessor state
rEv name of Event
rX2 name of Successor state
Returns:
true / false

Definition at line 1006 of file cfl_generator.cpp.

EventSet::Iterator faudes::vGenerator::FindEvent ( const std::string &  rName  )  const

Returns a iterator to event index in alphabet.

Parameters:
rName Event name of index to find
Returns:
Iterator to event index

Definition at line 1598 of file cfl_generator.cpp.

EventSet::Iterator faudes::vGenerator::FindEvent ( Idx  index  )  const

Returns a iterator to event index in alphabet.

Parameters:
index Index to find
Returns:
Iterator to event index

Definition at line 1593 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::FindInitState ( Idx  index  )  const

Iterator to state index in mInitStates.

Parameters:
index Index to find
Returns:
StateSet::Iterator to state index

Definition at line 1628 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::FindMarkedState ( Idx  index  )  const

Returns a iterator to state index in mMarkedStates.

Parameters:
index Index to find
Returns:
StateSet::Iterator to state index

Definition at line 1638 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::FindState ( const std::string &  rName  )  const

Returns a iterator to state with specified name.

Parameters:
rName name of state to find
Returns:
StateSet::Iterator to state

Definition at line 1613 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::FindState ( Idx  index  )  const

Returns a iterator to state index in state set.

Parameters:
index Index to find
Returns:
StateSet::Iterator to state index

Definition at line 1618 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::FindTransition ( const Transition rTrans  )  const

Iterator to transition.

Parameters:
rTrans transition
Returns:
iterator to transition or end() if not exists

Definition at line 979 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::FindTransition ( Idx  x1,
Idx  ev,
Idx  x2 
) const

Iterator to transition given by x1, ev, x2.

Parameters:
x1 Predecessor state
ev Event
x2 Successor state
Returns:
iterator to transition or End() if not exists

Definition at line 984 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::FindTransition ( const std::string &  rX1,
const std::string &  rEv,
const std::string &  rX2 
) const

iterator to transition given by x1, ev, x2

Parameters:
rX1 name of Predecessor state
rEv name of Event
rX2 name of Successor state
Returns:
iterator to transition or end() if not exists

Definition at line 989 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::GlobalAttribute ( void   )  const [virtual]

Global attribute lookup.

In a context where the attribute type is known, you may prefer the TaGenerator method.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1692 of file cfl_generator.cpp.

void faudes::vGenerator::GlobalAttribute ( const Type rAttr  )  [virtual]

Set global attribute.

The vGenerator does not have attributes, so this function throws an exception for any specified attribute different to AttributeVoid. The TaGenarator provides a re-implementation to actually set the global attribute.

Parameters:
rAttr Attribute
Exceptions:
Exception 
  • Cannot cast attribute (id 63)

Definition at line 1673 of file cfl_generator.cpp.

AttributeVoid * faudes::vGenerator::GlobalAttributep ( void   )  [virtual]

Get attribute pointer The global attribute allways exits.

For the vGenerator its of type AttributeVoid, the TaGenerator sets a nontrivial type. In a context where the attribute type is known, you may prefer the TaGenerator method.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1698 of file cfl_generator.cpp.

void faudes::vGenerator::GlobalAttributeTry ( const Type rAttr  )  [virtual]

Set global attribute.

The vGenerator does not have attributes, so this function does nothing. The TaGenarator provides a re-implementation to actually set the global attribute.

Parameters:
rAttr Attribute

Definition at line 1685 of file cfl_generator.cpp.

SymbolTable * faudes::vGenerator::GlobalEventSymbolTablep ( void   )  [static]

Get Pointer to global EventSymbolTable.

This is a static member of SymbolTable and used as default for all derived generator classes and instantiated objects.

Returns:
Pointer to global EventSymbolTable

Definition at line 708 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::GlobalVoid ( void   )  [static, protected]

Static default global attribute prototype (configures global attribute type).

Definition at line 48 of file cfl_generator.cpp.

void faudes::vGenerator::GraphWrite ( const std::string &  rFileName,
const std::string &  rOutFormat = "",
const std::string &  rDotExec = "dot" 
) const

Produce graphical representation of this generator.

This method calls the generator's DotWrite function and then processes the output with the dot tool from graphiz package. If no output format is given, try to guess from filename extension. See also ProcessDot().

Parameters:
rFileName Name of output file
rOutFormat Graphics file format, eg "png", "jpg", "svg"
rDotExec path/name of executable
Exceptions:
Exception 
  • IO errors (id 2)
  • error during systemcall for dot (id 3)

Definition at line 2925 of file cfl_generator.cpp.

Idx faudes::vGenerator::InitState ( void   )  const

Return initial state.

Returns:
Index of initial state
Exceptions:
Exception 
  • initial state does not exist uniquely (id 92)

Definition at line 1014 of file cfl_generator.cpp.

const StateSet & faudes::vGenerator::InitStates ( void   )  const

Const ref to initial states.

Returns:
StateSet

Definition at line 1735 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::InitStatesBegin ( void   )  const

Iterator to Begin() of mInitStates.

Returns:
Iterator to begin of mInitStates

Definition at line 1026 of file cfl_generator.cpp.

bool faudes::vGenerator::InitStatesEmpty ( void   )  const

Check if set of initial states are empty.

Returns:
True if mInitStates is empty

Definition at line 611 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::InitStatesEnd ( void   )  const

Iterator to End() of mInitStates.

Returns:
Iterator to end of mInitStates

Definition at line 1031 of file cfl_generator.cpp.

Idx faudes::vGenerator::InitStatesSize ( void   )  const

Get number of initial states.

Returns:
Number of initial states

Definition at line 586 of file cfl_generator.cpp.

std::string faudes::vGenerator::InitStatesToString ( void   )  const

Write set of initial states to a string (no re-indexing).

Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2273 of file cfl_generator.cpp.

void faudes::vGenerator::InjectAlphabet ( const EventSet rNewalphabet  ) 

Set mpAlphabet without consistency check.

Sets the alphabet incl attributes, if provided.

Parameters:
rNewalphabet EventSet with new alphabet

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1046 of file cfl_generator.cpp.

void faudes::vGenerator::InjectInitStates ( const StateSet rNewInitStates  ) 

Replace mInitStates with StateSet given as parameter without consistency checks.

Parameters:
rNewInitStates StateSet containing new mInitStates

Definition at line 1303 of file cfl_generator.cpp.

void faudes::vGenerator::InjectMarkedStates ( const StateSet rNewMarkedStates  ) 

Replace mMarkedStates with StateSet given as parameter without consistency checks.

Parameters:
rNewMarkedStates StateSet containing new marked states

Definition at line 1378 of file cfl_generator.cpp.

void faudes::vGenerator::InjectState ( Idx  index  ) 

Inject an existing state index into generators mStates Use with care! For use in performance optimized functions.

Parameters:
index State index to inject

Definition at line 1142 of file cfl_generator.cpp.

void faudes::vGenerator::InjectStates ( const StateSet rNewStates  ) 

Inject a complete state set without consistency checks (without attributes).

Parameters:
rNewStates StateSet

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1148 of file cfl_generator.cpp.

void faudes::vGenerator::InjectTransition ( const Transition rTrans  ) 

Set transition without consistency check.

Parameters:
rTrans Transition to insert

Definition at line 1425 of file cfl_generator.cpp.

void faudes::vGenerator::InjectTransRel ( const TransSet rNewtransrel  ) 

Set transition relation without consistency check (no attributes).

Parameters:
rNewtransrel TransRel to insert

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1431 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsEvent ( const std::string &  rName  ) 

Add named event to generator.

An entry in the mpEventSymbolTable will be made if event name is not known so far.

Parameters:
rName Name of the event to add
Returns:
New unique index

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1079 of file cfl_generator.cpp.

bool faudes::vGenerator::InsEvent ( Idx  index  ) 

Add an existing event to alphabet by index.

doxygen group It is an error to insert an event index that is not known to the mpEventSymbolTable.

Parameters:
index Event index
Returns:
True, if event was new to alphabet

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1073 of file cfl_generator.cpp.

void faudes::vGenerator::InsEvents ( const EventSet events  ) 

Add new named events to generator.

If the event allready exists, the attribute is maintained.

Parameters:
events EventSet

Definition at line 1085 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsInitState ( const std::string &  rName  ) 

Create a new named state and set as initial state.

Parameters:
rName Name of the state to add
Returns:
Index of new unique state

Definition at line 1166 of file cfl_generator.cpp.

bool faudes::vGenerator::InsInitState ( Idx  index  ) 

Add (perhaps new) state to generator and turn it into a initial state.

Parameters:
index State to insert
Returns:
True to indicate that state was new to generator

Definition at line 1175 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsInitState ( void   ) 

Create new anonymous state and set as initial state.

Returns:
Index of new unique

Definition at line 1157 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsMarkedState ( const std::string &  rName  ) 

Create a new named state and set as marked state.

Parameters:
rName Name of the state to add
Returns:
Index of new unique state

Definition at line 1198 of file cfl_generator.cpp.

bool faudes::vGenerator::InsMarkedState ( Idx  index  ) 

Add (perhaps new) state to generator and turn it into a marked state.

Parameters:
index State to insert
Returns:
True to indicate that state was new to generator

Definition at line 1191 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsMarkedState ( void   ) 

Create new anonymous state and set as marked state.

Returns:
Index of new unique state

Definition at line 1182 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsState ( const std::string &  rName  ) 

Add new named state to generator.

Parameters:
rName Name of the state to add
Returns:
Index of new unique state
Exceptions:
Exception Name already exists (id 44)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1134 of file cfl_generator.cpp.

bool faudes::vGenerator::InsState ( Idx  index  ) 

Add (perhaps new) state to generator.

Returns:
True to indicate that state was new to generator

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1128 of file cfl_generator.cpp.

Idx faudes::vGenerator::InsState ( void   ) 

Add new anonymous state to generator.

Returns:
Index of new unique state

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1122 of file cfl_generator.cpp.

bool faudes::vGenerator::IsAccessible ( void   )  const

Check if generator is accessible.

Returns:
True if generator is accesssible

Definition at line 1860 of file cfl_generator.cpp.

bool faudes::vGenerator::IsCoaccessible ( void   )  const

Check if generator is Coaccessible.

Returns:
True if generator is coaccessible

Definition at line 1902 of file cfl_generator.cpp.

bool faudes::vGenerator::IsComplete ( const StateSet rStates  )  const

Check if generator is complete.

Same as IsComplete(void), however, only the specified states are considered. The rational is to e.g. apply the test to accessible states only. In that case, the test is equivalent to completeness of the generated language.

Parameters:
rStates Set of state indices to restrict the completeness test
Returns:
True if generator is relatively complete

Definition at line 1958 of file cfl_generator.cpp.

bool faudes::vGenerator::IsComplete ( void   )  const

Check if generator is complete.

A generator is considered complete, if each state has at least one successor state. If the generator is trim, completeness is equivalent to completeness of the markede language, ie forall s in Lm(G) there exists r in Lm(G) with s<r

Returns:
True if generator is complete

Definition at line 1974 of file cfl_generator.cpp.

bool faudes::vGenerator::IsDeterministic ( void   )  const

Check if generator is deterministic.

We insict in exactly one initial state and for each state and event at most one transition (to some successor state). This definition matches the situation where a generator is defined to have one inital state as opposed to a set set of initial states (which may be empty). In particular, the generated language of a determinitstic generator allways includes the empty string and therefor is not the empty set. When focus is on the marked language only, this issue does not exists.

Returns:
True if generator is deterministic

Definition at line 2069 of file cfl_generator.cpp.

bool faudes::vGenerator::IsOmegaTrim ( void   )  const

Check if generator is omega-trim.

Returns true if all states are accessible, coacessible, and have a successor state.

Returns:
True if generator is omega-trim

Definition at line 2057 of file cfl_generator.cpp.

bool faudes::vGenerator::IsTrim ( void   )  const

Check if generator is trim.

Returns true if all states are rechable and coreachale.

Returns:
True if generator is trim

Definition at line 1939 of file cfl_generator.cpp.

const StateSet & faudes::vGenerator::MarkedStates ( void   )  const

Return const ref of marked states.

Returns:
StateSet

Definition at line 1740 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::MarkedStatesBegin ( void   )  const

Iterator to Begin() of mMarkedStates.

Returns:
iterator to Begin of mMarkedStates

Definition at line 1036 of file cfl_generator.cpp.

bool faudes::vGenerator::MarkedStatesEmpty ( void   )  const

Check if set of marked states are empty.

Returns:
True if mMarkedStates is empty

Definition at line 616 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::MarkedStatesEnd ( void   )  const

Iterator to End() of mMarkedStates.

Returns:
iterator to End of mMarkedStates

Definition at line 1041 of file cfl_generator.cpp.

Idx faudes::vGenerator::MarkedStatesSize ( void   )  const

Get number of marked states.

Returns:
Number of marked states

Definition at line 591 of file cfl_generator.cpp.

std::string faudes::vGenerator::MarkedStatesToString ( void   )  const

Write set of marked states to a string (no re-indexing).

Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2268 of file cfl_generator.cpp.

void faudes::vGenerator::MinimizeAlphabet ( void   ) 

Set the alphabet to used events.

Definition at line 1745 of file cfl_generator.cpp.

Idx faudes::vGenerator::MinStateIndex ( Idx  index  )  const

Get state index as is it will be written to file.

Parameters:
index state index
Returns:
minimal index

Definition at line 630 of file cfl_generator.cpp.

const std::map< Idx, Idx > & faudes::vGenerator::MinStateIndexMap ( void   )  const

Get state index translation map.

Returns:
minimal index map

Definition at line 643 of file cfl_generator.cpp.

void faudes::vGenerator::Move ( vGenerator rGen  )  [virtual]

Destructive copy to other vGenerator.

Copy method with increased performance at the cost of invalidating the source data. If attribute types of source and destination differ, a std copy is invoked.

Parameters:
rGen Destination for copy operation.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 306 of file cfl_generator.cpp.

const std::string & faudes::vGenerator::Name ( void   )  const [virtual]

Get generator's name.

Returns:
Name of generator

Reimplemented from faudes::Type.

Reimplemented in faudes::Executor.

Definition at line 481 of file cfl_generator.cpp.

void faudes::vGenerator::Name ( const std::string &  rName  )  [virtual]

Set the generator's name.

doxygen group

Parameters:
rName Generator name

Reimplemented from faudes::Type.

Definition at line 475 of file cfl_generator.cpp.

vGenerator * faudes::vGenerator::New ( void   )  const [virtual]

Construct on heap.

Technically not a constructor, this function creates a vGenerator with the same event symboltable. It is the callers reponsebilty to delete the object when no longer needed. Derived classes must reimplement this function to create an object of the same class and the same event symboltable. The StateNamesEnabled indicator should be copied, too.

Returns:
New vGenerator

Reimplemented from faudes::Type.

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TdiagGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioConstraint< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioController< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioEnvironment< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::THioPlant< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TIoSystem< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TmtcGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioConstraint< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioController< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, faudes::THioEnvironment< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >, and faudes::THioPlant< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 159 of file cfl_generator.cpp.

void faudes::vGenerator::NewCore ( void   )  [protected, virtual]
EventSet faudes::vGenerator::NewEventSet ( void   )  const

Create EventSet with generator's EventSymbolTable (on stack).

Returns:
New empty EventSet on stack

Definition at line 803 of file cfl_generator.cpp.

EventSet * faudes::vGenerator::NewEventSetp ( void   )  const

Create EventSet with generator's EventSymbolTable (on heap).

Returns:
Pointer to new empty EventSet on heap

Definition at line 810 of file cfl_generator.cpp.

bool faudes::vGenerator::OmegaTrim ( void   ) 

Make generator omega-trim.

This function removes states such that the generator becomes omega trim while not affecting the induced omega language.

The implementation first make the generator accessible and then iteratively removes state that either never reach a marked state or that are guaranteed to eventually reach a terminal state. There might be a more efficient approach.

Returns:
True if resulting generator contains at least one initial state and at least one marked state.

Definition at line 2036 of file cfl_generator.cpp.

bool faudes::vGenerator::operator< ( const vGenerator rOtherGen  )  const [inline]

Order for sorting containers of generators.

Definition at line 2612 of file cfl_generator.h.

void faudes::vGenerator::ReadAlphabet ( TokenReader rTr  )  [protected]

Read the generator's alphabet from a TokenReader.

Parameters:
rTr Reference to TokenReader
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2609 of file cfl_generator.cpp.

void faudes::vGenerator::ReadAlphabet ( const std::string &  rFileName  )  [protected]

Read the generator's alphabet from a file.

Parameters:
rFileName File to read from
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2603 of file cfl_generator.cpp.

void faudes::vGenerator::ReadGeneratorName ( TokenReader rTr  )  [protected]

Read the generator's name from a TokenReader.

Parameters:
rTr Reference to TokenReader
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2596 of file cfl_generator.cpp.

void faudes::vGenerator::ReadGeneratorName ( const std::string &  rFileName  )  [protected]

Read the generator's name from a file.

Parameters:
rFileName File to read from
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2589 of file cfl_generator.cpp.

void faudes::vGenerator::ReadStates ( TokenReader rTr  )  [protected]

Read the generator's stateset from a TokenReader.

This sets up the StateSymbolTable

Parameters:
rTr Reference to TokenReader
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2622 of file cfl_generator.cpp.

void faudes::vGenerator::ReadStates ( const std::string &  rFileName  )  [protected]

Read the generator's state set from a file.

This sets up the StateSymbolTable.

Parameters:
rFileName File to read from
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2616 of file cfl_generator.cpp.

void faudes::vGenerator::ReadStateSet ( TokenReader rTr,
const std::string &  rLabel,
StateSet rStateSet 
) const

Read a state set.

Refer to the generators state symboltable while reading a state set. Ignore any attributes.

Parameters:
rTr Reference to TokenReader
rLabel Label of set in source
rStateSet Destination state set
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52, 80, 85)

Definition at line 2719 of file cfl_generator.cpp.

void faudes::vGenerator::ReadTransRel ( TokenReader rTr  )  [protected]

Read the generator's transition relation from a TokenReader.

Parameters:
rTr Reference to TokenReader
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2817 of file cfl_generator.cpp.

void faudes::vGenerator::ReadTransRel ( const std::string &  rFileName  )  [protected]

Read the generator's transition relation from a file.

Parameters:
rFileName File to read from
Exceptions:
Exception 
  • IO errors (id 1)
  • token mismatch (id 50, 51, 52)

Definition at line 2811 of file cfl_generator.cpp.

void faudes::vGenerator::RestrictAlphabet ( const EventSet rNewalphabet  ) 

Restricts mpAlphabet without consistency check.

Maintains attributes if any.

Parameters:
rNewalphabet EventSet with alphabet

Definition at line 1060 of file cfl_generator.cpp.

void faudes::vGenerator::SetDefaultStateNames ( void   ) 

Assign each state a default name based on its index.

Definition at line 900 of file cfl_generator.cpp.

void faudes::vGenerator::SetInitState ( const std::string &  rName  ) 

Set an existing state as initial state by name.

Parameters:
rName Name of state to set as initial state
Exceptions:
Exception 
  • State name not known in generator (id 90)

Definition at line 1289 of file cfl_generator.cpp.

void faudes::vGenerator::SetInitState ( Idx  index  ) 

Set an existing state as initial state by index.

Parameters:
index Index of state to set as initial state
Exceptions:
Exception 
  • State index not found in generator (id 91)

Definition at line 1275 of file cfl_generator.cpp.

void faudes::vGenerator::SetMarkedState ( const std::string &  rName  ) 

Set an existing state as marked state by name.

Parameters:
rName Name of state to set as marked state
Exceptions:
Exception 
  • State name not known in generator (id 90)

Definition at line 1364 of file cfl_generator.cpp.

void faudes::vGenerator::SetMarkedState ( Idx  index  ) 

Set an existing state as marked state by index.

Parameters:
index Index of state to set as initial state
Exceptions:
Exception 
  • State index not found in generator (id 91)

Definition at line 1350 of file cfl_generator.cpp.

void faudes::vGenerator::SetMinStateIndexMap ( void   )  const

Set minimal index map for file io of generator states.

This function is implemented as fake-const to allow for const Write function.

Definition at line 649 of file cfl_generator.cpp.

bool faudes::vGenerator::SetTransition ( const Transition rTransition  ) 

Add a transition to generator.

States and event must already exist.

Parameters:
rTransition Transition
Returns:
True, if the transition was new the generator
Exceptions:
Exception 
  • state or event not in generator (id 95)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1474 of file cfl_generator.cpp.

bool faudes::vGenerator::SetTransition ( const std::string &  rX1,
const std::string &  rEv,
const std::string &  rX2 
)

Add a transition to generator by names.

Statename and eventname must already exist.

Parameters:
rX1 Predecessor state name
rEv Event name
rX2 Successor state name
Returns:
True, if the transition was new the generator
Exceptions:
Exception 
  • state or event not in generator (id 95)
  • state name not known (id 90)
  • event name not known (id 66)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1438 of file cfl_generator.cpp.

bool faudes::vGenerator::SetTransition ( Idx  x1,
Idx  ev,
Idx  x2 
)

Add a transition to generator by indices.

States and event must already exist.

Parameters:
x1 Predecessor state index
ev Event index
x2 Successor state index
Returns:
True, if the transition was new the generator
Exceptions:
Exception 
  • state or event not in generator (id 95)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1469 of file cfl_generator.cpp.

Idx faudes::vGenerator::Size ( void   )  const

Get generator size (number of states).

Returns:
Number of states

Definition at line 526 of file cfl_generator.cpp.

std::string faudes::vGenerator::SStr ( Idx  index  )  const

Return pretty printable state name for index (eg for debugging).

Parameters:
index State index
Returns:
std::string

Reimplemented in faudes::Executor.

Definition at line 2912 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::StateAttribute ( Idx  index  )  const [virtual]

State attribute lookup.

In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index State index
Returns:
Ref to attribute of state

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1663 of file cfl_generator.cpp.

void faudes::vGenerator::StateAttribute ( Idx  index,
const Type rAttr 
) [virtual]

Set attribute for existing state.

This version uses a dynamic cast to test the actual type of the provided attribute. An exception is thrown for an invalid attribute type. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index State index
rAttr New attribute
Exceptions:
Exception 
  • Index not found in Stateset (id 60)
  • Cannot cast attribute (id 63)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1570 of file cfl_generator.cpp.

AttributeVoid * faudes::vGenerator::StateAttributep ( Idx  index  )  [virtual]

State attribute pointer to access Attribute methods.

If there are no attributes (plain vGenerator) this method returns 0. If there are attributes, an explicit default value may be inserted. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
index State index
Returns:
Pointer to attribute of state

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1668 of file cfl_generator.cpp.

Idx faudes::vGenerator::StateIndex ( const std::string &  rName  )  const

State index lookup.

Parameters:
rName 
Returns:
Valid index (or 0 for non-existent)

Definition at line 829 of file cfl_generator.cpp.

void faudes::vGenerator::StateName ( Idx  index,
const std::string &  rName 
)

Set name of state.

Parameters:
index Index
rName Name
Exceptions:
Exception 
  • name already associated with another index (id 44)
  • state does not exist in generator (id 90)

Definition at line 839 of file cfl_generator.cpp.

std::string faudes::vGenerator::StateName ( Idx  index  )  const

State name lookup.

Parameters:
index 
Returns:
name (or empty string if no such exists)

Reimplemented in faudes::Executor.

Definition at line 834 of file cfl_generator.cpp.

void faudes::vGenerator::StateNamesEnabled ( bool  flag  ) 

Enable/disable libFAUEDS functions to automatically generate state names.

Parameters:
flag True enables statenames / false disables them

Definition at line 890 of file cfl_generator.cpp.

bool faudes::vGenerator::StateNamesEnabled ( void   )  const

Whether libFAUEDS functions are requested to generate state names.

Most libFAUDES functions introduce new states to a generator can be enabled to also assign (more or less sensible) names to those states. This feature is purely cosmetic and may be disabled for performance reasons.

Returns:
False if ClearStateNames() was called

Definition at line 885 of file cfl_generator.cpp.

void faudes::vGenerator::StateNamesEnabledDefault ( bool  flag  )  [static]

Sets the default for automatic state name generation.

This flag takes effect only on generators newly created by the default constructor. The copy constructor copies the state name flag from the source generator. See also StateNamesEnabled(bool).

Parameters:
flag True enables statenames / false disables them

Definition at line 895 of file cfl_generator.cpp.

const StateSet & faudes::vGenerator::States ( void   )  const

Return reference to state set.

Returns:
StateSet reference incl actual attribute type

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1710 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::StatesBegin ( void   )  const

Iterator to Begin() of state set.

Returns:
Iterator to begin of state set

Definition at line 939 of file cfl_generator.cpp.

StateSet::Iterator faudes::vGenerator::StatesEnd ( void   )  const

Iterator to End() of state set.

Returns:
Iterator to end of state set

Definition at line 944 of file cfl_generator.cpp.

std::string faudes::vGenerator::StateSetToString ( const StateSet rStateSet  )  const

Write a stateset to string (no re-indexing).

Uses WriteStateSet(TokenWriter& rTw, const StateSet&) const to write the specified state set to a string referring to this generators state names.

Parameters:
rStateSet Reference to stateset
Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2179 of file cfl_generator.cpp.

std::string faudes::vGenerator::StateSetToText ( const StateSet rStateSet  )  const

Write a stateset to formated text (no re-indexing).

Uses WriteStateSet(TokenWriter& rTw, const StateSet&) const to write the specified state set to a string referring to this generators state names.

Parameters:
rStateSet Reference to stateset
Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2186 of file cfl_generator.cpp.

std::string faudes::vGenerator::StatesToString ( void   )  const

Write stateset of this generator to a string (no re-indexing).

Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2258 of file cfl_generator.cpp.

std::string faudes::vGenerator::StatesToText ( void   )  const

Write stateset of this generator to formated text (no re-indexing).

Returns:
std::string
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2263 of file cfl_generator.cpp.

const StateSet & faudes::vGenerator::StatesVoid ( void   )  [static, protected]

Static default state set prototype (incl.

attribute type)

Definition at line 40 of file cfl_generator.cpp.

void faudes::vGenerator::StateSymbolTable ( const SymbolTable rSymTab  ) 

Set StateSymbolTable.

By convention, state names and indices are local to the respective generator. It is most unlikely that you want to use this function.

Returns:
Pointer to mpStateSymbolTable

Definition at line 823 of file cfl_generator.cpp.

const SymbolTable & faudes::vGenerator::StateSymbolTable ( void   )  const

Get StateSymbolTable.

doxygen group

Returns:
ref to state-symboltable

Definition at line 818 of file cfl_generator.cpp.

StateSet faudes::vGenerator::TerminalStates ( const StateSet rStates  )  const

Compute set of terminal states.

A terminal state is a state with no successor state. This function returns the the set terminal states contained in the specified state ste.

Parameters:
rStates Set of state indices to restrict the search
Returns:
Set of terminal states.

Definition at line 2010 of file cfl_generator.cpp.

StateSet faudes::vGenerator::TerminalStates ( void   )  const

Compute set of terminal states.

A terminal state is a state with no successor state. If and only if the set of terminal states is empty, the generator is complete.

Returns:
Set of terminal states.

Definition at line 2030 of file cfl_generator.cpp.

const AttributeVoid & faudes::vGenerator::TransAttribute ( const Transition rTrans  )  const [virtual]

Transition attribute lookup.

In a context where the attribute type is known, you may prefer the TaGenerator method.

Returns:
Attribute

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1533 of file cfl_generator.cpp.

void faudes::vGenerator::TransAttribute ( const Transition rTrans,
const Type rAttr 
) [virtual]

Set attribute for existing transition.

This version uses a dynamic cast to test the actual type of the provided attribute. An exception is thrown for an invalid attribute type. In a context where the attribute type is known, you may prefer the TaGenerator method.

Parameters:
rTrans Transition
rAttr New attribute
Exceptions:
Exception 
  • Transition not found in transition relation(id 60)
  • Cannot cast attribute (id 63)

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1520 of file cfl_generator.cpp.

AttributeVoid * faudes::vGenerator::TransAttributep ( const Transition rTrans  )  [virtual]

Transition attribute pointer to access Attribute methods.

If there are no attributes (plain vGenerator) this method returns 0. If there are attributes, an explicit default value may be inserted. In a context where the attribute type is known, you may prefer the TaGenerator method.

Returns:
Attribute pointer

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1527 of file cfl_generator.cpp.

Transition faudes::vGenerator::TransitionByNames ( const std::string &  rX1,
const std::string &  rEv,
const std::string &  rX2 
) const

Convebience function.

Parameters:
rX1 Name of Predecessor state
rEv Name of Event
rX2 Name of Successor state
Returns:
Transition as specified.

Definition at line 1729 of file cfl_generator.cpp.

void faudes::vGenerator::TransRel ( TransSetX1EvX2 res  )  const

Get copy of trantision relation sorted by other compare operator, e.g.

"x2,ev,x1"

Parameters:
res resulting transition relation

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1721 of file cfl_generator.cpp.

const TransSet & faudes::vGenerator::TransRel ( void   )  const

Return reference to transition relation.

Returns:
TransRel

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 1715 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelBegin ( Idx  x1,
Idx  ev 
) const

iterator to begin of transitions with x1 as predecessor state and event ev.

Parameters:
x1 Predecessor state
ev Event
Returns:
iterator to begin of transitions with x1 and ev

Definition at line 969 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelBegin ( Idx  x1  )  const

Iterator to begin of transitions with x1 as predecessor state.

Parameters:
x1 Predecessor state
Returns:
iterator to begin of transitions with x1

Definition at line 959 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelBegin ( void   )  const

Iterator to Begin() of transition relation.

Returns:
Iterator to Begin of mpTransRel

Definition at line 949 of file cfl_generator.cpp.

bool faudes::vGenerator::TransRelEmpty ( void   )  const

Check if transition relation is empty.

Returns:
True if transition relation is empty

Definition at line 606 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelEnd ( Idx  x1,
Idx  ev 
) const

Iterator to end of transitions with x1 as predecessor state and event ev.

Note: Set the End(x1,ev) iterator to a variable, so it won't be recalculated every iteration.

Parameters:
x1 Predecessor state
ev Event
Returns:
iterator to end of transitions with x1 and ev (one after last matching transition)

Definition at line 974 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelEnd ( Idx  x1  )  const

iterator to end of transitions with x1 as predecessor state.

Note: Set the End(x1) iterator to a variable, so it won't be recalculated every iteration.

Parameters:
x1 Predecessor state
Returns:
iterator to end of transitions with x1 (one after last matching transition)

Definition at line 964 of file cfl_generator.cpp.

TransSet::Iterator faudes::vGenerator::TransRelEnd ( void   )  const

Iterator to End() of transition relation.

Returns:
Iterator to End of mpTransRel

Definition at line 954 of file cfl_generator.cpp.

Idx faudes::vGenerator::TransRelSize ( void   )  const

Get number of transitions.

Returns:
Number of transitions

Definition at line 581 of file cfl_generator.cpp.

StateSet faudes::vGenerator::TransRelStateSpace ( Idx  x1  )  const

Return the successor states of state x1.

Returns:
StateSet

Definition at line 1796 of file cfl_generator.cpp.

StateSet faudes::vGenerator::TransRelStateSpace ( void   )  const

Return the states covered by transitions.

Returns:
StateSet

Definition at line 1785 of file cfl_generator.cpp.

std::string faudes::vGenerator::TransRelToString ( void   )  const

Write transition relation to string (no re-indexing).

Definition at line 2285 of file cfl_generator.cpp.

std::string faudes::vGenerator::TransRelToText ( void   )  const

Write transition relation to formated text (no re-indexing).

Definition at line 2292 of file cfl_generator.cpp.

const TransSet & faudes::vGenerator::TransRelVoid ( void   )  [static, protected]

Static default transition relation prototype (incl.

attribute type)

Definition at line 44 of file cfl_generator.cpp.

bool faudes::vGenerator::Trim ( void   ) 

Make generator trim.

This function removes all states are not accessible or not coaccessible. In other words: only those states are kept, that contribute to that marked language.

Returns:
True if resulting generator contains at least one initial state and at least one marked state.

Definition at line 1923 of file cfl_generator.cpp.

StateSet faudes::vGenerator::TrimSet ( void   )  const

Compute set of trim states.

Definition at line 1914 of file cfl_generator.cpp.

std::string faudes::vGenerator::TStr ( const Transition rTrans  )  const

Return pretty printable transition (eg for debugging).

Parameters:
rTrans Transition
Returns:
std::string

Definition at line 2919 of file cfl_generator.cpp.

std::string faudes::vGenerator::UniqueEventName ( const std::string &  rName  )  const

Create a new unique symbolic event name.

See also SymbolTable::UniqueSymbol().

Parameters:
rName suggestion for new state name

Definition at line 749 of file cfl_generator.cpp.

std::string faudes::vGenerator::UniqueStateName ( const std::string &  rName  )  const

Create a new unique symbolic state name.

See also SymbolTable::UniqueSymbol().

Parameters:
rName suggestion for new state name

Definition at line 921 of file cfl_generator.cpp.

EventSet faudes::vGenerator::UnusedEvents ( void   )  const

Return unused events.

Returns:
EventSet

Definition at line 1760 of file cfl_generator.cpp.

void faudes::vGenerator::UpdateCore ( void   )  [protected, virtual]
EventSet faudes::vGenerator::UsedEvents ( void   )  const

Return used events (executed in transitions).

doxygen group

Returns:
EventSet

Definition at line 1750 of file cfl_generator.cpp.

bool faudes::vGenerator::Valid ( void   )  [virtual]

Check if generator is valid.

Performs internal consistency tests, This method is intendend to test generators that have been manipulated by methods without consistency tests, eg InjectAlphabet.

Returns:
True for success

Reimplemented in faudes::TaGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, faudes::TtGenerator< GlobalAttr, StateAttr, EventAttr, TransAttr >, and faudes::TaGenerator< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid >.

Definition at line 486 of file cfl_generator.cpp.

void faudes::vGenerator::Version ( const std::string &  rPattern,
const std::string &  rReplacement,
vGenerator rResGen 
) const [virtual]

Create another version of this generator.

Assembles a copy of this generator, however, with versioned events. The new event names are created by replacing all substrings matching a specified string pattern by a replacement string. State names and indices as well as any attributes are maintained.

Parameters:
rPattern String value to be replaced in event names
rReplacement String value to be inserted in event names in place of rPattern
rResGen Resulting versioned generator
Exceptions:
Exception 
  • Source must not match destination (id 96)

Definition at line 411 of file cfl_generator.cpp.

void faudes::vGenerator::Version ( Idx  version,
vGenerator rResGen 
) const [virtual]

Create another version of this generator.

Assembles a copy of this generator, however, with versioned events. The new event names are created by appending an underscore and a numeric index. State names and indices as well as any attributes are maintained.

Parameters:
version Numeric value to be appended to event names
rResGen Resulting versioned generator
Exceptions:
Exception 
  • Source must not match destination (id 96)

Definition at line 360 of file cfl_generator.cpp.

void faudes::vGenerator::Version ( const std::string &  rVersion,
vGenerator rResGen 
) const [virtual]

Create another version of this generator.

Assembles a copy of this generator, however, with versioned events. The new event names are created by appending an underscore and a specified string. State names and indices as well as any attributes are maintained.

Parameters:
rVersion String value to be appended to event names
rResGen Resulting versioned generator
Exceptions:
Exception 
  • Source must not match destination (id 96)

Definition at line 368 of file cfl_generator.cpp.

void faudes::vGenerator::WriteAlphabet ( TokenWriter rTw  )  const

Write generators alphabet to tokenwriter.

Parameters:
rTw Reference to TokenWriter
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2168 of file cfl_generator.cpp.

void faudes::vGenerator::WriteAlphabet ( void   )  const

Write generators alphabet to console.

doxygen group

Definition at line 2155 of file cfl_generator.cpp.

void faudes::vGenerator::WriteStateSet ( TokenWriter rTw,
const StateSet rStateSet 
) const

Write a stateset to TokenWriter.

All output of state sets done with this function. Recall that a StateSet technically is a set of plain indices, no reference to symbolic names. Thus, it is only the context of a Generator that provides the symbolic names for file output.

Output of state sets always uses the mMinStateIndexMap to re-index states. However, this map is only set up automatically for file output. If You require re-indexed output to eg a string, you must set up the map by calling SetMinStateIndexMap(). To ensure that no re-indexing takes place, call ClearMinStateIndexMap().

Parameters:
rTw Reference to TokenWriter
rStateSet Reference to stateset
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2195 of file cfl_generator.cpp.

void faudes::vGenerator::WriteStateSet ( const StateSet rStateSet  )  const

Write a stateset to console (no re-indexing).

Uses WriteStateSet(TokenWriter& rTw, const StateSet&) const to write the specified state set to console referring to this generators state names.

Parameters:
rStateSet Reference to stateset

Definition at line 2173 of file cfl_generator.cpp.

void faudes::vGenerator::WriteTransRel ( TokenWriter rTw  )  const

Write transition relation to tokenwriter (no re-indexing).

Re-indexing and symbolic state names are handled in the same way as with state sets: this function refers to the generators state symboltable to obtain state names and uses the mMinStateIndexMap to re-index the output.

Parameters:
rTw Reference to TokenWriter
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2300 of file cfl_generator.cpp.

void faudes::vGenerator::WriteTransRel ( void   )  const

Write transition relation to console (no re-indexing).

Definition at line 2279 of file cfl_generator.cpp.

void faudes::vGenerator::XDotWrite ( const std::string &  rFileName  )  const [virtual]

Writes generator to dot input format for export to VioLib.

Variant of DotWrite() using strategic state and event names to simplify import to VioLib (qt widget for graphical representation of FAUDES generators).

Parameters:
rFileName File to write
Exceptions:
Exception 
  • IO errors (id 2)

Definition at line 2517 of file cfl_generator.cpp.


Member Data Documentation

Number of generator.

Definition at line 2626 of file cfl_generator.h.

Initial states.

Definition at line 2683 of file cfl_generator.h.

Marked states.

Definition at line 2686 of file cfl_generator.h.

Map State indices to consecutive indices.

Definition at line 2689 of file cfl_generator.h.

std::string faudes::vGenerator::mMyName [protected]

Name of generator.

Definition at line 2623 of file cfl_generator.h.

Pointer to alphabet (actual type depends on attributes).

Definition at line 2647 of file cfl_generator.h.

Pointer to Event symbol table.

Definition at line 2638 of file cfl_generator.h.

Pointer to lobal attribute (actual type depends on attributes).

Definition at line 2656 of file cfl_generator.h.

Pointer to state set (actual type depends on attributes).

Definition at line 2650 of file cfl_generator.h.

Pointer to State symbol table.

Definition at line 2635 of file cfl_generator.h.

Pointer to ransition relation (actual type depends on attributes).

Definition at line 2653 of file cfl_generator.h.

Idx faudes::vGenerator::msObjectCount = 0 [static, protected]

Number of generator objects.

Definition at line 2629 of file cfl_generator.h.

bool faudes::vGenerator::msStateNamesEnabledDefault = true [static, protected]

Default for automatic statenames.

Definition at line 2644 of file cfl_generator.h.

Automatic state names.

Definition at line 2641 of file cfl_generator.h.

State symbol table (local per Generator).

Definition at line 2632 of file cfl_generator.h.

Pointer to alphabet prototype (incl.

attribute type)

Definition at line 2659 of file cfl_generator.h.

Pointer to global attribute prototype (configures global attribute type).

Definition at line 2668 of file cfl_generator.h.

Pointer to state set prototype (incl.

attribute type)

Definition at line 2662 of file cfl_generator.h.

Pointer to transition relation prototype (incl.

attribute type)

Definition at line 2665 of file cfl_generator.h.


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

libFAUDES 2.18b --- 2010-12-17 --- c++ source docu by doxygen 1.6.3