dbertoni    01/06/06 14:40:16

  Modified:    c/src/XalanSourceTree XalanSourceTreeParserLiaison.cpp
                        XalanSourceTreeParserLiaison.hpp
  Log:
  Allow for documents that persist between resets.
  
  Revision  Changes    Path
  1.13      +85 -10    xml-xalan/c/src/XalanSourceTree/XalanSourceTreeParserLiaison.cpp
  
  Index: XalanSourceTreeParserLiaison.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XalanSourceTree/XalanSourceTreeParserLiaison.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XalanSourceTreeParserLiaison.cpp  2001/05/10 17:52:49     1.12
  +++ XalanSourceTreeParserLiaison.cpp  2001/06/06 21:40:15     1.13
  @@ -83,19 +83,39 @@
   
   
   
XalanSourceTreeParserLiaison::XalanSourceTreeParserLiaison(XalanSourceTreeDOMSupport&  
      theSupport) :
  -     m_xercesDOMSupport(),
  -     m_xercesParserLiaison(m_xercesDOMSupport),
  +     m_xercesParserLiaison(),
        m_documentMap(),
  -     m_domSupport(theSupport),
  +     m_persistentDocumentMap(),
        m_poolAllText(true)
   {
   }
   
   
   
  +XalanSourceTreeParserLiaison::XalanSourceTreeParserLiaison() :
  +     m_xercesParserLiaison(),
  +     m_documentMap(),
  +     m_persistentDocumentMap(),
  +     m_poolAllText(true)
  +{
  +}
  +
  +
  +
   XalanSourceTreeParserLiaison::~XalanSourceTreeParserLiaison()
   {
        reset();
  +
  +#if !defined(XALAN_NO_NAMESPACES)
  +     using std::for_each;
  +#endif
  +
  +     // Delete any persistent documents.
  +     for_each(m_persistentDocumentMap.begin(),
  +                      m_persistentDocumentMap.end(),
  +                      makeMapValueDeleteFunctor(m_persistentDocumentMap));
  +
  +     m_persistentDocumentMap.clear();
   }
   
   
  @@ -107,18 +127,14 @@
        using std::for_each;
   #endif
   
  -     // Delete any live documents.
  +     // Delete any documents.
        for_each(m_documentMap.begin(),
                         m_documentMap.end(),
                         makeMapValueDeleteFunctor(m_documentMap));
   
        m_documentMap.clear();
   
  -     m_domSupport.reset();
  -
        m_xercesParserLiaison.reset();
  -
  -     m_xercesDOMSupport.reset();
   }
   
   
  @@ -413,10 +429,26 @@
   XalanSourceTreeDocument*
   XalanSourceTreeParserLiaison::mapDocument(const XalanDocument*       theDocument) 
const
   {
  -     const DocumentMapType::const_iterator   i =
  +     DocumentMapType::const_iterator         i =
                m_documentMap.find(theDocument);
   
  -     return i != m_documentMap.end() ? (*i).second : 0;
  +     if (i != m_documentMap.end())
  +     {
  +             return (*i).second;
  +     }
  +     else
  +     {
  +             i =     m_persistentDocumentMap.find(theDocument);
  +
  +             if (i != m_persistentDocumentMap.end())
  +             {
  +                     return (*i).second;
  +             }
  +             else
  +             {
  +                     return 0;
  +             }
  +     }
   }
   
   
  @@ -430,4 +462,47 @@
        m_documentMap[theNewDocument] = theNewDocument;
   
        return theNewDocument;
  +}
  +
  +
  +
  +bool
  +XalanSourceTreeParserLiaison::setPersistent(XalanSourceTreeDocument* theDocument)
  +{
  +     const DocumentMapType::iterator         i =
  +             m_documentMap.find(theDocument);
  +
  +     if (i != m_documentMap.end())
  +     {
  +             return false;
  +     }
  +     else
  +     {
  +             m_persistentDocumentMap[(*i).first] = (*i).second;
  +
  +             m_documentMap.erase(i);
  +
  +             return true;
  +     }
  +}
  +
  +
  +bool
  +XalanSourceTreeParserLiaison::unsetPersistent(XalanSourceTreeDocument*       
theDocument)
  +{
  +     const DocumentMapType::iterator         i =
  +             m_persistentDocumentMap.find(theDocument);
  +
  +     if (i != m_persistentDocumentMap.end())
  +     {
  +             return false;
  +     }
  +     else
  +     {
  +             m_documentMap[(*i).first] = (*i).second;
  +
  +             m_persistentDocumentMap.erase(i);
  +
  +             return true;
  +     }
   }
  
  
  
  1.9       +17 -5     xml-xalan/c/src/XalanSourceTree/XalanSourceTreeParserLiaison.hpp
  
  Index: XalanSourceTreeParserLiaison.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XalanSourceTree/XalanSourceTreeParserLiaison.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XalanSourceTreeParserLiaison.hpp  2001/05/10 17:52:50     1.8
  +++ XalanSourceTreeParserLiaison.hpp  2001/06/06 21:40:15     1.9
  @@ -89,9 +89,16 @@
         * Construct a XalanSourceTreeParserLiaison instance.
         *
         * @param theSupport instance of DOMSupport object
  +      *
  +      * @deprecated This constructor is deprecated.  Use the default constructor 
instead.
         */
        XalanSourceTreeParserLiaison(XalanSourceTreeDOMSupport&         theSupport);
   
  +     /**
  +      * Construct a XalanSourceTreeParserLiaison instance.
  +      */
  +     XalanSourceTreeParserLiaison();
  +
        virtual
        ~XalanSourceTreeParserLiaison();
   
  @@ -353,6 +360,12 @@
        XalanSourceTreeDocument*
        createXalanSourceTreeDocument();
   
  +     bool
  +     setPersistent(XalanSourceTreeDocument*  theDocument);
  +
  +     bool
  +     unsetPersistent(XalanSourceTreeDocument*        theDocument);
  +
   #if defined(XALAN_NO_NAMESPACES)
        typedef map<const XalanDocument*,
                                XalanSourceTreeDocument*,
  @@ -365,15 +378,14 @@
   private:
   
        // Data members...
  -     XercesDOMSupport                                m_xercesDOMSupport;     // 
Must be before m_xercesParserLiaison!!!
   
  -     XercesParserLiaison                             m_xercesParserLiaison;
  +     XercesParserLiaison                     m_xercesParserLiaison;
   
  -     DocumentMapType                                 m_documentMap;
  +     DocumentMapType                         m_documentMap;
   
  -     XalanSourceTreeDOMSupport&              m_domSupport;
  +     DocumentMapType                         m_persistentDocumentMap;
   
  -     bool                                                    m_poolAllText;
  +     bool                                            m_poolAllText;
   };
   
   
  
  
  

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

Reply via email to