dbertoni    01/01/15 18:38:12

  Modified:    c/src/XSLT VariablesStack.cpp VariablesStack.hpp
  Log:
  Reduced copying of XObjectPtr instances.
  
  Revision  Changes    Path
  1.10      +15 -9     xml-xalan/c/src/XSLT/VariablesStack.cpp
  
  Index: VariablesStack.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/VariablesStack.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- VariablesStack.cpp        2000/12/04 20:48:35     1.9
  +++ VariablesStack.cpp        2001/01/16 02:38:12     1.10
  @@ -301,7 +301,7 @@
   void
   VariablesStack::pushVariable(
                        const QName&                            name,
  -                     const XObjectPtr                        val,
  +                     const XObjectPtr&                       val,
                        const ElemTemplateElement*      e)
   {
        if(elementFrameAlreadyPushed(e) == false)
  @@ -380,12 +380,18 @@
   
                assert(theEntry->getType() == StackEntry::eVariable);
   
  -             XObjectPtr      theValue(theEntry->getValue());
  +             const XObjectPtr&       theValue = theEntry->getValue();
   
  -             if (theValue.null() == true)
  +             if (theValue.null() == false)
                {
  +                     return theValue;
  +             }
  +             else
  +             {
                        const ElemVariable* const       var = 
theEntry->getVariable();
   
  +                     XObjectPtr                                      
theNewValue;
  +
                        if (var != 0)
                        {
                                XalanNode* const        doc = 
executionContext.getRootDocument();
  @@ -393,14 +399,14 @@
   
                                SetAndRestoreForceGlobalSearch  theGuard(*this);
   
  -                             theValue = var->getValue(executionContext, doc, 
doc);
  -                             assert(theValue.null() == false);
  +                             theNewValue = var->getValue(executionContext, 
doc, doc);
  +                             assert(theNewValue.null() == false);
   
  -                             theEntry->setValue(theValue);
  +                             theEntry->setValue(theNewValue);
                        }
  -             }
   
  -             return theValue;
  +                     return theNewValue;
  +             }
        }
   }
   
  @@ -547,7 +553,7 @@
   
   VariablesStack::StackEntry::StackEntry(
                const QName*            name,
  -             const XObjectPtr        val) :
  +             const XObjectPtr&       val) :
        m_type(eVariable),
        m_qname(name),
        m_value(val),
  
  
  
  1.8       +3 -3      xml-xalan/c/src/XSLT/VariablesStack.hpp
  
  Index: VariablesStack.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/VariablesStack.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- VariablesStack.hpp        2000/12/04 20:48:35     1.7
  +++ VariablesStack.hpp        2001/01/16 02:38:12     1.8
  @@ -256,7 +256,7 @@
        void
        pushVariable(
                        const QName&                            name,
  -                     const XObjectPtr                        val,
  +                     const XObjectPtr&                       val,
                        const ElemTemplateElement*      e);
   
        /**
  @@ -399,7 +399,7 @@
                 */
                StackEntry(
                        const QName*            name,
  -                     const XObjectPtr        val);
  +                     const XObjectPtr&       val);
   
                /**
                 * Construct a variable that has not been evaluated yet.
  @@ -451,7 +451,7 @@
                 * 
                 * @return pointer to XObject
                 */
  -             const XObjectPtr
  +             const XObjectPtr&
                getValue() const
                {
                        return m_value;
  
  
  

Reply via email to