dbertoni    02/04/16 22:34:20

  Modified:    c/src/XalanExtensions FunctionDifference.cpp
                        FunctionDifference.hpp FunctionDistinct.cpp
                        FunctionDistinct.hpp FunctionEvaluate.cpp
                        FunctionEvaluate.hpp FunctionHasSameNodes.cpp
                        FunctionHasSameNodes.hpp FunctionIntersection.cpp
                        FunctionIntersection.hpp FunctionNodeSet.cpp
                        FunctionNodeSet.hpp
  Log:
  Updated extension functions to use direct execute() call.
  
  Revision  Changes    Path
  1.6       +12 -8     xml-xalan/c/src/XalanExtensions/FunctionDifference.cpp
  
  Index: FunctionDifference.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionDifference.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionDifference.cpp    26 Sep 2001 20:53:11 -0000      1.5
  +++ FunctionDifference.cpp    17 Apr 2002 05:34:20 -0000      1.6
  @@ -77,16 +77,20 @@
   
   XObjectPtr
   FunctionDifference::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              /* context */,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  /* locator */) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg1.null() == false && arg2.null() == false);
  +     if (args.size() != 2)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
   
  -     const NodeRefListBase&  nodeset1 = arg1->nodeset();
  -     const NodeRefListBase&  nodeset2 = arg2->nodeset();
  +     assert(args[0].null() == false && args[1].null() == false);
  +
  +     const NodeRefListBase&  nodeset1 = args[0]->nodeset();
  +     const NodeRefListBase&  nodeset2 = args[1]->nodeset();
   
        typedef XPathExecutionContext::BorrowReturnMutableNodeRefList   
BorrowReturnMutableNodeRefList;
   
  
  
  
  1.3       +4 -5      xml-xalan/c/src/XalanExtensions/FunctionDifference.hpp
  
  Index: FunctionDifference.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionDifference.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FunctionDifference.hpp    14 Sep 2001 20:57:21 -0000      1.2
  +++ FunctionDifference.hpp    17 Apr 2002 05:34:20 -0000      1.3
  @@ -85,11 +85,10 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.8       +11 -6     xml-xalan/c/src/XalanExtensions/FunctionDistinct.cpp
  
  Index: FunctionDistinct.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionDistinct.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FunctionDistinct.cpp      26 Sep 2001 20:53:11 -0000      1.7
  +++ FunctionDistinct.cpp      17 Apr 2002 05:34:20 -0000      1.8
  @@ -89,14 +89,19 @@
   
   XObjectPtr
   FunctionDistinct::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              /* context */,         
         
  -                     const XObjectPtr                arg,
  -                     const Locator*                  /* locator */) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg.null() == false);
  +     if (args.size() != 1)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
   
  -     const NodeRefListBase&  nodeset = arg->nodeset();
  +     assert(args[0].null() == false);
  +
  +     const NodeRefListBase&  nodeset = args[0]->nodeset();
   
        typedef XPathExecutionContext::BorrowReturnMutableNodeRefList   
