VR-Forces 4.0.4 Class Documentation
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends
DtSimStatement Class Reference

8 bytes total More...

Inheritance diagram for DtSimStatement:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DtSimStatement ()
 Default constructor.
 DtSimStatement (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL)
 Usual constructor NOTE: "name" should be the statement type string.
 DtSimStatement (const DtSimStatement &orig, DtReaderWriterRegistry *parentRegistry=NULL)
 Copy constructor.
virtual ~DtSimStatement ()
 Destructor.
virtual bool init ()
 Base class init does nothing, but this will be called by create, in case any other deriving class needs to do virtual allocation.
DtSimStatementoperator= (const DtSimStatement &orig)
 Assignment operator (protected because this is an abstract base class).
virtual DtSimStatementclone (DtReaderWriterRegistry *parentRegistry=NULL) const =0
 virtual copy constructor A typical clone function.
virtual int type () const =0
 Returns the type of statement Type (defined in simStmtTypes.h)
virtual bool validate ()
 Checks the statement for validity, and potentially fixes the statement to be valid.
virtual void execute (DtPlan &planContext)=0
 Execute the current statement and make any changes to the Plan state as appropriate.
virtual void step (DtPlan &planContext)
 Asks the statement to step the context DtPlan to the next statement.
virtual bool translateIndex (DtStmtIndex &index)
 Translate an old statement index pointer to point to a statement in the current Plan.
virtual void translateIndices (const DtList &indices)
 Same as translateIndex, except it operates on a DtList of DtStmtIndex's, and doesn't return a value.
DtSimStatementnextStmt () const
 Return next (previous) statements in the block, or NULL if hit the end (beginning) of the list.
DtSimStatementprevStmt () const
virtual DtStmtIdType statementId () const
 Statement Id accessors.
virtual void setStatementId (DtStmtIdType arg)
virtual DtSimBlockparentBlock () const
 The parent statement Block.
virtual void setParentBlock (DtSimBlock *arg)
virtual int subBlockCount () const
 Get the number of blocks nested inside this statement.
virtual DtSimBlocksubBlock (int index)
 Get a pointer to any particular block nested inside this statement.
virtual
DtRecursiveSimStatementIterator
spawnRecursiveIterator () const
 Spawns an iterator that iterates over the subblocks in this statement, and all their children, sub children, etc.
virtual DtSimStatementlookupStatement (DtStmtIdType statementId)
 If statementId matches our statement, returns a pointer to us.
virtual DtString stringRep (int subBlockIndex=DtSR_STMT) const =0
 Get a readable string representation of this statement.
virtual char * netRep ()
virtual int netRepSize () const
 Returns sizeof(DtNetSimStatement).
virtual bool setFromNet (const char *contentBuffer, unsigned contentSize)
 Extracts statement Id from buffer.
virtual bool setToNet ()
 Casts myNetRep to DtNetSimStatement* and fills in structure.
virtual bool isSameStatement (DtSimStatement *)
 Returns true if statements are equivalent. Will not check statementId.

Static Public Member Functions

static DtStmtIdType generateNewStmtId ()
static DtSimStatementcreateStatement (DtlObjPtr mtlStream, DtReaderWriterRegistry *parentRegistry=NULL)
 Static functions.
static DtSimStatementcreateStatement (int statementType, DtReaderWriterRegistry *parentRegistry=NULL)
static DtSimStatementcreateLegacyStealthStatement (DtlObjPtr mtlStream, DtReaderWriterRegistry *parentRegistry=NULL)
 Decodes a legacy stealth statement (VRF 3.9 and previous) and returns the proper statement for the current version.
static void addStatementCreatorFcn (const DtString &type, int intType, DtStatementCreatorFcn fcn)
 Adds a statement creator member function to the statement factory.
static void setFactory (DtStatementFactory *factory)
static DtStatementFactoryfactory ()
static bool getStatementNameFromStatementType (int statementType, DtString &statementName)
static bool getStatementTypeFromStatementName (const DtString &statementName, int &statementType)
static bool addStatementTypeMapping (const DtString &statementName, int taskType)
static bool removeStatementTypeMapping (const DtString &statementName, int statementType)

Static Public Attributes

static const int DtSR_STMT = -1
 A constant for use as the subBlockIndex argument to stringRep().

Protected Member Functions

virtual char * createNetworkBuffer ()
virtual bool compare (DtSimStatement *)
 Called from isSameStatement.

Protected Attributes

DtStmtIdType myStatementId
 A semi-unique Id value that helps trace the original identity of this statement if/when it gets copied.
DtSimBlockmyParentBlock
 The containing DtSimBlock object (if any).
char * myNetRep

