dbertoni    00/06/07 11:14:00

  Modified:    c/src/XercesParserLiaison XercesDocumentBridge.cpp
                        XercesDocumentBridge.hpp
  Log:
  Added function to build bridge nodes.
  
  Revision  Changes    Path
  1.7       +31 -21    
xml-xalan/c/src/XercesParserLiaison/XercesDocumentBridge.cpp
  
  Index: XercesDocumentBridge.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesDocumentBridge.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XercesDocumentBridge.cpp  2000/05/26 19:18:25     1.6
  +++ XercesDocumentBridge.cpp  2000/06/07 18:13:56     1.7
  @@ -100,7 +100,7 @@
   
   XercesDocumentBridge::XercesDocumentBridge(
                        const DOM_Document&             theXercesDocument,
  -                     bool                                    
buildBridgeNodes) :
  +                     bool                                    buildBridge) :
        XalanDocument(),
        m_xercesDocument(theXercesDocument),
        m_navigator(this),
  @@ -133,30 +133,12 @@
                m_nodes.insert(m_doctype);
        }
   
  -     if (buildBridgeNodes == true)
  +     if (buildBridge == true)
        {
                // OK, let's build the nodes.  This makes things
                // thread-safe, so the document can be shared...
   
  -             // First, build any children of the document...
  -             const XalanNode*        theChild = getFirstChild();
  -
  -             while(theChild != 0)
  -             {
  -                     theChild = theChild->getNextSibling();
  -             }
  -
  -             // OK, now walk everything below the document
  -             // element...
  -             const XalanNode* const  theDocumentElement =
  -                     getDocumentElement();
  -
  -             if (theDocumentElement != 0)
  -             {
  -                     NullTreeWalker  theTreeWalker;
  -
  -                     theTreeWalker.traverse(theDocumentElement, this);
  -             }
  +             buildBridgeNodes();
        }
   }
   
  @@ -285,6 +267,34 @@
   XercesDocumentBridge::mapNode(const DOM_Element&     theXercesNode) const
   {
        return 
static_cast<XercesElementBridge*>(mapNode(XercesDOM_NodeHack::getImpl(theXercesNode)));
  +}
  +
  +
  +
  +void
  +XercesDocumentBridge::buildBridgeNodes()
  +{
  +     // First, build any children of the document...
  +     const XalanNode*        theChild = getFirstChild();
  +
  +     while(theChild != 0)
  +     {
  +             // Note that just accessing the sibling is
  +             // enough to build the bridge nodes...
  +             theChild = theChild->getNextSibling();
  +     }
  +
  +     // OK, now walk everything below the document
  +     // element...
  +     const XalanNode* const  theDocumentElement =
  +                     getDocumentElement();
  +
  +     if (theDocumentElement != 0)
  +     {
  +             NullTreeWalker  theTreeWalker;
  +
  +             theTreeWalker.traverse(theDocumentElement, this);
  +     }
   }
   
   
  
  
  
  1.3       +21 -3     
xml-xalan/c/src/XercesParserLiaison/XercesDocumentBridge.hpp
  
  Index: XercesDocumentBridge.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesDocumentBridge.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XercesDocumentBridge.hpp  2000/05/26 19:18:26     1.2
  +++ XercesDocumentBridge.hpp  2000/06/07 18:13:56     1.3
  @@ -109,18 +109,18 @@
         * Constructor for XercesDocumentBridge.
         *
         * If the document will be shared amongst multiple threads of execution,
  -      * the parameter buildBridgeNodes must be true.  Otherwise, the bridge
  +      * the parameter buildBridge must be true.  Otherwise, the bridge
         * nodes will be built on demand, a process which is not synchronized.
         * This could cause serious problems if multiple threads tried to visit
         * an unbuilt node at the same time.
         *
         * @param theXercesDocument The Xerces document to bridge
  -      * @param buildBridgeNodes If true, all of the bridge nodes will be 
built during construction.
  +      * @param buildBridge If true, all of the bridge nodes will be built 
during construction.
         *
         */
        XercesDocumentBridge(
                        const DOM_Document&             theXercesDocument,
  -                     bool                                    
buildBridgeNodes = true);
  +                     bool                                    buildBridge = 
true);
   
        virtual
        ~XercesDocumentBridge();
  @@ -293,11 +293,29 @@
        XalanElement*
        mapNode(const DOM_Element&      theXercesNode) const;
   
  +     /**
  +      *
  +      * Get the Xerces DOM_Document that this XercesDocument represents.
  +      *
  +      * @return the Xerces DOM_Document instance.
  +      *
  +      */
        DOM_Document
        getXercesDocument() const
        {
                return m_xercesDocument;
        }
  +
  +     /**
  +      *
  +      * Constructor for XercesDocumentBridge.
  +      *
  +      * Build the entire bridge structure.  This should be done before any
  +      * processing begins, if the tree will be shared amongst multiple
  +      * threads.
  +      */
  +     void
  +     buildBridgeNodes();
   
   private:
   
  
  
  

Reply via email to