dbertoni    2003/10/25 17:50:30

  Modified:    c/src/xalanc/XSLT StylesheetExecutionContextDefault.cpp
                        StylesheetExecutionContextDefault.hpp
                        XResultTreeFrag.cpp XResultTreeFrag.hpp
                        XResultTreeFragAllocator.cpp
                        XResultTreeFragAllocator.hpp XSLTEngineImpl.cpp
                        XSLTEngineImpl.hpp XSLTProcessor.hpp
  Removed:     c/src/xalanc/XSLT ResultTreeFrag.cpp ResultTreeFrag.hpp
                        ResultTreeFragAllocator.cpp
                        ResultTreeFragAllocator.hpp
                        ResultTreeFragBaseNodeRefListBaseProxy.cpp
                        ResultTreeFragBaseNodeRefListBaseProxy.hpp
  Log:
  Refactored result tree fragments to use XalanDocumentFragment instead of 
ResultTreeFragBase.  This is because the node-set() extension exposes some 
awkward problems with the implementation.  This also simplifies things, so 
although it changes our XObject interface, in the end, it's much cleaner.  
Fixes Bugzilla 23778.
  
  Revision  Changes    Path
  1.9       +7 -24     
xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StylesheetExecutionContextDefault.cpp     11 Aug 2003 20:31:29 -0000      
1.8
  +++ StylesheetExecutionContextDefault.cpp     26 Oct 2003 00:50:30 -0000      
1.9
  @@ -81,7 +81,6 @@
   
   
   
  -#include <xalanc/XPath/ResultTreeFragBase.hpp>
   #include <xalanc/XPath/XObjectFactory.hpp>
   #include <xalanc/XPath/XPath.hpp>
   #include <xalanc/XPath/XPathEnvSupport.hpp>
  @@ -174,7 +173,6 @@
        m_nodeSorterCache(),
        m_indentAmount(-1),
        m_xresultTreeFragAllocator(eXResultTreeFragAllocatorBlockSize),
  -     m_resultTreeFragAllocator(eResultTreeFragAllocatorBlockSize),
        m_documentFragmentAllocator(eDocumentFragmentAllocatorBlockSize),
        m_documentAllocator(eDocumentAllocatorBlockSize),
        m_usePerInstanceDocumentFactory(false),
  @@ -217,7 +215,6 @@
        m_nodeSorterCache(),
        m_indentAmount(-1),
        m_xresultTreeFragAllocator(eXResultTreeFragAllocatorBlockSize),
  -     m_resultTreeFragAllocator(eResultTreeFragAllocatorBlockSize),
        m_documentFragmentAllocator(eDocumentFragmentAllocatorBlockSize),
        m_documentAllocator(eDocumentAllocatorBlockSize),
        m_usePerInstanceDocumentFactory(false),
  @@ -1028,10 +1025,6 @@
                m_documentFragmentAllocator.create(*theDocument);
        assert(theDocumentFragment != 0);
   
  -     ResultTreeFragBase* const       theResultTreeFrag =
  -             m_resultTreeFragAllocator.create(theDocumentFragment);
  -     assert(theResultTreeFrag != 0);
  -
        GuardCachedObject<FormatterToSourceTreeCacheType>       