Static Protected Attributes

static DtStatementFactorymyFactory
 Factory for this class.
static DtStringIntMapper theStatementNameMapper

Friends

class DtStmtIndex

Detailed Description

8 bytes total

class DtSimStatement:

Instances of DtSimStatement represent any kind of statement used in a Plan.


Constructor & Destructor Documentation

Default constructor.

DtSimStatement::DtSimStatement ( const DtString name,
DtReaderWriterRegistry parentRegistry = NULL 
)

Usual constructor NOTE: "name" should be the statement type string.

DtSimStatement::DtSimStatement ( const DtSimStatement orig,
DtReaderWriterRegistry parentRegistry = NULL 
)

Copy constructor.

virtual DtSimStatement::~DtSimStatement ( ) [virtual]

Destructor.


Member Function Documentation

virtual bool DtSimStatement::init ( ) [virtual]

Base class init does nothing, but this will be called by create, in case any other deriving class needs to do virtual allocation.

DtSimStatement& DtSimStatement::operator= ( const DtSimStatement orig)

Assignment operator (protected because this is an abstract base class).

virtual DtSimStatement* DtSimStatement::clone ( DtReaderWriterRegistry parentRegistry = NULL) const [pure virtual]

virtual copy constructor A typical clone function.

It must be overridden by derived classes to return an exact copy of the object.

Implemented in DtWhenStmt, DtWhileStmt, DtIfStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual int DtSimStatement::type ( ) const [pure virtual]

Returns the type of statement Type (defined in simStmtTypes.h)

Implemented in DtWhenStmt, DtWhileStmt, DtIfStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual bool DtSimStatement::validate ( ) [virtual]

Checks the statement for validity, and potentially fixes the statement to be valid.

Returns:
True if the statement is valid.

Reimplemented in DtWhileStmt.

virtual void DtSimStatement::execute ( DtPlan planContext) [pure virtual]

Execute the current statement and make any changes to the Plan state as appropriate.

Tells the statement to activate its own behavior. Each kind of statement implements this function differently. It is passed a reference to the executing DtPlan object as a “context of execution”.

Implemented in DtWhenStmt, DtWhileStmt, DtIfStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual void DtSimStatement::step ( DtPlan planContext) [virtual]

Asks the statement to step the context DtPlan to the next statement.

The default implementation steps to the next statement in the same parent DtSimBlock. If this is the last statement in the Block, step() calls the block’s exitFromBlock() member function.

Reimplemented in DtIfStmt.

virtual bool DtSimStatement::translateIndex ( DtStmtIndex index) [virtual]

Translate an old statement index pointer to point to a statement in the current Plan.

This does a look-up of the statement tree to find the statement that has the same statement ID as the one the statement index used to point to. Use this after a clone to convert any old statement pointers that you want to have pointing to the clone. If any subBlocks are defined, this will search in them too. Returns true if a match was found, false otherwise.

virtual void DtSimStatement::translateIndices ( const DtList &  indices) [virtual]

Same as translateIndex, except it operates on a DtList of DtStmtIndex's, and doesn't return a value.

Return next (previous) statements in the block, or NULL if hit the end (beginning) of the list.

Inline functions.

Statement objects are derived from DtRwListedObj and these functions are wrappers for the base class next() and prev() member functions, which cast their return values to DtSimStatement pointers.

References DtRwListedObj::next().

References DtRwListedObj::prev().

virtual DtStmtIdType DtSimStatement::statementId ( ) const [virtual]

Statement Id accessors.

virtual void DtSimStatement::setStatementId ( DtStmtIdType  arg) [virtual]
virtual DtSimBlock* DtSimStatement::parentBlock ( ) const [virtual]

The parent statement Block.

Returns a pointer to the surrounding DtSimBlock.

virtual void DtSimStatement::setParentBlock ( DtSimBlock arg) [virtual]
virtual int DtSimStatement::subBlockCount ( ) const [virtual]

Get the number of blocks nested inside this statement.

Reimplemented in DtWhenStmt, DtWhileStmt, and DtIfStmt.

virtual DtSimBlock* DtSimStatement::subBlock ( int  index) [virtual]

Get a pointer to any particular block nested inside this statement.

