class DataLoopNameListNode |
This is a list of lists of names in a loop. The first list of names is the list of names for the outermost loop. the second list of names is the list of names for the next nesting level in, and so on.
| AddDataName (const string & name) DEPRECIATED - use the STL vector notation instead: | |
| ChangeName ( const string &oldName, const string &newName ) DEPRECIATED - use the STL vector notation instead: | |
| FlattenNestedLoop (List<DataNameNode*>* L) DEPRECIATED - use the STL vector notation instead: | |
| RemoveDataName ( const string & name, int* nest = (int*)NULL, int* ele = (int*)NULL ) DEPRECIATED - use the STL vector notation instead: | |
| Unparse (int indent) | |
| back () const | |
| back () | |
| begin () const | |
| begin () | |
| debugPrint ( void ) Print out debugging info detailing the layout of this list: | |
| empty () const | |
| end () | |
| end () const | |
| erase ( iterator pos ) erase - Remove the row of tagnames given. | |
| front () | |
| front () const | |
| getNextTag (DataLoopValListNode::Status vstat, int & row) DEPRECIATED - use the STL vector notation instead: | |
| insert ( iterator pos, LoopNameListNode &v ) Insert - Insert before 'pos', the LoopNameListNode given. | |
| insert ( iterator pos, LoopNameListNode* v ) Make a link to the node given (NOT A COPY - don't delete the node pointer that was passed) | |
| isOfType ( ASTtype T ) | |
| myLongestStr ( void ) Returns the length of the longest string in this object. | |
| myName () const Return the 'name' of this node (the name of the first tag in the outermost nesting level is arbitrarily chosen as the "name" of this node | |
| myType (void) | |
| operator[] ( size_type n ) | |
| operator[] ( size_type n) const | |
| reset () DEPRECIATED - use the STL vector notation instead: | |
| searchByTag ( string &searchFor ) Given a tag name, find the AST object it resides in. | |
| 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. | |
| size () const | |
| tagPosition (const string & TagName) DEPRECIATED - use tagPositionDeep instead Get the index of the given tag, if it resides in the outermost loop only (is incapable of searching into nested tags) (This search is case-insensitive). | |
| tagPositionDeep ( string tagName, int* nestLevel, int* column ) Get the index of the given name. | |
| unlinkChild ( ASTnode* child ) unlinks the given ASTnode from this ASTnode, assuming that the given ASTnode is a child of this ASTnode. | |
| ~DataLoopNameListNode () Destructor - recursively destroys the whole list of names |
| | |
| Insertions/Deletions. | |
| Status | |
This is a list of lists of names in a loop. The first list of names is the list of names for the outermost loop. the second list of names is the list of names for the next nesting level in, and so on.
Insert - Insert before 'pos', the row of tagnames given by 'v'. Note that what this means is that you are inserting a new nesting level to the loop. If this is already inside a DataLoopNode, then you are only allowed to add new nesting levels at the deepest level, i.e. 'pos' must == 'end()' or it will refuse to do it and return false. This is because if you inserted a new nesting level in the middle, then values that are at the levels deeper than that are no longer associated with the higher-level row that they are supposed to "hang" off from.
If this DataLoopNameListNode is not inside a DataLoopNode, then you can insert and remove nesting levels at will.
the passed vector itself (in other words, you can delete it after calling (and the DataNameNodes it points to).
(This function performs a DEEP copy of the given name def list so everything in the passed argument can be deleted after calling, if it is appropriate.)
In order to keep the STAR syntax correct, deleting a row of names also results in all tagnames for levels nested AFTER that row being deleted also. (If there are three nested levels in a loop and you delete the middle level, then the inner level goes away too.)
That is why there is no erase() method for erasing a range of rows of names. There would be no point, seeing as how once one is deleted, the rest under it have to be deleted too.
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.
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.
Alphabetic index HTML hierarchy of classes or Java