theGuard(m_formatterToSourceTreeCache);
   
        FormatterToSourceTree* const    theFormatter = theGuard.get();
  @@ -1054,7 +1047,7 @@
        theFormatter->endDocument();
   
        XResultTreeFrag* const  theXResultTreeFrag =
  -             m_xresultTreeFragAllocator.create(*theResultTreeFrag);
  +             m_xresultTreeFragAllocator.create(*theDocumentFragment);
   
        theXResultTreeFrag->setExecutionContext(this);
   
  @@ -1188,24 +1181,11 @@
        }
        else
        {
  -             ResultTreeFragBase* const       theResultTreeFragBase =
  +             XalanDocumentFragment* const    theDocumentFragment =
                        theXResultTreeFrag->release();
   
                m_xresultTreeFragAllocator.destroy(theXResultTreeFrag);
   
  -             ResultTreeFrag* const   theResultTreeFrag =
  -#if defined(XALAN_OLD_STYLE_CASTS)
  -                     (ResultTreeFrag*)theResultTreeFragBase;
  -#else
  -                     static_cast<ResultTreeFrag*>(theResultTreeFragBase);
  -#endif
  -
  -             XalanSourceTreeDocumentFragment* const  theDocumentFragment =
  -                     theResultTreeFrag->getDocumentFragment();
  -             assert(theDocumentFragment != 0);
  -
  -             m_resultTreeFragAllocator.destroy(theResultTreeFrag);
  -
                if (m_usePerInstanceDocumentFactory == true)
                {
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  @@ -1219,7 +1199,11 @@
   #endif
                }
   
  -             m_documentFragmentAllocator.destroy(theDocumentFragment);
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +             
m_documentFragmentAllocator.destroy((XalanSourceTreeDocumentFragment*)theDocumentFragment);
  +#else
  +             
m_documentFragmentAllocator.destroy(static_cast<XalanSourceTreeDocumentFragment*>(theDocumentFragment));
  +#endif
   
           return true;
        }
  @@ -1693,7 +1677,6 @@
        m_nodeSorterCache.reset();
        m_documentAllocator.reset();
        m_documentFragmentAllocator.reset();
  -     m_resultTreeFragAllocator.reset();
        m_xresultTreeFragAllocator.reset();
   
        // Just in case endDocument() was not called,
  
  
  
  1.8       +0 -5      
xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp
  
  Index: StylesheetExecutionContextDefault.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StylesheetExecutionContextDefault.hpp     11 Aug 2003 20:31:29 -0000      
1.7
  +++ StylesheetExecutionContextDefault.hpp     26 Oct 2003 00:50:30 -0000      
