/* ASSUMES that theDnode can be deleted * * when this Dlist is deleted!!! * * (if deletesContainedObjects == TRUE) */ status_t _TDL_Dlist::prependNode ( _TDL_Dnode * theDnode ) { if ( ( getFirstNode() != (_TDL_Dnode *) NULL ) && ( ( getLastNode() == (_TDL_Dnode *) NULL ) || ( getLastNode() -> getNextNode() != (_TDL_Dnode *) NULL ) ) ) { TDL::getLogStream() << "[_TDL_Dlist::prependNode] Warning: " << "LastNode inconsistent. Repairing..." << endl; repairList(); } if ( getFirstNode() == (_TDL_Dnode *) NULL ) { theDnode -> setNextNode ( (_TDL_Dnode *) NULL ); theDnode -> setPreviousNode ( (_TDL_Dnode *) NULL ); setFirstNode ( theDnode ); setLastNode ( theDnode ); } else { getFirstNode() -> setPreviousNode ( theDnode ); theDnode -> setNextNode ( getFirstNode() ); theDnode -> setPreviousNode ( (_TDL_Dnode *) NULL ); setFirstNode ( theDnode ); } return SUCCESS; }
/* Note: Deletes all elements if deletesContainedObjects == TRUE */ void _TDL_Dlist::emptyAllElementsInList() { _TDL_Dnode * node = getFirstNode(); _TDL_Dnode * nextNode; while ( ( getDeletesContainedObjects() ) && ( node != (_TDL_Dnode *) NULL ) ) { nextNode = node -> getNextNode(); delete node; node = nextNode; } setFirstNode ( (_TDL_Dnode *) NULL ); setLastNode ( (_TDL_Dnode *) NULL ); }
BNode::BNode(TreeNode* b2) { braceOpen.value = "{"; setFirstNode(b2); braceClose.value = "}"; }
FNode::FNode(TreeNode* i, TreeNode* b) { func = "func"; setFirstNode(i); brac = "()"; setSecondNode(b); }
/* Note: Does NOT delete theDnode. * * Returns NULL for failure. */ _TDL_Dnode * _TDL_Dlist::removeNode( _TDL_Dnode * theDnode, _TDL_Dlist::DIRECTION theSearchDiretion /*=BACKWARD*/) { _TDL_Dnode * dnode; _TDL_Dnode * lastDnode = (_TDL_Dnode *) NULL; /* Error check */ if ( ( getFirstNode() != (_TDL_Dnode *) NULL ) && ( ( getLastNode() == (_TDL_Dnode *) NULL ) || ( getLastNode() -> getNextNode() != (_TDL_Dnode *) NULL ) ) ) { TDL::getLogStream() << "[_TDL_Dlist::removeNode] Warning: " << "LastNode inconsistent. Repairing..." << endl; repairList(); } if ( theSearchDiretion == _TDL_Dlist::FORWARD ) dnode = getFirstNode(); else dnode = getLastNode(); while ( dnode != (_TDL_Dnode *) NULL ) { if ( dnode == theDnode ) { if ( lastDnode == (_TDL_Dnode *) NULL ) { if ( theSearchDiretion == _TDL_Dlist::FORWARD ) { setFirstNode ( dnode -> getNextNode() ); if ( dnode -> getNextNode() != (_TDL_Dnode *) NULL ) dnode -> getNextNode() -> setPreviousNode ( (_TDL_Dnode *) NULL ); } else { setLastNode ( dnode -> getPreviousNode() ); if ( dnode -> getPreviousNode() != (_TDL_Dnode *) NULL ) dnode -> getPreviousNode() -> setNextNode ( (_TDL_Dnode *) NULL ); } } else { if ( theSearchDiretion == _TDL_Dlist::FORWARD ) { lastDnode -> setNextNode ( dnode -> getNextNode() ); if ( dnode -> getNextNode() != (_TDL_Dnode *) NULL ) dnode -> getNextNode() -> setPreviousNode ( lastDnode ); } else { lastDnode -> setPreviousNode ( dnode -> getPreviousNode() ); if ( dnode -> getPreviousNode() != (_TDL_Dnode *) NULL ) dnode -> getPreviousNode() -> setNextNode ( lastDnode ); } } if ( ( theSearchDiretion == _TDL_Dlist::FORWARD ) && ( ( getLastNode() == dnode ) || ( dnode -> getNextNode() == (_TDL_Dnode *) NULL ) ) ) { setLastNode ( lastDnode ); if ( lastDnode != (_TDL_Dnode *) NULL ) lastDnode -> setNextNode ( (_TDL_Dnode *) NULL ); } if ( ( theSearchDiretion != _TDL_Dlist::FORWARD ) && ( ( getFirstNode() == dnode ) || ( dnode -> getPreviousNode() == (_TDL_Dnode *) NULL ) ) ) { setFirstNode ( lastDnode ); if ( lastDnode != (_TDL_Dnode *) NULL ) lastDnode -> setPreviousNode ( (_TDL_Dnode *) NULL ); } dnode -> setNextNode ( (_TDL_Dnode *) NULL ); dnode -> setPreviousNode ( (_TDL_Dnode *) NULL ); return dnode; } else { lastDnode = dnode; if ( theSearchDiretion == _TDL_Dlist::FORWARD ) dnode = dnode -> getNextNode(); else dnode = dnode -> getPreviousNode(); } } /* WHILE ( dnodes ) */ return (_TDL_Dnode *) NULL; }