Exemplo n.º 1
0
/* 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;
}
Exemplo n.º 2
0
	/* 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 );
}
Exemplo n.º 3
0
BNode::BNode(TreeNode* b2) {
    braceOpen.value = "{";
    setFirstNode(b2);
    braceClose.value = "}";
}
Exemplo n.º 4
0
FNode::FNode(TreeNode* i, TreeNode* b) {
    func = "func";
    setFirstNode(i);
    brac = "()";
    setSecondNode(b);
}
Exemplo n.º 5
0
	/* 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;
}