VR-Forces 4.0.4 Class Documentation
Public Member Functions | Protected Member Functions
DtSimBlock Class Reference

class DtSimBlock: More...

Inheritance diagram for DtSimBlock:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DtSimBlock ()
 default constructor
 DtSimBlock (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL)
 real constructor
 DtSimBlock (const DtSimBlock &orig)
 default copy constructor NOTE: this does a deep copy of the statements.
 DtSimBlock (const DtString &name, const DtSimBlock &orig, DtReaderWriterRegistry *parentRegistry=NULL)
 better copy constructor NOTE: this does a deep copy of the statements.
virtual ~DtSimBlock ()
 destructor NOTE: this DELETES the contained statements.
DtSimBlockoperator= (const DtSimBlock &orig)
 assignment operator NOTE: this deletes the old statements and does a deep copy of the new ones.
virtual DtSimBlockclone (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL) const =0
 The normal clone function.
DtSimBlockclone () const
 This clone re-uses the current DtSimBlock's name, but does not register in its parent's plan or registry.
DtSimStatementfirstStmt () const
 Same as firstObj(), except also downcasts.
DtSimStatementlastStmt () const
 Same as lastObj(), except also downcasts.
virtual DtlObjPtr getData (DtlObjPtr args, const DtFilename &searchPath, const DtVariableBindingsList &variableBindings)
 This special version of getData creates the necessary list element object using the DtSimStatement::statementFactory, tells the statement to getSelf, and then adds the statement to the DtRwIntrusiveList.
virtual void exitFromBlock (DtPlan &)=0
 This function is called by the last statement in the block so that the block can do whatever is appropriate at the end of this block.
virtual bool translateIndex (DtStmtIndex &stmtIndex) const
 If you have a DtStmtIndex object that used to point into the original DtSimBlock before it was copied/cloned into this one, use the translateIndex function to convert it to point into this Block.
virtual void translateIndices (DtList &stmtIndexList) const
 If you have a list of DtStmtIndex objects that used to point into the original DtSimBlock before it was copied/cloned into this one, use the translateIndicies function to convert them to point into this Block.
virtual DtSimStatementlookupStatement (DtStmtIdType statementId)
 Looks up a statement with the given Id.
virtual
DtRecursiveSimBlockIterator
spawnRecursiveIterator () const
 Spawns an iterator that iterates over the elements in this sim block, and all their children, sub children, etc.
virtual bool validate ()
 Calls validate() on all statements within the block.
virtual bool isSameBlock (DtSimBlock *rhs)
 Returns true if all sub statements are the same.

Protected Member Functions

virtual DtListItem * addToList (DtRwListedObj *data, DtRwListedObj *after)
 Add element to the list just after the indicated item.
virtual void cloneListFrom (const DtSimBlock &other)
 This function will clone the statements from the given statement list.

Detailed Description

class DtSimBlock:

Instances of DtSimBlock represents blocks of DtSimStatements.


Constructor & Destructor Documentation

default constructor

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

real constructor

default copy constructor NOTE: this does a deep copy of the statements.

DtSimBlock::DtSimBlock ( const DtString name,
const DtSimBlock orig,
DtReaderWriterRegistry parentRegistry = NULL 
)

better copy constructor NOTE: this does a deep copy of the statements.

virtual DtSimBlock::~DtSimBlock ( ) [virtual]

destructor NOTE: this DELETES the contained statements.


Member Function Documentation

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

assignment operator NOTE: this deletes the old statements and does a deep copy of the new ones.

virtual DtSimBlock* DtSimBlock::clone ( const DtString name,
DtReaderWriterRegistry parentRegistry = NULL 
) const [pure virtual]

The normal clone function.

Clones blocks. This is not normally done outside of the DtPlan or DtSimStatement that owns them.

Implemented in DtIfBlock, DtWhileBlock, DtWhenBlock, and DtPlanBlock.

DtSimBlock * DtSimBlock::clone ( ) const [inline]

This clone re-uses the current DtSimBlock's name, but does not register in its parent's plan or registry.

Inline functions.

References DtReaderWriter::name().

DtSimStatement * DtSimBlock::firstStmt ( ) const [inline]

Same as firstObj(), except also downcasts.

firstStmt() and lastStmt() are wrapper functions that make it easier to access the DtSimStatements inside the block without having to cast the pointers returned by the firstObj() and lastObj() member functions. Once you have a DtSimStatement pointer, you can loop through the list of statements using the DtSimStatement::nextStmt() and DtSimStatement::prevStmt() member functions.

References DtRwIntrusiveList::firstObj().

DtSimStatement * DtSimBlock::lastStmt ( ) const [inline]

Same as lastObj(), except also downcasts.

References DtRwIntrusiveList::lastObj().

virtual DtlObjPtr DtSimBlock::getData ( DtlObjPtr  args,
const DtFilename &  searchPath,
const DtVariableBindingsList variableBindings 
) [virtual]

This special version of getData creates the necessary list element object using the DtSimStatement::statementFactory, tells the statement to getSelf, and then adds the statement to the DtRwIntrusiveList.

The return value is ignored.

Implements DtRwIntrusiveList.

virtual void DtSimBlock::exitFromBlock ( DtPlan ) [pure virtual]

This function is called by the last statement in the block so that the block can do whatever is appropriate at the end of this block.

Called when the last statement in the block is asked to step to the next statement. Since there are no more statements in the block, the last statement asks the block to finish the step command for it. Any class derived from DtSimBlock must define its own exitFromBlock() member function and different blocks do different things on exit. This function, like the DtSimStatement::execute() and DtSimStatement::step(), takes a DtPlan reference argument for the execution context.

Implemented in DtPlanBlock, DtIfBlock, DtWhenBlock, and DtWhileBlock.

virtual bool DtSimBlock::translateIndex ( DtStmtIndex stmtIndex) const [virtual]

If you have a DtStmtIndex object that used to point into the original DtSimBlock before it was copied/cloned into this one, use the translateIndex function to convert it to point into this Block.

Returns true if a match was found, false otherwise.

Reimplemented in DtPlanBlock.

virtual void DtSimBlock::translateIndices ( DtList &  stmtIndexList) const [virtual]

If you have a list of DtStmtIndex objects that used to point into the original DtSimBlock before it was copied/cloned into this one, use the translateIndicies function to convert them to point into this Block.

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

Looks up a statement with the given Id.

Calls lookupStatement() on each statement.

Spawns an iterator that iterates over the elements in this sim block, and all their children, sub children, etc.

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

virtual bool DtSimBlock::validate ( ) [virtual]

Calls validate() on all statements within the block.

Returns:
True only if all statements were validated.
virtual bool DtSimBlock::isSameBlock ( DtSimBlock rhs) [virtual]

Returns true if all sub statements are the same.

Calls isSameStatement on all sub statements

virtual DtListItem* DtSimBlock::addToList ( DtRwListedObj data,
DtRwListedObj after 
) [protected, virtual]

Add element to the list just after the indicated item.

Returns the DtListItem envelope object that contains your new element. NOTE: if this or any other DtRwIntrusiveList functions are used to add a statement to the block, the "data" argument MUST be a DtSimStatement!

Reimplemented from DtRwIntrusiveList.

virtual void DtSimBlock::cloneListFrom ( const DtSimBlock other) [protected, virtual]

This function will clone the statements from the given statement list.

Note: it is NOT acceptable to pass "*this" as "other" say, to deepen a shallow list copy. It assumes that this->myList is empty. This is used by the copy constructor(s) as well as by the assignment operator.


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)