class LoopNameListNode |
A list of tag names representing one single nesting level of a loop's definition.
| AddDataName (const string & name) DEPRECIATED - Use STL vector notation instead | |
| ChangeName ( const string &oldName, const string &newName ) | |
| FlattenNestedLoop (List<DataNameNode*>* L) DEPRECIATED | |
| RemoveDataName (const string & name, int* ele = (int*)NULL ) DEPRECIATED - Use STL vector notation instead | |
| Unparse (int indent) | |
| atEnd () DEPRECIATED - Use STL vector notation instead | |
| atStart () DEPRECIATED - Use STL vector notation instead | |
| debugPrint ( void ) Print out debugging info detailing the layout of this list: | |
| getNextTag () DEPRECIATED - Use STL vector notation instead | |
| isInLoop (void) isInLoop: Returns true if this LoopNameListNode is inside a DataLoopNode, or false if it is not. | |
| isOfType ( ASTtype T ) | |
| myLongestStr ( void ) Returns the length of the longest string in this object. | |
| myName () const Return the name of the first tag in my list. | |
| myType (void) | |
| reset () DEPRECIATED - Use STL vector notation instead | |
| searchByTag ( string &searchFor ) Find the name given in this name list. | |
| searchForType ( ASTtype type, int delim = -1 ) This method returns a list of all the nodes of the given type that are inside this node, or children of this node, or children of children of this node, etc all the way down to the leaf nodes. | |
| tagPosition (const string & tagName) The postion of a tag in the list (returns an integer index). | |
| unlinkChild ( ASTnode* child ) unlinks the given ASTnode from this ASTnode, assuming that the given ASTnode is a child of this ASTnode. | |
| ~LoopNameListNode () Destructor |
| | |
A list of tag names representing one single nesting level of a loop's definition. This class is designed to look somewhat like an STL vector, implementing many of the same methods as STL vector. The caller is not given access to the interior ASTlist of names because there needs to be some automated sanity checking to prevent people from deleting names without deleting the associated values in the loop. The same is true for inserting new names. If a new name is inserted, new values need to be inserted into the associated loop's values so the result is still valid STAR syntax. The methods in this class that are made to look like STL vector functions perform these tasks automatically when things are inserted or deleted from the list of names.
If this LoopNameListNode has not yet been attached to the rest of a DataLoopNode yet, such that there are no associated data values to go with these names, then nothing special happens - the name(s) is(are) inserted and that's all.
Here is the more precise rules:
-------------------------------
Insert - Insert before 'pos', the Name given. All versions make copies of the Name rather than just pointers to it:
When new values need to be inserted to go with the new name, this version defaults the values to insert to the STAR-null value, a single nonquoted dot (.):
Make-a-copy of DataNameNode version:
Make-a-link of DataNameNode version:
The value returned is an integer. It is a count of how many nesting levels deep this is in the loop that it was found it. Thus if it is zero (false) it was not found in a loop, and if it is 1 then it was found in nesting level 1 of a loop, 2 = nesting level 2, etc.
WARNING: The list returned is allocated in heap space. It is the caller's responsibility to delete the list after it is no longer needed.
This search is case-insensitive. The names of things, according to the STAR specification, are supposed to be case-insensitive. This is being applied not only to tag names but also to saveframe names and datablock names.
Alphabetic index HTML hierarchy of classes or Java