1.8
  @@ -96,8 +96,6 @@
   
   #include <xalanc/XSLT/CountersTable.hpp>
   #include <xalanc/XSLT/NodeSorter.hpp>
  -#include <xalanc/XSLT/ResultTreeFrag.hpp>
  -#include <xalanc/XSLT/ResultTreeFragAllocator.hpp>
   #include <xalanc/XSLT/Stylesheet.hpp>
   #include <xalanc/XSLT/VariablesStack.hpp>
   #include <xalanc/XSLT/XResultTreeFragAllocator.hpp>
  @@ -1071,7 +1069,6 @@
        enum { eXPathCacheMax = 50,
                   eDefaultParamsVectorSize = 10,
                   eXResultTreeFragAllocatorBlockSize = 10,
  -                eResultTreeFragAllocatorBlockSize = 10,
                   eDocumentAllocatorBlockSize = 10,
                   eDocumentFragmentAllocatorBlockSize = 10,
                   eDefaultAttributeAllocatorBlockSize = 10,
  @@ -1141,8 +1138,6 @@
        int                                                                     
m_indentAmount;
   
        XResultTreeFragAllocator                        
m_xresultTreeFragAllocator;
  -
  -     ResultTreeFragAllocator                         
m_resultTreeFragAllocator;
   
        XalanSourceTreeDocumentFragmentAllocator        
m_documentFragmentAllocator;
   
  
  
  
  1.3       +7 -7      xml-xalan/c/src/xalanc/XSLT/XResultTreeFrag.cpp
  
  Index: XResultTreeFrag.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XResultTreeFrag.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XResultTreeFrag.cpp       19 Sep 2003 21:05:30 -0000      1.2
  +++ XResultTreeFrag.cpp       26 Oct 2003 00:50:30 -0000      1.3
  @@ -59,6 +59,7 @@
   
   
   
  +#include <xalanc/XalanDOM/XalanDocumentFragment.hpp>
   #include <xalanc/XalanDOM/XalanNodeList.hpp>
   #include <xalanc/XalanDOM/XalanText.hpp>
   
  @@ -75,7 +76,6 @@
   
   #include <xalanc/XPath/FormatterStringLengthCounter.hpp>
   #include <xalanc/XPath/NodeRefListBase.hpp>
  -#include <xalanc/XPath/ResultTreeFragBase.hpp>
   #include <xalanc/XPath/XObjectTypeCallback.hpp>
   
   
  @@ -89,7 +89,7 @@
   
   
   inline const XalanDOMString*
  -getSingleTextChildValue(const ResultTreeFragBase&    theRTreeFrag)
  +getSingleTextChildValue(const XalanDocumentFragment& theRTreeFrag)
   {
        const XalanNode* const  theFirstChild = theRTreeFrag.getFirstChild();
   
  @@ -107,7 +107,7 @@
   
   
   
  -XResultTreeFrag::XResultTreeFrag(ResultTreeFragBase& value) :
  +XResultTreeFrag::XResultTreeFrag(XalanDocumentFragment&              value) :
        XObject(eTypeResultTreeFrag),
        m_value(&value),
        m_singleTextChildValue(getSingleTextChildValue(value)),
  @@ -287,7 +287,7 @@
   
   
   
  -const ResultTreeFragBase&
  +const XalanDocumentFragment&
   XResultTreeFrag::rtree() const
   {
        assert(m_value != 0);
  @@ -323,7 +323,7 @@
   
   
   
  -ResultTreeFragBase*
  +XalanDocumentFragment*
   XResultTreeFrag::release()
   {
        m_singleTextChildValue = 0;
  @@ -332,7 +332,7 @@
   
        m_cachedNumberValue = 0.0;
   
  -     ResultTreeFragBase* const       temp = m_value;
  +     XalanDocumentFragment* const    temp = m_value;
   
        m_value = 0;
   
  @@ -342,7 +342,7 @@
   
   
   void
  -XResultTreeFrag::set(ResultTreeFragBase&     theValue)
  +XResultTreeFrag::set(XalanDocumentFragment&          theValue)
   {
        release();
   
  
  
  
  1.3       +5 -5      xml-xalan/c/src/xalanc/XSLT/XResultTreeFrag.hpp
  
  Index: XResultTreeFrag.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XResultTreeFrag.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XResultTreeFrag.hpp       19 Sep 2003 21:05:30 -0000      1.2
  +++ XResultTreeFrag.hpp       26 Oct 2003 00:50:30 -0000      1.3
  @@ -108,7 +108,7 @@
         * 
         * @param val source result tree fragment.
         */
  -     XResultTreeFrag(ResultTreeFragBase&             value);
  +     XResultTreeFrag(XalanDocumentFragment&          value);
   
        /**
         * Construct an XResultTreeFrag object from another
  @@ -162,7 +162,7 @@
        virtual double
        stringLength() const;
   
  -     virtual const ResultTreeFragBase&
  +     virtual const XalanDocumentFragment&
        rtree() const;
   
        virtual const NodeRefListBase&
  @@ -177,7 +177,7 @@
        /**
         * Release the ResultTreeFrag held by the instance.
         */
  -     ResultTreeFragBase*
  +     XalanDocumentFragment*
        release();
   
        /**
  @@ -186,7 +186,7 @@
         * @param theValue The new value.
         */
        void
  -     set(ResultTreeFragBase&         theValue);
  +     set(XalanDocumentFragment&      theValue);
   
   protected:
   
  @@ -196,7 +196,7 @@
   private:
   
        // Data members...
  -     ResultTreeFragBase*                             m_value;        
  +     XalanDocumentFragment*                  m_value;        
   
        const XalanDOMString*                   m_singleTextChildValue;
   
  
  
  
  1.3       +1 -1      xml-xalan/c/src/xalanc/XSLT/XResultTreeFragAllocator.cpp
  
  Index: XResultTreeFragAllocator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XResultTreeFragAllocator.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XResultTreeFragAllocator.cpp      19 Sep 2003 21:05:30 -0000      1.2
  +++ XResultTreeFragAllocator.cpp      26 Oct 2003 00:50:30 -0000      1.3
  @@ -79,7 +79,7 @@
   
   
   XResultTreeFragAllocator::data_type*
  -XResultTreeFragAllocator::create(ResultTreeFragBase& theValue)
  +XResultTreeFragAllocator::create(XalanDocumentFragment&              
theValue)
   {
        data_type* const        theBlock = m_allocator.allocateBlock();
        assert(theBlock != 0);
  
  
  
  1.3       +1 -1      xml-xalan/c/src/xalanc/XSLT/XResultTreeFragAllocator.hpp
  
  Index: XResultTreeFragAllocator.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XResultTreeFragAllocator.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XResultTreeFragAllocator.hpp      19 Sep 2003 21:05:30 -0000      1.2
  +++ XResultTreeFragAllocator.hpp      26 Oct 2003 00:50:30 -0000      1.3
  @@ -103,7 +103,7 @@
         * @return pointer to a node
         */
        data_type*
  -     create(ResultTreeFragBase&      theValue);
  +     create(XalanDocumentFragment&   theValue);
   
        /**
         * Create an XResultTreeFrag object.
  
  
  
  1.9       +2 -6      xml-xalan/c/src/xalanc/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XSLTEngineImpl.cpp        19 Sep 2003 21:05:30 -0000      1.8
  +++ XSLTEngineImpl.cpp        26 Oct 2003 00:50:30 -0000      1.9
  @@ -73,6 +73,7 @@
   
   
   #include <xalanc/XalanDOM/XalanDOMException.hpp>
  +#include <xalanc/XalanDOM/XalanDocumentFragment.hpp>
   #include <xalanc/XalanDOM/XalanNode.hpp>
   #include <xalanc/XalanDOM/XalanAttr.hpp>
   #include <xalanc/XalanDOM/XalanComment.hpp>
  @@ -105,7 +106,6 @@
   
   #include <xalanc/XPath/ElementPrefixResolverProxy.hpp>
   #include <xalanc/XPath/XalanQNameByReference.hpp>
  -#include <xalanc/XPath/ResultTreeFragBase.hpp>
   #include <xalanc/XPath/XObject.hpp>
   #include <xalanc/XPath/XObjectFactory.hpp>
   #include <xalanc/XPath/XPathEnvSupport.hpp>
  @@ -2187,11 +2187,7 @@
   
                                        posNodeType = pos->getNodeType();
   
  -                                     if (posNodeType == 
XalanNode::DOCUMENT_FRAGMENT_NODE)
  -                                     {
  -                                             break;
  -                                     }
  -                                     else if (&node == pos)
  +                                     if (&node == pos)
                                        {
                                                if(XalanNode::ELEMENT_NODE == 
posNodeType)
                                                {
  
  
  
  1.5       +0 -1      xml-xalan/c/src/xalanc/XSLT/XSLTEngineImpl.hpp
  
  Index: XSLTEngineImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XSLTEngineImpl.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XSLTEngineImpl.hpp        19 Sep 2003 21:05:30 -0000      1.4
  +++ XSLTEngineImpl.hpp        26 Oct 2003 00:50:30 -0000      1.5
  @@ -136,7 +136,6 @@
   class DOMSupport;
   class GenerateEvent;
   class PrintWriter;
  -class ResultTreeFragBase;
   class StylesheetConstructionContext;
   class StylesheetExecutionContext;
   class StylesheetRoot;
  
  
  
  1.3       +0 -1      xml-xalan/c/src/xalanc/XSLT/XSLTProcessor.hpp
  
  Index: XSLTProcessor.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/XSLTProcessor.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XSLTProcessor.hpp 19 Sep 2003 21:05:30 -0000      1.2
  +++ XSLTProcessor.hpp 26 Oct 2003 00:50:30 -0000      1.3
  @@ -90,7 +90,6 @@
   class NodeRefListBase;
   class PrefixResolver;
   class PrintWriter;
  -class ResultTreeFragBase;
   class SelectionEvent;
   class StylesheetConstructionContext;
   class StylesheetExecutionContext;
  
  
  

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

Reply via email to