BorrowReturnMutableNodeRefList;
   
  
  
  
  1.3       +4 -4      xml-xalan/c/src/XalanExtensions/FunctionDistinct.hpp
  
  Index: FunctionDistinct.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionDistinct.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FunctionDistinct.hpp      14 Sep 2001 20:57:21 -0000      1.2
  +++ FunctionDistinct.hpp      17 Apr 2002 05:34:20 -0000      1.3
  @@ -85,10 +85,10 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.6       +48 -11    xml-xalan/c/src/XalanExtensions/FunctionEvaluate.cpp
  
  Index: FunctionEvaluate.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionEvaluate.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionEvaluate.cpp      20 Sep 2001 18:06:05 -0000      1.5
  +++ FunctionEvaluate.cpp      17 Apr 2002 05:34:20 -0000      1.6
  @@ -62,6 +62,11 @@
   
   
   
  +#include <XalanDOM/XalanElement.hpp>
  +
  +
  +
  +#include <XPath/ElementPrefixResolverProxy.hpp>
   #include <XPath/XObjectFactory.hpp>
   #include <XPath/XPath.hpp>
   #include <XPath/XPathProcessorImpl.hpp>
  @@ -82,24 +87,56 @@
   
   XObjectPtr
   FunctionEvaluate::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,               
         
  -                     const XObjectPtr                arg,
  -                     const Locator*                  locator) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg.null() == false);    
  +     if (args.size() != 1)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
  +
  +     assert(args[0].null() == false);
   
        const PrefixResolver* const     theResolver =
                executionContext.getPrefixResolver();
   
        if (theResolver == 0)
        {
  -             executionContext.warn(
  -                     "No prefix resolver available in evaluate()!",
  -                     context,
  -                     locator);
  +             if (context->getNodeType() != XalanNode::ELEMENT_NODE)
  +             {
  +                     executionContext.warn(
  +                             "No prefix resolver is available in evaluate().  The 
expression cannot be evaluated.",
  +                             context,
  +                             locator);
  +
  +                     return args[0];
  +             }
  +             else
  +             {
  +                     executionContext.warn(
  +                             "No prefix resolver is available in evaluate().  
evalute() will use the context node for prefix resolution.",
  +                             context,
  +                             locator);
  +
  +#if defined(XALAN_OLD_STYLE_CASTS)
  +                     ElementPrefixResolverProxy      theProxy((const 
XalanElement*)context);
  +#else
  +                     ElementPrefixResolverProxy      theProxy(static_cast<const 
XalanElement*>(context));
  +#endif
  +
  +                     XPathProcessorImpl      theProcessor;
  +
  +                     XPath                           theXPath;
  +
  +                     theProcessor.initXPath(
  +                                     theXPath,
  +                                     args[0]->str(),
  +                                     theProxy);
   
  -             return arg;
  +                     return theXPath.execute(context, *theResolver, 
executionContext);
  +             }
        }
        else
        {
  @@ -109,7 +146,7 @@
   
                theProcessor.initXPath(
                                theXPath,
  -                             arg->str(),
  +                             args[0]->str(),
                                *theResolver);
   
                return theXPath.execute(context, *theResolver, executionContext);
  
  
  
  1.3       +4 -4      xml-xalan/c/src/XalanExtensions/FunctionEvaluate.hpp
  
  Index: FunctionEvaluate.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionEvaluate.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FunctionEvaluate.hpp      14 Sep 2001 20:57:21 -0000      1.2
  +++ FunctionEvaluate.hpp      17 Apr 2002 05:34:20 -0000      1.3
  @@ -85,10 +85,10 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.6       +12 -8     xml-xalan/c/src/XalanExtensions/FunctionHasSameNodes.cpp
  
  Index: FunctionHasSameNodes.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionHasSameNodes.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionHasSameNodes.cpp  26 Sep 2001 20:53:11 -0000      1.5
  +++ FunctionHasSameNodes.cpp  17 Apr 2002 05:34:20 -0000      1.6
  @@ -77,16 +77,20 @@
   
   XObjectPtr
   FunctionHasSameNodes::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              /* context */,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  /* locator */) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg1.null() == false && arg2.null() == false);
  +     if (args.size() != 2)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
   
  -     const NodeRefListBase&  nodeset1 = arg1->nodeset();
  -     const NodeRefListBase&  nodeset2 = arg2->nodeset();
  +     assert(args[0].null() == false && args[1].null() == false);
  +
  +     const NodeRefListBase&  nodeset1 = args[0]->nodeset();
  +     const NodeRefListBase&  nodeset2 = args[1]->nodeset();
   
        const NodeRefListBase::size_type        theLength = nodeset1.getLength();
   
  
  
  
  1.3       +5 -5      xml-xalan/c/src/XalanExtensions/FunctionHasSameNodes.hpp
  
  Index: FunctionHasSameNodes.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionHasSameNodes.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FunctionHasSameNodes.hpp  14 Sep 2001 20:57:21 -0000      1.2
  +++ FunctionHasSameNodes.hpp  17 Apr 2002 05:34:20 -0000      1.3
  @@ -85,11 +85,11 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
  +
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
   #else
  
  
  
  1.6       +12 -8     xml-xalan/c/src/XalanExtensions/FunctionIntersection.cpp
  
  Index: FunctionIntersection.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionIntersection.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionIntersection.cpp  26 Sep 2001 20:53:11 -0000      1.5
  +++ FunctionIntersection.cpp  17 Apr 2002 05:34:20 -0000      1.6
  @@ -77,16 +77,20 @@
   
   XObjectPtr
   FunctionIntersection::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              /* context */,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  /* locator */) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg1.null() == false && arg2.null() == false);
  +     if (args.size() != 2)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
   
  -     const NodeRefListBase&  nodeset1 = arg1->nodeset();
  -     const NodeRefListBase&  nodeset2 = arg2->nodeset();
  +     assert(args[0].null() == false && args[1].null() == false);
  +
  +     const NodeRefListBase&  nodeset1 = args[0]->nodeset();
  +     const NodeRefListBase&  nodeset2 = args[1]->nodeset();
   
        typedef XPathExecutionContext::BorrowReturnMutableNodeRefList   
