You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by au...@locus.apache.org on 2000/11/06 20:34:52 UTC
cvs commit: xml-xalan/c/src/XPath Function.hpp FunctionBoolean.hpp FunctionCeiling.hpp FunctionContains.hpp FunctionCount.hpp FunctionDoc.hpp FunctionFalse.hpp FunctionFloor.hpp FunctionID.hpp FunctionLast.hpp FunctionNot.hpp FunctionNumber.hpp FunctionPosition.hpp FunctionRound.hpp FunctionStartsWith.hpp FunctionString.hpp FunctionStringLength.hpp FunctionTrue.hpp XPath.cpp XPathException.hpp XPathExecutionContext.hpp XPathFunctionTable.cpp
auriemma 00/11/06 11:34:46
Modified: c/src/XPath Function.hpp FunctionBoolean.hpp
FunctionCeiling.hpp FunctionContains.hpp
FunctionCount.hpp FunctionDoc.hpp FunctionFalse.hpp
FunctionFloor.hpp FunctionID.hpp FunctionLast.hpp
FunctionNot.hpp FunctionNumber.hpp
FunctionPosition.hpp FunctionRound.hpp
FunctionStartsWith.hpp FunctionString.hpp
FunctionStringLength.hpp FunctionTrue.hpp XPath.cpp
XPathException.hpp XPathExecutionContext.hpp
XPathFunctionTable.cpp
Log:
Modified XSLT Functions so they are called with a specific number of arguments.
Revision Changes Path
1.6 +101 -7 xml-xalan/c/src/XPath/Function.hpp
Index: Function.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/Function.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Function.hpp 2000/08/10 18:37:29 1.5
+++ Function.hpp 2000/11/06 19:33:03 1.6
@@ -64,6 +64,12 @@
+#include <XPath/XObject.hpp>
+#include <XPath/XObjectFactory.hpp>
+#include <XPath/XPathExecutionContext.hpp>
+
+
+
#include <vector>
@@ -88,11 +94,7 @@
{
}
-#if defined(XALAN_NO_NAMESPACES)
- typedef vector<const XObject*> XObjectArgVectorType;
-#else
- typedef std::vector<const XObject*> XObjectArgVectorType;
-#endif
+ typedef XPathExecutionContext::XObjectArgVectorType XObjectArgVectorType;
/**
* Execute an XPath function object. The function must return a valid
@@ -108,10 +110,91 @@
execute(
XPathExecutionContext& executionContext,
XalanNode* context,
- int opPos,
- const XObjectArgVectorType& args) = 0;
+ int /* opPos */,
+ const XObjectArgVectorType& /* args */)
+ {
+ executionContext.error(getError(), context);
+ return 0;
+ }
+
+ /**
+ * Execute an XPath function object. The function must return a valid
+ * object. Called if function has no parameters.
+ *
+ * @param executionContext executing context
+ * @param context current context node
+ * @return pointer to the result XObject
+ */
+ virtual XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context)
+ {
+ executionContext.error(getError(), context);
+ return 0;
+ }
+
+ /**
+ * Execute an XPath function object. The function must return a valid
+ * object. Called if function has one parameter.
+ *
+ * @param executionContext executing context
+ * @param context current context node
+ * @param arg1 pointer to XObject arguments
+ * @return pointer to the result XObject
+ */
+ virtual XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context,
+ const XObject* /* arg1 */)
+ {
+ executionContext.error(getError(), context);
+ return 0;
+ }
+
+ /**
+ * Execute an XPath function object. The function must return a valid
+ * object. Called if function has two parameters.
+ *
+ * @param executionContext executing context
+ * @param context current context node
+ * @param arg1 pointer to XObject arguments
+ * @return pointer to the result XObject
+ */
+ virtual XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context,
+ const XObject* /* arg1 */,
+ const XObject* /* arg2 */)
+ {
+ executionContext.error(getError(), context);
+ return 0;
+ }
/**
+ * Execute an XPath function object. The function must return a valid
+ * object. Called if function has three parameters.
+ *
+ * @param executionContext executing context
+ * @param context current context node
+ * @param arg1 pointer to XObject arguments
+ * @return pointer to the result XObject
+ */
+ virtual XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context,
+ const XObject* /* arg1 */,
+ const XObject* /* arg2 */,
+ const XObject* /* arg3 */)
+ {
+ executionContext.error(getError(), context);
+ return 0;
+ }
+
+ /**
* Create a copy of the function object.
*
* @return pointer to the new object
@@ -121,6 +204,17 @@
private:
+ /**
+ * Create a copy of the function object.
+ *
+ * @return string function name
+ */
+ virtual const XalanDOMString
+ getError() const
+ {
+ return "Unknown function called.";
+ }
+
// Not implemented...
Function&
operator=(const Function&);
1.5 +11 -30 xml-xalan/c/src/XPath/FunctionBoolean.hpp
Index: FunctionBoolean.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionBoolean.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionBoolean.hpp 2000/04/11 14:46:04 1.4
+++ FunctionBoolean.hpp 2000/11/06 19:33:06 1.5
@@ -64,61 +64,42 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "boolean" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionBoolean : public Function
{
public:
+ FunctionBoolean();
+
+ virtual
+ ~FunctionBoolean();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() != 1)
- {
- executionContext.error("The boolean() function takes one argument!",
- context);
- }
+ XalanNode* context,
+ const XObject* arg1);
- return executionContext.getXObjectFactory().createBoolean(args[0]->boolean());
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionBoolean*
#endif
- clone() const
- {
- return new FunctionBoolean(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionBoolean&
1.5 +11 -26 xml-xalan/c/src/XPath/FunctionCeiling.hpp
Index: FunctionCeiling.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionCeiling.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionCeiling.hpp 2000/04/11 14:46:04 1.4
+++ FunctionCeiling.hpp 2000/11/06 19:33:07 1.5
@@ -65,7 +65,6 @@
#include <cmath>
-#include <vector>
@@ -74,51 +73,37 @@
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "ceiling" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionCeiling : public Function
{
public:
+ FunctionCeiling();
+
+ virtual
+ ~FunctionCeiling();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 1)
- {
- executionContext.error("The ceiling() function takes one argument!",
- context);
- }
-
- return executionContext.getXObjectFactory().createNumber(ceil(args[0]->num()));
- }
+ XalanNode* context,
+ const XObject* arg1);
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionCeiling*
#endif
- clone() const
- {
- return new FunctionCeiling(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionCeiling&
1.8 +12 -57 xml-xalan/c/src/XPath/FunctionContains.hpp
Index: FunctionContains.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionContains.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- FunctionContains.hpp 2000/09/19 14:53:45 1.7
+++ FunctionContains.hpp 2000/11/06 19:33:09 1.8
@@ -64,88 +64,43 @@
-#include <vector>
-
-
-
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "contains" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionContains : public Function
{
public:
+ FunctionContains();
+
+ virtual
+ ~FunctionContains();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() != 2)
- {
- executionContext.error("The contains() function takes two arguments!",
- context);
- }
-
- const XalanDOMString& arg1 = args[0]->str();
- const XalanDOMString& arg2 = args[1]->str();
-
- bool fResult = true;
-
- // If arg2 is empty, then don't bother to check anything.
- if (isEmpty(arg2) == false)
- {
- // Is arg1 empty?
- if (isEmpty(arg1) == true)
- {
- fResult = false;
- }
- else
- {
- // OK, both strings have some data, so look for
- // the index...
- const unsigned int theIndex = indexOf(arg1, arg2);
-
- fResult = theIndex < length(arg1) ? true : false;
- }
- }
-
- return executionContext.getXObjectFactory().createBoolean(fResult);
- }
+ XalanNode* context,
+ const XObject* arg1,
+ const XObject* arg2);
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionContains*
#endif
- clone() const
- {
- return new FunctionContains(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionContains&
1.5 +12 -34 xml-xalan/c/src/XPath/FunctionCount.hpp
Index: FunctionCount.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionCount.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionCount.hpp 2000/04/11 14:46:05 1.4
+++ FunctionCount.hpp 2000/11/06 19:33:12 1.5
@@ -64,65 +64,43 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/NodeRefListBase.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "count" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionCount : public Function
{
public:
+ FunctionCount();
+
+ virtual
+ ~FunctionCount();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() != 1)
- {
- executionContext.error("The count() function takes one argument!",
- context);
- }
-
- const NodeRefListBase& theNodeList = args[0]->nodeset();
+ XalanNode* context,
+ const XObject* arg1);
- return executionContext.getXObjectFactory().createNumber(theNodeList.getLength());
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionCount*
#endif
- clone() const
- {
- return new FunctionCount(*this);
- }
+ clone() const;
private:
+ virtual const XalanDOMString
+ getError() const;
+
// Not implemented...
FunctionCount&
operator=(const FunctionCount&);
@@ -133,4 +111,4 @@
-#endif // FUNCTIONCOUNT_HEADER_GUARD_1357924680
+#endif // FUNCTIONCOUNT_HEADER_GUARD_1357924680
\ No newline at end of file
1.4 +0 -6 xml-xalan/c/src/XPath/FunctionDoc.hpp
Index: FunctionDoc.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionDoc.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FunctionDoc.hpp 2000/03/03 19:00:13 1.3
+++ FunctionDoc.hpp 2000/11/06 19:33:14 1.4
@@ -76,12 +76,6 @@
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "document" function.
*/
1.5 +10 -29 xml-xalan/c/src/XPath/FunctionFalse.hpp
Index: FunctionFalse.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionFalse.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionFalse.hpp 2000/04/11 14:46:05 1.4
+++ FunctionFalse.hpp 2000/11/06 19:33:16 1.5
@@ -64,60 +64,41 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "false" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionFalse : public Function
{
public:
+ FunctionFalse();
+
+ virtual
+ ~FunctionFalse();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() > 0)
- {
- executionContext.error("The false() function does not accept arguments!",
- context);
- }
+ XalanNode* context);
- return executionContext.getXObjectFactory().createBoolean(false);
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionFalse*
#endif
- clone() const
- {
- return new FunctionFalse(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionFalse&
1.5 +11 -27 xml-xalan/c/src/XPath/FunctionFloor.hpp
Index: FunctionFloor.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionFloor.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionFloor.hpp 2000/04/11 14:46:05 1.4
+++ FunctionFloor.hpp 2000/11/06 19:33:18 1.5
@@ -65,7 +65,6 @@
#include <cmath>
-#include <vector>
@@ -74,52 +73,37 @@
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "floor" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionFloor : public Function
{
public:
+ FunctionFloor();
+
+ virtual
+ ~FunctionFloor();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 1)
- {
- executionContext.error("The floor() function takes one argument!",
- context);
- }
-
- return executionContext.getXObjectFactory().createNumber(floor(args[0]->num()));
- }
+ XalanNode* context,
+ const XObject* arg1);
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionFloor*
#endif
- clone() const
- {
- return new FunctionFloor(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionFloor&
1.17 +11 -108 xml-xalan/c/src/XPath/FunctionID.hpp
Index: FunctionID.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionID.hpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- FunctionID.hpp 2000/11/02 22:25:46 1.16
+++ FunctionID.hpp 2000/11/06 19:33:20 1.17
@@ -53,8 +53,6 @@
* Business Machines, Inc., http://www.ibm.com. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
- *
- * @author <a href="mailto:david_n_bertoni@lotus.com">David N. Bertoni</a>
*/
#if !defined(FUNCTIONID_HEADER_GUARD_1357924680)
#define FUNCTIONID_HEADER_GUARD_1357924680
@@ -84,139 +82,41 @@
#include <PlatformSupport/DOMStringHelper.hpp>
#include <PlatformSupport/StringTokenizer.hpp>
-#include <PlatformSupport/XalanUnicode.hpp>
#include <XPath/MutableNodeRefList.hpp>
#include <XPath/NodeRefListBase.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
/**
* XPath implementation of "id" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionID : public Function
{
public:
- FunctionID() :
- Function()
- {
- }
+ FunctionID();
+
+ virtual
+ ~FunctionID();
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 1)
- {
- executionContext.error("The id() function takes one argument!",
- context);
- }
- else if (context == 0)
- {
- executionContext.error("The id() function requires a non-null context node!",
- context);
- }
-
- assert(args[0] != 0);
-
- // Do the callback to get the data.
- FunctionIDXObjectTypeCallback theCallback(executionContext);
-
- const XalanDOMString theResultString =
- theCallback.processCallback(*args[0]);
-
- // Get the context document, so we can search for nodes.
- const XalanDocument* const theDocContext = context->getNodeType() == XalanNode::DOCUMENT_NODE ?
-#if defined(XALAN_OLD_STYLE_CASTS)
- (const XalanDocument*)context :
-#else
- static_cast<const XalanDocument*>(context) :
-#endif
- context->getOwnerDocument();
- assert(theDocContext != 0);
-
- typedef XPathExecutionContext::BorrowReturnMutableNodeRefList BorrowReturnMutableNodeRefList;
-
- // This list will hold the nodes we find.
-
- BorrowReturnMutableNodeRefList theNodeList(executionContext);
+ XalanNode* context,
+ const XObject* arg1);
- // If there is no context, we cannot continue.
- if(0 == theDocContext)
- {
- executionContext.error("The context node does not have an owner document!",
- context);
- }
- else if (length(theResultString) > 0)
- {
-#if defined(XALAN_NO_NAMESPACES)
- typedef set<XalanDOMString, less<XalanDOMString> > TokenSetType;
-#else
- typedef std::set<XalanDOMString> TokenSetType;
-#endif
-
- // This set will hold tokens that we've previously found, so
- // we can avoid looking more than once.
- TokenSetType thePreviousTokens;
-
- StringTokenizer theTokenizer(theResultString);
-
- // Parse the result string...
- while(theTokenizer.hasMoreTokens() == true)
- {
- const XalanDOMString theToken = theTokenizer.nextToken();
-
- if (length(theToken) > 0)
- {
- // See if we've already seen this one...
- TokenSetType::const_iterator i =
- thePreviousTokens.find(theToken);
-
- if (i == thePreviousTokens.end())
- {
- thePreviousTokens.insert(theToken);
-
- XalanNode* const theNode =
- executionContext.getElementByID(theToken, *theDocContext);
-
- if (theNode != 0)
- {
- theNodeList->addNodeInDocOrder(theNode, executionContext);
- }
- }
- }
- }
- }
-
- return executionContext.getXObjectFactory().createNodeSet(theNodeList);
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionID*
#endif
- clone() const
- {
- return new FunctionID(*this);
- }
+ clone() const;
-
private:
class FunctionIDXObjectTypeCallback : public XObjectTypeCallback
@@ -285,7 +185,7 @@
{
m_executionContext.getNodeData(*theValue.item(i), m_resultString);
- append(m_resultString, XalanDOMChar(XalanUnicode::charSpace));
+ append(m_resultString, XalanDOMChar(XalanUnicode::charSpace));
}
}
@@ -306,6 +206,9 @@
XPathExecutionContext& m_executionContext;
};
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionID&
1.5 +11 -32 xml-xalan/c/src/XPath/FunctionLast.hpp
Index: FunctionLast.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionLast.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionLast.hpp 2000/04/11 14:46:06 1.4
+++ FunctionLast.hpp 2000/11/06 19:33:21 1.5
@@ -64,63 +64,42 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "last" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionLast : public Function
{
public:
+
+ FunctionLast();
+
+ virtual
+ ~FunctionLast();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 0)
- {
- executionContext.error("The last() function takes no arguments!",
- context);
- }
-
- const unsigned int theValue = executionContext.getContextNodeListLength();
+ XalanNode* context);
- return executionContext.getXObjectFactory().createNumber(theValue);
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionLast*
#endif
- clone() const
- {
- return new FunctionLast(*this);
- }
+ clone() const;
private:
+
+ const XalanDOMString
+ getError() const;
// Not implemented...
FunctionLast&
1.5 +11 -34 xml-xalan/c/src/XPath/FunctionNot.hpp
Index: FunctionNot.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionNot.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionNot.hpp 2000/04/11 14:46:07 1.4
+++ FunctionNot.hpp 2000/11/06 19:33:24 1.5
@@ -64,65 +64,42 @@
-#include <vector>
-
-
-
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "not" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionNot : public Function
{
public:
+ FunctionNot();
+
+ virtual
+ ~FunctionNot();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() != 1)
- {
- executionContext.error("The not() function takes one argument!",
- context);
- }
-
- return executionContext.getXObjectFactory().createBoolean(!args[0]->boolean());
- }
+ XalanNode* context,
+ const XObject* arg1);
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionNot*
#endif
- clone() const
- {
- return new FunctionNot(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionNot&
1.7 +17 -59 xml-xalan/c/src/XPath/FunctionNumber.hpp
Index: FunctionNumber.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionNumber.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FunctionNumber.hpp 2000/08/14 16:33:54 1.6
+++ FunctionNumber.hpp 2000/11/06 19:33:26 1.7
@@ -64,89 +64,47 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
+#include <XPath/NodeRefListBase.hpp>
/**
* XPath implementation of "number" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionNumber : public Function
{
public:
// These methods are inherited from Function ...
+ FunctionNumber();
+
+ virtual
+ ~FunctionNumber();
- virtual XObject*
+ XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- double theValue = 0.0L;
-
- if (args.size() > 1)
- {
- executionContext.error("The number() function takes zero arguments or one argument!",
- context);
- }
- else if (args.size() == 1)
- {
- theValue = args[0]->num();
- }
- else if (context == 0)
- {
- executionContext.error("The number() function requires a non-null context node!",
- context);
- }
- else
- {
- // The XPath standard says that if there are no arguments,
- // the argument defaults to a node set with the context node
- // as the only member.
- // So we have to create an XNodeList with the context node as
- // the only member and call the num() function on it. We shroud
- // the temporary XNodeList in an XObjectGuard because it can be
- // deleted once we've converted the context node to a number.
-
- // An XObject that contains the context node.
- XObjectGuard theXObject(executionContext.getXObjectFactory(),
- executionContext.createNodeSet(*context));
-
- // Get the numeric value of the theXObject...
- theValue = theXObject->num();
- }
+ XalanNode* context,
+ const XObject* arg1);
- return executionContext.getXObjectFactory().createNumber(theValue);
- }
+ XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context);
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
-#else
- virtual FunctionNumber*
-#endif
- clone() const
- {
- return new FunctionNumber(*this);
- }
+ clone() const;
private:
+
+ const XalanDOMString
+ getError() const;
+
// Not implemented...
FunctionNumber&
1.5 +11 -38 xml-xalan/c/src/XPath/FunctionPosition.hpp
Index: FunctionPosition.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionPosition.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionPosition.hpp 2000/04/11 14:46:07 1.4
+++ FunctionPosition.hpp 2000/11/06 19:33:27 1.5
@@ -64,68 +64,41 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "position" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionPosition : public Function
{
public:
+ FunctionPosition();
+
+ virtual
+ ~FunctionPosition();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 0)
- {
- executionContext.error("The position() function takes no arguments!",
- context);
- }
- else if (context == 0)
- {
- executionContext.error("The position() function requires a non-null context node!",
- context);
- }
-
- const unsigned int theValue = executionContext.getContextNodeListPosition(*context);
-
- return executionContext.getXObjectFactory().createNumber(theValue);
- }
-
+ XalanNode* context);
+
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionPosition*
#endif
- clone() const
- {
- return new FunctionPosition(*this);
- }
+ clone() const;
private:
+
+ const XalanDOMString
+ getError() const;
// Not implemented...
FunctionPosition&
1.7 +12 -75 xml-xalan/c/src/XPath/FunctionRound.hpp
Index: FunctionRound.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionRound.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FunctionRound.hpp 2000/08/15 19:43:18 1.6
+++ FunctionRound.hpp 2000/11/06 19:33:32 1.7
@@ -65,7 +65,6 @@
#include <cmath>
-#include <vector>
@@ -74,102 +73,40 @@
-#include <PlatformSupport/DoubleSupport.hpp>
-
-
-
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "round" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionRound : public Function
{
public:
+ FunctionRound();
+
+ virtual
+ ~FunctionRound();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if (args.size() != 1)
- {
- executionContext.error("The round() function takes one argument!",
- context);
- }
-
- const double theValue = args[0]->num();
+ XalanNode* context,
+ const XObject* arg1);
- return executionContext.getXObjectFactory().createNumber(getRoundedValue(theValue));
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionRound*
#endif
- clone() const
- {
- return new FunctionRound(*this);
- }
+ clone() const;
static double
- getRoundedValue(double theValue)
- {
- if (DoubleSupport::isNaN(theValue))
- {
- return DoubleSupport::getNaN();
- }
- else if (DoubleSupport::isPositiveInfinity(theValue))
- {
- return DoubleSupport::getPositiveInfinity();
- }
- if (DoubleSupport::isNegativeInfinity(theValue))
- {
- return DoubleSupport::getNegativeInfinity();
- }
- else if (theValue == 0)
- {
- return 0.0;
- }
- else if (theValue > 0)
- {
- return long(theValue + 0.5);
- }
- else
- {
- // Negative numbers are a special case. Any time we
- // have -0.5 as the fractional part, we have to
- // round up (toward 0), rather than down.
- double intPart = 0;
-
- const double fracPart = modf(theValue, &intPart);
-
- if (fracPart == -0.5)
- {
- // special case -- we have have to round toward 0...
- return long(theValue + 0.5);
- }
- else
- {
- return long(theValue - 0.5);
- }
- }
- }
+ getRoundedValue(double theValue);
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionRound&
1.5 +12 -37 xml-xalan/c/src/XPath/FunctionStartsWith.hpp
Index: FunctionStartsWith.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionStartsWith.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionStartsWith.hpp 2000/04/11 14:46:08 1.4
+++ FunctionStartsWith.hpp 2000/11/06 19:33:34 1.5
@@ -64,68 +64,43 @@
-#include <vector>
-
-
-
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "starts-with" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionStartsWith : public Function
{
public:
+ FunctionStartsWith();
+
+ virtual
+ ~FunctionStartsWith();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() != 2)
- {
- executionContext.error("The starts-with() function takes one argument!",
- context);
- }
+ XalanNode* context,
+ const XObject* arg1,
+ const XObject* arg2);
- const bool fStartsWith = startsWith(args[0]->str(),
- args[1]->str());
-
- return executionContext.getXObjectFactory().createBoolean(fStartsWith);
- }
-
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionStartsWith*
#endif
- clone() const
- {
- return new FunctionStartsWith(*this);
- }
+ clone() const;
private:
+
+ virtual const XalanDOMString
+ getError() const;
// Not implemented...
FunctionStartsWith&
1.8 +19 -58 xml-xalan/c/src/XPath/FunctionString.hpp
Index: FunctionString.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionString.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- FunctionString.hpp 2000/09/19 14:54:06 1.7
+++ FunctionString.hpp 2000/11/06 19:33:36 1.8
@@ -68,86 +68,47 @@
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
// Base class header file...
-#include <XPath/FunctionDefaultStringArgument.hpp>
+#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
+#include <XPath/NodeRefListBase.hpp>
/**
* XPath implementation of "string" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
-class XALAN_XPATH_EXPORT FunctionString : public FunctionDefaultStringArgument
+class XALAN_XPATH_EXPORT FunctionString : public Function
{
public:
// These methods are inherited from Function ...
+ FunctionString();
- virtual XObject*
+ virtual
+ ~FunctionString();
+
+ XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- XObject* theResult = 0;
-
- const XObjectArgVectorType::size_type theSize = args.size();
-
- if(theSize > 1)
- {
- executionContext.error("The string() function takes zero or one argument!",
- context);
- }
- else if(theSize == 0)
- {
- if (context == 0)
- {
- executionContext.error("The string() function requires a non-null context node!",
- context);
- }
- else
- {
- theResult = executionContext.getXObjectFactory().createString(
- getDefaultStringArgument(
- executionContext,
- *context));
- }
- }
- else
- {
- assert(args[0] != 0);
-
- theResult = executionContext.getXObjectFactory().createString(args[0]->str());
- }
+ XalanNode* context,
+ const XObject* arg1);
- return theResult;
- }
+ XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context);
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
-#else
- virtual FunctionString*
-#endif
- clone() const
- {
- return new FunctionString(*this);
- }
+ clone() const;
private:
+
+ const XalanDOMString
+ getError() const;
+
// Not implemented...
FunctionString&
1.7 +19 -55 xml-xalan/c/src/XPath/FunctionStringLength.hpp
Index: FunctionStringLength.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionStringLength.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FunctionStringLength.hpp 2000/09/19 14:54:20 1.6
+++ FunctionStringLength.hpp 2000/11/06 19:33:38 1.7
@@ -64,83 +64,47 @@
-#include <PlatformSupport/DOMStringHelper.hpp>
-
-
-
// Base class header file...
-#include <XPath/FunctionDefaultStringArgument.hpp>
+#include <XPath/Function.hpp>
#include <XPath/NodeRefListBase.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
/**
* XPath implementation of "string-length" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
-class XALAN_XPATH_EXPORT FunctionStringLength : public FunctionDefaultStringArgument
+class XALAN_XPATH_EXPORT FunctionStringLength : public Function
{
public:
+
+ // These methods are inherited from Function ...
+ FunctionStringLength();
- // These methods are inherited from FunctionDefaultStringArgument ...
+ virtual
+ ~FunctionStringLength();
- virtual XObject*
+ XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- const XObjectArgVectorType::size_type theSize = args.size();
-
- unsigned int theLength = 0;
-
- if(theSize == 0)
- {
- if (context == 0)
- {
- executionContext.error("The string-length() function requires a non-null context node!",
- context);
- }
- else
- {
- theLength = length(getDefaultStringArgument(executionContext,
- *context));
- }
- }
- else if (theSize == 1)
- {
- theLength = length(args[0]->str());
- }
- else
- {
- executionContext.error("The string-length() function takes either zero arguments or one argument!",
- context);
- }
+ XalanNode* context,
+ const XObject* arg1);
- return executionContext.getXObjectFactory().createNumber(theLength);
- }
+ XObject*
+ execute(
+ XPathExecutionContext& executionContext,
+ XalanNode* context);
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
-#else
- virtual FunctionStringLength*
-#endif
- clone() const
- {
- return new FunctionStringLength(*this);
- }
+ clone() const;
private:
+
+ const XalanDOMString
+ getError() const;
+
// Not implemented...
FunctionStringLength&
1.5 +10 -31 xml-xalan/c/src/XPath/FunctionTrue.hpp
Index: FunctionTrue.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionTrue.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FunctionTrue.hpp 2000/04/11 14:46:09 1.4
+++ FunctionTrue.hpp 2000/11/06 19:33:40 1.5
@@ -64,62 +64,42 @@
-#include <vector>
-
-
-
// Base class header file...
#include <XPath/Function.hpp>
-#include <XPath/XObject.hpp>
-#include <XPath/XObjectFactory.hpp>
-#include <XPath/XPathExecutionContext.hpp>
-
-
-
/**
* XPath implementation of "true" function.
*/
-//
-// These are all inline, even though
-// there are virtual functions, because we expect that they will only be
-// needed by the XPath class.
class XALAN_XPATH_EXPORT FunctionTrue : public Function
{
public:
+ FunctionTrue();
+
+ virtual
+ ~FunctionTrue();
+
// These methods are inherited from Function ...
virtual XObject*
execute(
XPathExecutionContext& executionContext,
- XalanNode* context,
- int /* opPos */,
- const XObjectArgVectorType& args)
- {
- if(args.size() > 0)
- {
- executionContext.error("The true() function does not accept arguments!",
- context);
- }
-
- return executionContext.getXObjectFactory().createBoolean(true);
- }
+ XalanNode* context);
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionTrue*
#endif
- clone() const
- {
- return new FunctionTrue(*this);
- }
+ clone() const;
private:
+ virtual const XalanDOMString
+ getError() const;
+
// Not implemented...
FunctionTrue&
operator=(const FunctionTrue&);
@@ -127,7 +107,6 @@
bool
operator==(const FunctionTrue&) const;
};
-
#endif // FUNCTIONTRUE_HEADER_GUARD_1357924680
1.32 +65 -3 xml-xalan/c/src/XPath/XPath.cpp
Index: XPath.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPath.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- XPath.cpp 2000/11/02 01:46:00 1.31
+++ XPath.cpp 2000/11/06 19:33:42 1.32
@@ -1402,10 +1402,74 @@
opPos++;
// Number of args is next, not used for now...
-// const int argCount = m_expression.m_opMap[opPos];
+ const int argCount = m_expression.m_opMap[opPos];
opPos++;
+ XObjectFactory& theFactory = executionContext.getXObjectFactory();
+
+ if (argCount == 0)
+ {
+ assert(opPos == endFunc);
+
+ return s_functions[funcID].execute(executionContext, context);
+ }
+ else if (argCount == 1)
+ {
+ const int nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ assert(opPos == endFunc);
+
+ return s_functions[funcID].execute(executionContext, context, theArg.get());
+ }
+ else if (argCount == 2)
+ {
+ int nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg1(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg2(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ assert(opPos == endFunc);
+
+ return s_functions[funcID].execute(executionContext, context, theArg1.get(), theArg2.get());
+ }
+ else if (argCount == 3)
+ {
+
+ int nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg1(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg2(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ nextOpPos = m_expression.getNextOpCodePosition(opPos);
+
+ const XObjectGuard theArg3(theFactory, executeMore(context, opPos, executionContext));
+
+ opPos = nextOpPos;
+
+ assert(opPos == endFunc);
+
+ return s_functions[funcID].execute(executionContext, context, theArg1.get(), theArg2.get(), theArg3.get());
+ }
+
typedef XPathExecutionContext::XObjectArgVectorType XObjectArgVectorType;
typedef XPathExecutionContext::PushPopArgVector PushPopArgVector;
@@ -1424,8 +1488,6 @@
const XObject* const theResult =
function(context, opPos, funcID, args, executionContext);
-
- XObjectFactory& theFactory = executionContext.getXObjectFactory();
// Return the args...
while(args.size() > 0)
1.4 +1 -0 xml-xalan/c/src/XPath/XPathException.hpp
Index: XPathException.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathException.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XPathException.hpp 2000/04/11 14:46:17 1.3
+++ XPathException.hpp 2000/11/06 19:33:44 1.4
@@ -65,6 +65,7 @@
#include <XalanDOM/XalanDOMString.hpp>
+#include <XalanDOM/XalanNode.hpp>
1.25 +6 -2 xml-xalan/c/src/XPath/XPathExecutionContext.hpp
Index: XPathExecutionContext.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExecutionContext.hpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- XPathExecutionContext.hpp 2000/11/02 01:46:01 1.24
+++ XPathExecutionContext.hpp 2000/11/06 19:33:47 1.25
@@ -80,7 +80,7 @@
-#include <XPath/Function.hpp>
+//#include <XPath/Function.hpp>
#include <XPath/MutableNodeRefList.hpp>
@@ -108,7 +108,11 @@
{
public:
- typedef Function::XObjectArgVectorType XObjectArgVectorType;
+#if defined(XALAN_NO_NAMESPACES)
+ typedef vector<const XObject*> XObjectArgVectorType;
+#else
+ typedef std::vector<const XObject*> XObjectArgVectorType;
+#endif
explicit
XPathExecutionContext();
1.12 +1 -1 xml-xalan/c/src/XPath/XPathFunctionTable.cpp
Index: XPathFunctionTable.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XPathFunctionTable.cpp 2000/11/02 01:46:02 1.11
+++ XPathFunctionTable.cpp 2000/11/06 19:33:49 1.12
@@ -76,7 +76,7 @@
#include "FunctionLocalName.hpp"
#include "FunctionName.hpp"
#include "FunctionNamespaceURI.hpp"
-#include "FunctionNormalize.hpp"
+#include "FunctionNormalizeSpace.hpp"
#include "FunctionNot.hpp"
#include "FunctionNumber.hpp"
#include "FunctionPosition.hpp"