dbertoni    2003/01/23 18:30:34

  Modified:    c/src/XercesParserLiaison XercesDOMWalker.cpp
                        XercesDOMWalker.hpp
  Log:
  Added non-const traversal.
  
  Revision  Changes    Path
  1.3       +99 -1     xml-xalan/c/src/XercesParserLiaison/XercesDOMWalker.cpp
  
  Index: XercesDOMWalker.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesDOMWalker.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XercesDOMWalker.cpp       22 Nov 2002 01:12:49 -0000      1.2
  +++ XercesDOMWalker.cpp       24 Jan 2003 02:30:34 -0000      1.3
  @@ -95,7 +95,43 @@
                {
                        endNode(thePos);
   
  -                     nextNode = pos->getNextSibling();
  +                     nextNode = thePos->getNextSibling();
  +
  +                     if(nextNode == 0)
  +                     {
  +                             thePos = thePos->getParentNode();
  +
  +                             if(thePos == 0)
  +                             {
  +                                     nextNode = thePos;
  +
  +                                     break;
  +                             }
  +                     }
  +             }
  +
  +             thePos = nextNode;
  +     }
  +}
  +
  +
  +
  +void
  +XercesDOMWalker::traverse(DOMNodeType*       pos)
  +{
  +     DOMNodeType*    thePos = pos;
  +
  +     while(thePos != 0)
  +     {
  +             startNode(thePos);
  +
  +             DOMNodeType*    nextNode = thePos->getFirstChild();
  +
  +             while(nextNode == 0)
  +             {
  +                     endNode(thePos);
  +
  +                     nextNode = thePos->getNextSibling();
   
                        if(nextNode == 0)
                        {
  @@ -150,6 +186,68 @@
   
                thePos = nextNode;
        }
  +}
  +
  +
  +
  +void
  +XercesDOMWalker::traverse(
  +                     DOMNodeType*    pos,
  +                     DOMNodeType*    parent)
  +{
  +     DOMNodeType*    thePos = pos;
  +
  +     while(parent != thePos)
  +     {         
  +             startNode(thePos);
  +       
  +             DOMNodeType*    nextNode = thePos->getFirstChild();
  +
  +             while(nextNode == 0)
  +             {
  +                     endNode(thePos);
  +
  +                     nextNode = thePos->getNextSibling();
  +
  +                     if(nextNode == 0)
  +                     {
  +                             thePos = thePos->getParentNode();
  +
  +                             if(parent == thePos)
  +                             {
  +                                     nextNode = thePos;
  +
  +                                     break;
  +                             }
  +                     }
  +             }
  +
  +             thePos = nextNode;
  +     }
  +}
  +
  +
  +
  +void
  +XercesDOMWalker::startNode(DOMNodeType*              node)
  +{
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +     startNode((const DOMNodeType*)node);
  +#else
  +     startNode(const_cast<const DOMNodeType*>(node));
  +#endif
  +}
  +
  +
  +
  +void
  +XercesDOMWalker::endNode(DOMNodeType*        node)
  +{
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +     endNode((const DOMNodeType*)node);
  +#else
  +     endNode(const_cast<const DOMNodeType*>(node));
  +#endif
   }
   
   
  
  
  
  1.3       +20 -0     xml-xalan/c/src/XercesParserLiaison/XercesDOMWalker.hpp
  
  Index: XercesDOMWalker.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesDOMWalker.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XercesDOMWalker.hpp       22 Nov 2002 01:12:49 -0000      1.2
  +++ XercesDOMWalker.hpp       24 Jan 2003 02:30:34 -0000      1.3
  @@ -90,17 +90,37 @@
         * Perform a pre-order traversal non-recursive style.
         */
        virtual void
  +     traverse(DOMNodeType*   pos);
  +
  +     /**
  +      * Perform a pre-order traversal non-recursive style.
  +      */
  +     virtual void
        traverse(
                        const DOMNodeType*      pos,
                        const DOMNodeType*      parent);
   
  +     /**
  +      * Perform a pre-order traversal non-recursive style.
  +      */
  +     virtual void
  +     traverse(
  +                     DOMNodeType*    pos,
  +                     DOMNodeType*    parent);
  +
   protected:
   
        virtual void
        startNode(const DOMNodeType*    node) = 0;
   
        virtual void
  +     startNode(DOMNodeType*  node);
  +
  +     virtual void
        endNode(const DOMNodeType*      node) = 0;
  +
  +     virtual void
  +     endNode(DOMNodeType*    node);
   };
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to