Sub-blocks are indexed as C arrays are (i.e. starting with block #0).

Reimplemented in DtWhenStmt, DtWhileStmt, and DtIfStmt.

Spawns an iterator that iterates over the subblocks in this statement, and all their children, sub children, etc.

. The caller MUST DELETE the iterator when doen using it!

virtual DtSimStatement* DtSimStatement::lookupStatement ( DtStmtIdType  statementId) [virtual]

If statementId matches our statement, returns a pointer to us.

Otherwise calls lookupStatement() for each of our subblocks, if any.

virtual DtString DtSimStatement::stringRep ( int  subBlockIndex = DtSR_STMT) const [pure virtual]

Get a readable string representation of this statement.

The subBlockIndex argument indicates which stringRep to get if this statement can have sub-blocks. If a sub-block index >= 0 is given, the string returned will be the one that should precede that sub-block. A sub-block index of DtSimStatement::DtSR_STMT requests the string that should follow any and all sub-blocks, this is the value that should be used for statements that have no subBlocks (i.e. subBlockCount() == 0).

Implemented in DtWhenStmt, DtWhileStmt, DtIfStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual char* DtSimStatement::netRep ( ) [virtual]
virtual int DtSimStatement::netRepSize ( ) const [virtual]

Returns sizeof(DtNetSimStatement).

Derived classes should add this size to the size of their net representation (dervied class net reps should always put the DtNetSimStatement at the start of their buffer, and put their class specific data immediately following that).

Reimplemented in DtWhenStmt, DtIfStmt, DtWhileStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual bool DtSimStatement::setFromNet ( const char *  contentBuffer,
unsigned  contentSize 
) [virtual]

Extracts statement Id from buffer.

First 16 bytes are a DtNetSimStatement structure. Derived class data should immediately follow this. Derived classes should call down to this one to make sure statement id gets set.

Reimplemented in DtWhenStmt, DtIfStmt, DtWhileStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

virtual bool DtSimStatement::setToNet ( ) [virtual]

Casts myNetRep to DtNetSimStatement* and fills in structure.

Derived classes should always call down to this base class version to set the DtNetSimStatement structure at the beginning of the buffer. Any dervied data should immediately follow the DtNetSimStatement structure.

Reimplemented in DtWhenStmt, DtIfStmt, DtWhileStmt, DtTaskStmt, DtSetDataRequestStmt, and DtSimCommandStmt.

static DtSimStatement* DtSimStatement::createStatement ( DtlObjPtr  mtlStream,
DtReaderWriterRegistry parentRegistry = NULL 
) [static]

Static functions.

Construct an empty conditional expression of the appropriate type. Creates a new statement, given a pointer to an MTL stream. It parses the stream to extract the type of statement to create. Then it calls the statement factory’s create() member function with the statement type. This returns a new instance of the statement type. The statement’s getData() member function is then called to retrieve the statement from the stream. The pointer to the new statement is returned.

static DtSimStatement* DtSimStatement::createStatement ( int  statementType,
DtReaderWriterRegistry parentRegistry = NULL 
) [static]
static DtSimStatement* DtSimStatement::createLegacyStealthStatement ( DtlObjPtr  mtlStream,
DtReaderWriterRegistry parentRegistry = NULL 
) [static]

Decodes a legacy stealth statement (VRF 3.9 and previous) and returns the proper statement for the current version.

static void DtSimStatement::addStatementCreatorFcn ( const DtString type,
int  intType,
DtStatementCreatorFcn  fcn 
) [static]

Adds a statement creator member function to the statement factory.

static void DtSimStatement::setFactory ( DtStatementFactory factory) [static]
Returns:
A pointer to the static DtReaderWriterFactory. This factory can create instances of DtReaderWriter subclasses that have been registered with it.

Reimplemented from DtReaderWriter.

static bool DtSimStatement::getStatementNameFromStatementType ( int  statementType,
DtString statementName 
) [static]
static bool DtSimStatement::getStatementTypeFromStatementName ( const DtString statementName,
int &  statementType 
) [static]
static bool DtSimStatement::addStatementTypeMapping ( const DtString statementName,
int  taskType 
) [static]
static bool DtSimStatement::removeStatementTypeMapping ( const DtString statementName,
int  statementType 
) [static]

Returns true if statements are equivalent. Will not check statementId.

virtual char* DtSimStatement::createNetworkBuffer ( ) [protected, virtual]
virtual bool DtSimStatement::compare ( DtSimStatement ) [protected, virtual]

Called from isSameStatement.

Compares net reps to see if they are the same. Override to do different comparrison

Reimplemented in DtWhenStmt, DtIfStmt, and DtWhileStmt.


Friends And Related Function Documentation

friend class DtStmtIndex [friend]

Member Data Documentation

const int DtSimStatement::DtSR_STMT = -1 [static]

A constant for use as the subBlockIndex argument to stringRep().

A semi-unique Id value that helps trace the original identity of this statement if/when it gets copied.

The containing DtSimBlock object (if any).

Factory for this class.

char* DtSimStatement::myNetRep [protected]

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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)