dbertoni    01/06/06 14:45:12

  Modified:    c/src/XercesParserLiaison XercesDocumentBridge.cpp
                        XercesDocumentBridge.hpp
  Log:
  Made some fixes so the bridge nodes can always be rebuilt.
  
  Revision  Changes    Path
  1.17      +32 -14    
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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XercesDocumentBridge.cpp  2001/04/30 18:09:01     1.16
  +++ XercesDocumentBridge.cpp  2001/06/06 21:45:11     1.17
  @@ -108,12 +108,12 @@
        XalanDocument(),
        m_xercesDocument(theXercesDocument),
        m_documentElement(0),
  -     m_children(theXercesDocument.getChildNodes(),
  -                        m_navigator),
        m_nodeMap(),
        m_domImplementation(new 
XercesDOMImplementationBridge(theXercesDocument.getImplementation())),
        m_navigators(1, XercesBridgeNavigator(this, threadSafe == true ? false 
: !buildBridge)),
  -     m_navigator(m_navigators.front()),
  +     m_navigator(&m_navigators.front()),
  +     m_children(theXercesDocument.getChildNodes(),
  +                        *m_navigator),
        m_nodes(),
        m_doctype(0),
        m_mappingMode(threadSafe == true ? false : !buildBridge),
  @@ -130,7 +130,7 @@
        if (m_mappingMode == false)
        {
                // The document index is always 1...
  -             m_navigator.setIndex(1);
  +             m_navigator->setIndex(1);
   
                // OK, let's build the nodes.  This makes things
                // thread-safe, so the document can be shared...
  @@ -295,6 +295,8 @@
        // Clear out all of the navigators, except ours...
        m_navigators.erase(m_navigators.begin() + 1, m_navigators.end());
   
  +     m_navigator = &m_navigators.front();
  +
        // Clear the node map...
        m_nodeMap.clear();
   
  @@ -1000,7 +1002,9 @@
   XalanNode*
   XercesDocumentBridge::getFirstChild() const
   {
  -     return m_navigator.getFirstChild(m_xercesDocument);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->getFirstChild(m_xercesDocument);
   }
   
   
  @@ -1008,7 +1012,9 @@
   XalanNode*
   XercesDocumentBridge::getLastChild() const
   {
  -     return m_navigator.getLastChild(m_xercesDocument);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->getLastChild(m_xercesDocument);
   }
   
   
  @@ -1080,7 +1086,9 @@
                        XalanNode*      newChild,
                        XalanNode*      refChild)
   {
  -     return m_navigator.insertBefore(m_xercesDocument, newChild, refChild);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->insertBefore(m_xercesDocument, newChild, refChild);
   }
   
   
  @@ -1090,7 +1098,9 @@
                        XalanNode*      newChild,
                        XalanNode*      oldChild)
   {
  -     return m_navigator.replaceChild(m_xercesDocument, newChild, oldChild);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->replaceChild(m_xercesDocument, newChild, oldChild);
   }
   
   
  @@ -1098,7 +1108,9 @@
   XalanNode*
   XercesDocumentBridge::removeChild(XalanNode*  oldChild)
   {
  -     return m_navigator.removeChild(m_xercesDocument, oldChild);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->removeChild(m_xercesDocument, oldChild);
   }
   
   
  @@ -1106,7 +1118,9 @@
   XalanNode*
   XercesDocumentBridge::appendChild(XalanNode* newChild)
   {
  -     return m_navigator.appendChild(m_xercesDocument, newChild);
  +     assert(m_navigator != 0);
  +
  +     return m_navigator->appendChild(m_xercesDocument, newChild);
   }
   
   
  @@ -1189,9 +1203,10 @@
   unsigned long
   XercesDocumentBridge::getIndex() const
   {
  -     assert(m_navigator.getIndex() == 1);
  +     assert(m_navigator != 0);
  +     assert(m_navigator->getIndex() == 1);
   
  -     return m_navigator.getIndex();
  +     return m_navigator->getIndex();
   }
   
   
  @@ -1533,9 +1548,12 @@
   
        if (theStartChild.isNull() == false)
        {
  -             assert(m_navigators.back().getIndex() == 1);
  +             assert(m_navigator != 0);
                assert(m_navigators.size() == 1);
   
  +             m_navigator->setIndex(1);
  +             m_navigator->setFirstChild(0);
  +
                BuildBridgeTreeWalker   theTreeWalker(
                                this,
                                &m_navigators.back(),
  @@ -1546,7 +1564,7 @@
        }
   
        // OK, now set m_documentElement...
  -     XalanNode*      theChild = m_navigator.getFirstChild();
  +     XalanNode*      theChild = m_navigator->getFirstChild();
   
        while(theChild != 0 && theChild->getNodeType() != 
XalanNode::ELEMENT_NODE)
        {
  
  
  
  1.14      +3 -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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XercesDocumentBridge.hpp  2000/12/07 17:03:32     1.13
  +++ XercesDocumentBridge.hpp  2001/06/06 21:45:11     1.14
  @@ -562,8 +562,6 @@
   
        XalanElement*                                                   
m_documentElement;
   
  -     XercesNodeListBridge                                    m_children;
  -
        mutable XercesToXalanNodeMap                    m_nodeMap;
   
        XalanAutoPtr<XalanDOMImplementation>    m_domImplementation;
  @@ -572,7 +570,9 @@
   
        // Our navigator will be the first entry in m_navigators,
        // but we'll cache this so access is faster...
  -     XercesBridgeNavigator&                                  m_navigator;
  +     XercesBridgeNavigator*                                  m_navigator;
  +
  +     XercesNodeListBridge                                    m_children;
   
        mutable NodeVectorType                                  m_nodes;
   
  
  
  

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

Reply via email to