![]() |
VR-Forces 4.0.4 Class Documentation
|
class DtSimBlock: More...

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. | |
| DtSimBlock & | operator= (const DtSimBlock &orig) |
| assignment operator NOTE: this deletes the old statements and does a deep copy of the new ones. | |
| virtual DtSimBlock * | clone (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL) const =0 |
| The normal clone function. | |
| DtSimBlock * | clone () const |
| This clone re-uses the current DtSimBlock's name, but does not register in its parent's plan or registry. | |
| DtSimStatement * | firstStmt () const |
| Same as firstObj(), except also downcasts. | |
| DtSimStatement * | lastStmt () 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 DtSimStatement * | lookupStatement (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. | |
class DtSimBlock:
Instances of DtSimBlock represents blocks of DtSimStatements.
default constructor
| DtSimBlock::DtSimBlock | ( | const DtString & | name, |
| DtReaderWriterRegistry * | parentRegistry = NULL |
||
| ) |
real constructor
| DtSimBlock::DtSimBlock | ( | const DtSimBlock & | orig | ) |
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.
| 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.
| virtual DtRecursiveSimBlockIterator* DtSimBlock::spawnRecursiveIterator | ( | ) | const [virtual] |
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.
| 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.