BorrowReturnMutableNodeRefList;
   
  
  
  
  1.3       +4 -5      xml-xalan/c/src/XalanExtensions/FunctionIntersection.hpp
  
  Index: FunctionIntersection.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionIntersection.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FunctionIntersection.hpp  14 Sep 2001 20:57:21 -0000      1.2
  +++ FunctionIntersection.hpp  17 Apr 2002 05:34:20 -0000      1.3
  @@ -85,11 +85,10 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg1,
  -                     const XObjectPtr                arg2,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  
  1.7       +13 -8     xml-xalan/c/src/XalanExtensions/FunctionNodeSet.cpp
  
  Index: FunctionNodeSet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionNodeSet.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FunctionNodeSet.cpp       27 Sep 2001 14:13:44 -0000      1.6
  +++ FunctionNodeSet.cpp       17 Apr 2002 05:34:20 -0000      1.7
  @@ -153,25 +153,30 @@
   
   XObjectPtr
   FunctionNodeSet::execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,               
         
  -                     const XObjectPtr                arg,
  -                     const Locator*                  locator) const
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const
   {
  -     assert(arg.null() == false);    
  +     if (args.size() != 1)
  +     {
  +             executionContext.error(getError(), context, locator);
  +     }
  +
  +     assert(args[0].null() == false);
   
  -     if (arg->getType() != XObject::eTypeResultTreeFrag)
  +     if (args[0]->getType() != XObject::eTypeResultTreeFrag)
        {
                executionContext.warn(
                        "Invalid argument type in function nodeset()!",
                        context,
                        locator);
   
  -             return arg;
  +             return args[0];
        }
        else
        {
  -             return XObjectPtr(new XResultTreeFragNodeSetProxy(arg));
  +             return XObjectPtr(new XResultTreeFragNodeSetProxy(args[0]));
        }
   }
   
  
  
  
  1.4       +4 -4      xml-xalan/c/src/XalanExtensions/FunctionNodeSet.hpp
  
  Index: FunctionNodeSet.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanExtensions/FunctionNodeSet.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FunctionNodeSet.hpp       1 Nov 2001 15:48:34 -0000       1.3
  +++ FunctionNodeSet.hpp       17 Apr 2002 05:34:20 -0000      1.4
  @@ -89,10 +89,10 @@
   
        virtual XObjectPtr
        execute(
  -                     XPathExecutionContext&  executionContext,
  -                     XalanNode*                              context,
  -                     const XObjectPtr                arg,
  -                     const Locator*                  locator) const;
  +                     XPathExecutionContext&                  executionContext,
  +                     XalanNode*                                              
context,
  +                     const XObjectArgVectorType&             args,
  +                     const Locator*                                  locator) const;
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
        virtual Function*
  
  
  

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

Reply via email to