You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@locus.apache.org on 2000/08/10 20:43:28 UTC
cvs commit: xml-xalan/c/src/XSLT AVTPartXPath.cpp AVTPartXPath.hpp ElemCopyOf.cpp ElemLiteralResult.cpp ElemNumber.cpp ElemNumber.hpp ElemTemplateElement.cpp ElemTemplateElement.hpp ElemValueOf.cpp ExtensionNSHandler.cpp ExtensionNSHandler.hpp FunctionDocument.cpp FunctionGenerateID.cpp FunctionGenerateID.hpp FunctionKey.cpp KeyTable.cpp Stylesheet.cpp Stylesheet.hpp StylesheetConstructionContextDefault.cpp StylesheetConstructionContextDefault.hpp StylesheetExecutionContext.hpp StylesheetExecutionContextDefault.cpp StylesheetExecutionContextDefault.hpp TraceListenerDefault.cpp VariablesStack.cpp VariablesStack.hpp XSLTEngineImpl.cpp XSLTEngineImpl.hpp XSLTProcessor.hpp
dbertoni 00/08/10 11:43:28
Modified: c/src/XSLT AVTPartXPath.cpp AVTPartXPath.hpp ElemCopyOf.cpp
ElemLiteralResult.cpp ElemNumber.cpp ElemNumber.hpp
ElemTemplateElement.cpp ElemTemplateElement.hpp
ElemValueOf.cpp ExtensionNSHandler.cpp
ExtensionNSHandler.hpp FunctionDocument.cpp
FunctionGenerateID.cpp FunctionGenerateID.hpp
FunctionKey.cpp KeyTable.cpp Stylesheet.cpp
Stylesheet.hpp
StylesheetConstructionContextDefault.cpp
StylesheetConstructionContextDefault.hpp
StylesheetExecutionContext.hpp
StylesheetExecutionContextDefault.cpp
StylesheetExecutionContextDefault.hpp
TraceListenerDefault.cpp VariablesStack.cpp
VariablesStack.hpp XSLTEngineImpl.cpp
XSLTEngineImpl.hpp XSLTProcessor.hpp
Log:
Changes for new and changed XalanNode and XPath interfaces.
Revision Changes Path
1.6 +0 -37 xml-xalan/c/src/XSLT/AVTPartXPath.cpp
Index: AVTPartXPath.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/AVTPartXPath.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AVTPartXPath.cpp 2000/07/06 20:19:24 1.5
+++ AVTPartXPath.cpp 2000/08/10 18:43:03 1.6
@@ -78,43 +78,6 @@
-static const XPath*
-createAndInitXPath(
- const XalanDOMString& val,
- const PrefixResolver& resolver,
- XObjectFactory& xobjectFactory,
- XPathEnvSupport& xpathEnvSupport,
- XPathProcessor& xpathProcessor,
- XPathFactory& xpathFactory)
-{
- XPath* const theXPath = xpathFactory.create();
-
- xpathProcessor.initMatchPattern(*theXPath, val, resolver, xobjectFactory, xpathEnvSupport);
-
- return theXPath;
-}
-
-
-
-AVTPartXPath::AVTPartXPath(
- const XalanDOMString& val,
- const PrefixResolver& resolver,
- XObjectFactory& xobjectFactory,
- XPathEnvSupport& xpathEnvSupport,
- XPathProcessor& xpathProcessor,
- XPathFactory& xpathFactory) :
- AVTPart(),
- m_pXPath(createAndInitXPath(val,
- resolver,
- xobjectFactory,
- xpathEnvSupport,
- xpathProcessor,
- xpathFactory))
-{
-}
-
-
-
void
AVTPartXPath:: evaluate(
XalanDOMString& buf,
1.5 +1 -20 xml-xalan/c/src/XSLT/AVTPartXPath.hpp
Index: AVTPartXPath.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/AVTPartXPath.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AVTPartXPath.hpp 2000/04/11 15:09:20 1.4
+++ AVTPartXPath.hpp 2000/08/10 18:43:03 1.5
@@ -58,7 +58,7 @@
#define XALAN_AVTPARTXPATH_HEADER_GUARD
/**
- * $Id: AVTPartXPath.hpp,v 1.4 2000/04/11 15:09:20 dbertoni Exp $
+ * $Id: AVTPartXPath.hpp,v 1.5 2000/08/10 18:43:03 dbertoni Exp $
*
* $State: Exp $
*
@@ -78,7 +78,6 @@
class XPathEnvSupport;
class XPathFactory;
class XPathProcessor;
-class XObjectFactory;
@@ -95,24 +94,6 @@
* @param xpath XPath to evaluate
*/
AVTPartXPath(const XPath* xpath);
-
- /**
- * Construct an XPath Attribute Value Template (AVT) part from a string.
- *
- * @param val pure string section of an AVT
- * @param resolver prefix resolver to use
- * @param xobjectFactory factory class instance for XObjects
- * @param xpathEnvSupport XPath environment support class instance
- * @param xpathProcessor processor class instance for XPaths
- * @param xpathFactory factory class instance for XPaths
- */
- AVTPartXPath(
- const XalanDOMString& val,
- const PrefixResolver& resolver,
- XObjectFactory& xobjectFactory,
- XPathEnvSupport& xpathEnvSupport,
- XPathProcessor& xpathProcessor,
- XPathFactory& xpathFactory);
// These methods are inherited from AVTPart ...
1.7 +1 -1 xml-xalan/c/src/XSLT/ElemCopyOf.cpp
Index: ElemCopyOf.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemCopyOf.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ElemCopyOf.cpp 2000/07/06 20:19:24 1.6
+++ ElemCopyOf.cpp 2000/08/10 18:43:04 1.7
@@ -135,7 +135,7 @@
*this, XalanDOMString(XALAN_STATIC_UCODE_STRING("select")), *m_pSelectPattern, value.get()));
}
- const int type = value->getType();
+ const XObject::eObjectType type = value->getType();
XalanDOMString s;
1.16 +3 -3 xml-xalan/c/src/XSLT/ElemLiteralResult.cpp
Index: ElemLiteralResult.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemLiteralResult.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ElemLiteralResult.cpp 2000/07/13 22:22:41 1.15
+++ ElemLiteralResult.cpp 2000/08/10 18:43:04 1.16
@@ -246,7 +246,7 @@
DOMServices::s_XMLNamespaceWithSeparator + prefix :
DOMServices::s_XMLNamespace;
- XalanDOMString srcURI = ns.getURI();
+ XalanDOMString srcURI = ns.getURI();
const XalanDOMString alias = getStylesheet().getAliasNamespaceURI(srcURI);
@@ -257,9 +257,9 @@
bool isXSLNS = equals(srcURI, executionContext.getXSLNameSpaceURL())
|| 0 != getStylesheet().lookupExtensionNSHandler(srcURI)
- || equalsIgnoreCase(srcURI,executionContext.getXalanXSLNameSpaceURL());
+ || equals(srcURI,executionContext.getXalanXSLNameSpaceURL());
- if(!isXSLNS && !equalsIgnoreCase(srcURI,desturi)) // TODO: Check for extension namespaces
+ if(!isXSLNS && !equals(srcURI, desturi)) // TODO: Check for extension namespaces
{
executionContext.addResultAttribute(attrName, srcURI);
}
1.20 +2 -2 xml-xalan/c/src/XSLT/ElemNumber.cpp
Index: ElemNumber.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemNumber.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- ElemNumber.cpp 2000/07/14 01:44:01 1.19
+++ ElemNumber.cpp 2000/08/10 18:43:04 1.20
@@ -325,12 +325,12 @@
-XPath*
+const XPath*
ElemNumber::getCountMatchPattern(
StylesheetExecutionContext& executionContext,
XalanNode* contextNode) const
{
- XPath* countMatchPattern = 0;
+ const XPath* countMatchPattern = 0;
switch(contextNode->getNodeType())
{
1.15 +2 -2 xml-xalan/c/src/XSLT/ElemNumber.hpp
Index: ElemNumber.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemNumber.hpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ElemNumber.hpp 2000/07/06 20:19:25 1.14
+++ ElemNumber.hpp 2000/08/10 18:43:04 1.15
@@ -58,7 +58,7 @@
#define XALAN_ELEMNUMBER_HEADER_GUARD
/**
- * $Id: ElemNumber.hpp,v 1.14 2000/07/06 20:19:25 dbertoni Exp $
+ * $Id: ElemNumber.hpp,v 1.15 2000/08/10 18:43:04 dbertoni Exp $
*
* $State: Exp $
*
@@ -186,7 +186,7 @@
/**
* Get the count match pattern, or a default value.
*/
- XPath*
+ const XPath*
getCountMatchPattern(
StylesheetExecutionContext& executionContext,
XalanNode* contextNode) const;
1.28 +25 -1 xml-xalan/c/src/XSLT/ElemTemplateElement.cpp
Index: ElemTemplateElement.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemTemplateElement.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- ElemTemplateElement.cpp 2000/07/28 22:02:20 1.27
+++ ElemTemplateElement.cpp 2000/08/10 18:43:04 1.28
@@ -641,7 +641,7 @@
if (0 != selectPattern)
{
- XObject* theXObject = 0;
+ const XObject* theXObject = 0;
{
SetAndRestoreCurrentStackFrameIndex theSetAndRestore(
@@ -1305,6 +1305,30 @@
ElemTemplateElement::setPrefix(const XalanDOMString& /* prefix */)
{
throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
+}
+
+
+
+bool
+ElemTemplateElement::isIndexed() const
+{
+ return false;
+}
+
+
+
+unsigned long
+ElemTemplateElement::getIndex() const
+{
+ return 0;
+}
+
+
+
+XalanDOMString
+ElemTemplateElement::getXSLTData() const
+{
+ return DOMString();
}
1.15 +9 -0 xml-xalan/c/src/XSLT/ElemTemplateElement.hpp
Index: ElemTemplateElement.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemTemplateElement.hpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ElemTemplateElement.hpp 2000/08/07 19:52:03 1.14
+++ ElemTemplateElement.hpp 2000/08/10 18:43:05 1.15
@@ -577,6 +577,15 @@
virtual void
setPrefix(const XalanDOMString& prefix);
+ virtual bool
+ isIndexed() const;
+
+ virtual unsigned long
+ getIndex() const;
+
+ virtual XalanDOMString
+ getXSLTData() const;
+
virtual XalanDOMString
getTagName() const;
1.10 +1 -1 xml-xalan/c/src/XSLT/ElemValueOf.cpp
Index: ElemValueOf.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemValueOf.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ElemValueOf.cpp 2000/07/06 20:19:25 1.9
+++ ElemValueOf.cpp 2000/08/10 18:43:05 1.10
@@ -176,7 +176,7 @@
}
else
{
- theValue = executionContext.getNodeData(*sourceNode);
+ theValue = sourceNode->getXSLTData();
}
if(0 != executionContext.getTraceListeners())
1.6 +15 -11 xml-xalan/c/src/XSLT/ExtensionNSHandler.cpp
Index: ExtensionNSHandler.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ExtensionNSHandler.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ExtensionNSHandler.cpp 2000/05/29 22:34:32 1.5
+++ ExtensionNSHandler.cpp 2000/08/10 18:43:05 1.6
@@ -74,10 +74,14 @@
-#include "XSLTProcessor.hpp"
+#include "StylesheetExecutionContext.hpp"
+class XSLTProcessor;
+
+
+
struct XSLProcessorContext
{
const XSLTProcessor& m_processor;
@@ -241,13 +245,13 @@
*/
void
ExtensionNSHandler::processElement(
- const XalanDOMString& localPart,
- const XalanElement* /* element */,
- XSLTProcessor& processor,
- Stylesheet& stylesheetTree,
- const XalanNode* sourceTree,
- const XalanNode* sourceNode,
- const QName& mode)
+ StylesheetExecutionContext& executionContext,
+ const XalanDOMString& localPart,
+ const XalanElement* /* element */,
+ Stylesheet& stylesheetTree,
+ const XalanNode* sourceTree,
+ const XalanNode* sourceNode,
+ const QName& mode)
{
const XObject* result = 0;
@@ -259,8 +263,8 @@
ExtensionFunctionHandler::ArgVector argv;
- XSLProcessorContext xpc(processor,
- stylesheetTree, sourceTree, sourceNode, mode);
+// XSLProcessorContext xpc(processor,
+// stylesheetTree, sourceTree, sourceNode, mode);
/*
java:
Vector argv = new Vector (2);
@@ -285,7 +289,7 @@
if (result != 0)
{
- processor.outputToResultTree(*result);
+ executionContext.outputToResultTree(*result);
}
}
1.5 +8 -9 xml-xalan/c/src/XSLT/ExtensionNSHandler.hpp
Index: ExtensionNSHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ExtensionNSHandler.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ExtensionNSHandler.hpp 2000/05/29 22:34:32 1.4
+++ ExtensionNSHandler.hpp 2000/08/10 18:43:05 1.5
@@ -80,7 +80,7 @@
class Stylesheet;
class XalanElement;
class XalanNode;
-class XSLTProcessor;
+class StylesheetExecutionContext;
@@ -169,7 +169,6 @@
*
* @param localPart element name's local part
* @param element extension element being processed
- * @param processor handle to XSLTProcessor
* @param stylesheetTree compiled stylesheet tree
* @param mode current mode
* @param sourceTree root of the source tree (but don't assume it's a
@@ -184,13 +183,13 @@
*/
void
processElement (
- const XalanDOMString& localPart,
- const XalanElement* element,
- XSLTProcessor& processor,
- Stylesheet& stylesheetTree,
- const XalanNode* sourceTree,
- const XalanNode* sourceNode,
- const QName& mode);
+ StylesheetExecutionContext& executionContext,
+ const XalanDOMString& localPart,
+ const XalanElement* element,
+ Stylesheet& stylesheetTree,
+ const XalanNode* sourceTree,
+ const XalanNode* sourceNode,
+ const QName& mode);
protected:
1.11 +2 -2 xml-xalan/c/src/XSLT/FunctionDocument.cpp
Index: FunctionDocument.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionDocument.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FunctionDocument.cpp 2000/07/28 22:02:20 1.10
+++ FunctionDocument.cpp 2000/08/10 18:43:05 1.11
@@ -214,7 +214,7 @@
arg->nodeset().item(i) != 0);
XalanDOMString ref = XObject::eTypeNodeSet == arg->getType() ?
- executionContext.getNodeData(*arg->nodeset().item(i)) :
+ arg->nodeset().item(i)->getXSLTData() :
arg->str();
// This is the case where the function was called with
@@ -261,7 +261,7 @@
if(newDoc != 0)
{
- mnl->addNodeInDocOrder(newDoc, true);
+ mnl->addNodeInDocOrder(newDoc, executionContext);
}
}
}
1.3 +33 -5 xml-xalan/c/src/XSLT/FunctionGenerateID.cpp
Index: FunctionGenerateID.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionGenerateID.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FunctionGenerateID.cpp 2000/04/11 15:09:27 1.2
+++ FunctionGenerateID.cpp 2000/08/10 18:43:06 1.3
@@ -58,6 +58,10 @@
+#include <XalanDOM/XalanNode.hpp>
+
+
+
#include <PlatformSupport/DOMStringHelper.hpp>
@@ -70,7 +74,9 @@
FunctionGenerateID::FunctionGenerateID() :
- Function()
+ Function(),
+ m_prefix(XALAN_STATIC_UCODE_STRING("N")),
+ m_prefixLength(length(m_prefix))
{
}
@@ -82,6 +88,25 @@
+const XalanDOMString
+getSuffix(const XalanNode* theNode)
+{
+ const unsigned long theIndex = theNode->getIndex();
+
+ if (theIndex == 0)
+ {
+ // We're assuming here that each nodes has an implementation with a
+ // unique address that we can convert into a string
+ return UnsignedLongToDOMString(unsigned long(theNode));
+ }
+ else
+ {
+ return UnsignedLongToDOMString(theIndex);
+ }
+}
+
+
+
XObject*
FunctionGenerateID::execute(
XPathExecutionContext& executionContext,
@@ -101,14 +126,17 @@
theContext = 0;
}
- // We're assuming here that each nodes has an implementation with a
- // unique address that we can convert into a string
-
XalanDOMString id;
if (0 != theContext)
{
- id = XALAN_STATIC_UCODE_STRING("N") + LongToDOMString(reinterpret_cast<long>(theContext));
+ const XalanDOMString theSuffix = getSuffix(theContext);
+ assert(length(theSuffix) != 0);
+
+ reserve(id, m_prefixLength + length(theSuffix) + 1);
+
+ id += m_prefix;
+ id += theSuffix;
}
return executionContext.getXObjectFactory().createString(id);
1.4 +10 -1 xml-xalan/c/src/XSLT/FunctionGenerateID.hpp
Index: FunctionGenerateID.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionGenerateID.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FunctionGenerateID.hpp 2000/04/11 15:09:27 1.3
+++ FunctionGenerateID.hpp 2000/08/10 18:43:06 1.4
@@ -62,6 +62,10 @@
+#include <XalanDOM/XalanDOMString.hpp>
+
+
+
#include <XPath/Function.hpp>
@@ -97,8 +101,13 @@
// Not implemented...
FunctionGenerateID& operator=(const FunctionGenerateID&);
+
+ bool
+ operator==(const FunctionGenerateID&) const;
+
+ const XalanDOMString m_prefix;
- bool operator==(const FunctionGenerateID&) const;
+ const unsigned int m_prefixLength;
};
1.7 +3 -4 xml-xalan/c/src/XSLT/FunctionKey.cpp
Index: FunctionKey.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionKey.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FunctionKey.cpp 2000/07/28 22:02:21 1.6
+++ FunctionKey.cpp 2000/08/10 18:43:06 1.7
@@ -166,8 +166,7 @@
{
assert(theNodeSet.item(i) != 0);
- const XalanDOMString ref =
- executionContext.getNodeData(*theNodeSet.item(i));
+ const XalanDOMString ref = theNodeSet.item(i)->getXSLTData();
if(0 != length(ref))
{
@@ -183,7 +182,7 @@
*executionContext.getPrefixResolver());
assert(nl != 0);
- theNodeRefList->addNodesInDocOrder(*nl);
+ theNodeRefList->addNodesInDocOrder(*nl, executionContext);
}
}
}
@@ -201,7 +200,7 @@
if (nl != 0)
{
- theNodeRefList->addNodesInDocOrder(*nl);
+ theNodeRefList->addNodesInDocOrder(*nl, executionContext);
}
}
1.8 +1 -1 xml-xalan/c/src/XSLT/KeyTable.cpp
Index: KeyTable.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/KeyTable.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- KeyTable.cpp 2000/07/25 14:50:36 1.7
+++ KeyTable.cpp 2000/08/10 18:43:06 1.8
@@ -188,7 +188,7 @@
XalanNode* const useNode = nl->item(k);
assert(useNode != 0);
- exprResult = executionContext.getNodeData(*useNode);
+ exprResult = useNode->getXSLTData();
}
MutableNodeRefList& keyNodes =
1.29 +27 -0 xml-xalan/c/src/XSLT/Stylesheet.cpp
Index: Stylesheet.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/Stylesheet.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- Stylesheet.cpp 2000/08/07 19:52:05 1.28
+++ Stylesheet.cpp 2000/08/10 18:43:07 1.29
@@ -1680,6 +1680,22 @@
+unsigned long
+Stylesheet::getIndex() const
+{
+ return 0;
+}
+
+
+
+XalanDOMString
+Stylesheet::getXSLTData() const
+{
+ return DOMString();
+}
+
+
+
XalanElement*
Stylesheet::createElement(const XalanDOMString& /* tagName */)
{
@@ -1866,6 +1882,17 @@
assert(false);
return 0;
+}
+
+
+
+bool
+Stylesheet::isIndexed() const
+{
+ //should not be called
+ assert(false);
+
+ return false;
}
1.20 +9 -0 xml-xalan/c/src/XSLT/Stylesheet.hpp
Index: Stylesheet.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/Stylesheet.hpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Stylesheet.hpp 2000/08/07 19:52:06 1.19
+++ Stylesheet.hpp 2000/08/10 18:43:09 1.20
@@ -1040,6 +1040,12 @@
virtual void
setPrefix(const XalanDOMString& prefix);
+ virtual unsigned long
+ getIndex() const;
+
+ virtual XalanDOMString
+ getXSLTData() const;
+
virtual XalanElement*
createElement(const XalanDOMString& tagName);
@@ -1100,6 +1106,9 @@
virtual XalanElement*
getElementById(const XalanDOMString& elementId) const;
+
+ virtual bool
+ isIndexed() const;
// These interfaces are inherited from PrefixResolver...
1.9 +0 -6 xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp
Index: StylesheetConstructionContextDefault.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- StylesheetConstructionContextDefault.cpp 2000/07/31 02:44:12 1.8
+++ StylesheetConstructionContextDefault.cpp 2000/08/10 18:43:10 1.9
@@ -86,12 +86,10 @@
StylesheetConstructionContextDefault::StylesheetConstructionContextDefault(
XSLTEngineImpl& processor,
XPathEnvSupport& xpathEnvSupport,
- XObjectFactory& xobjectFactory,
XPathFactory& xpathFactory) :
StylesheetConstructionContext(),
m_processor(processor),
m_xpathEnvSupport(xpathEnvSupport),
- m_xobjectFactory(xobjectFactory),
m_xpathFactory(xpathFactory),
m_xpathProcessor(new XPathProcessorImpl),
m_stylesheets()
@@ -153,8 +151,6 @@
m_stylesheets.clear();
- m_xobjectFactory.reset();
-
m_xpathFactory.reset();
}
@@ -264,7 +260,6 @@
m_xpathProcessor->initMatchPattern(*xpath,
str,
resolver,
- m_xobjectFactory,
m_xpathEnvSupport);
return xpath;
@@ -282,7 +277,6 @@
m_xpathProcessor->initXPath(*xpath,
str,
resolver,
- m_xobjectFactory,
m_xpathEnvSupport);
return xpath;
1.10 +0 -4 xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp
Index: StylesheetConstructionContextDefault.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- StylesheetConstructionContextDefault.hpp 2000/06/23 02:39:33 1.9
+++ StylesheetConstructionContextDefault.hpp 2000/08/10 18:43:11 1.10
@@ -77,7 +77,6 @@
-class XObjectFactory;
class XPathEnvSupport;
class XPathFactory;
class XPathProcessor;
@@ -104,14 +103,12 @@
*
* @param processor a reference to an XSLTEngineImpl instance. Used for error reporting.
* @param xpathEnvSupport a reference to an XPathEnvSupport instance.
- * @param xobjectFactory a reference to an XObjectFactory instance. See comments above for important details.
* @param xpathFactory a reference to an XPathFactory instance. See comments above for important details.
*
*/
StylesheetConstructionContextDefault(
XSLTEngineImpl& processor,
XPathEnvSupport& xpathEnvSupport,
- XObjectFactory& xobjectFactory,
XPathFactory& xpathFactory);
virtual
@@ -208,7 +205,6 @@
XSLTEngineImpl& m_processor;
XPathEnvSupport& m_xpathEnvSupport;
- XObjectFactory& m_xobjectFactory;
XPathFactory& m_xpathFactory;
#if defined(XALAN_NO_NAMESPACES)
1.25 +33 -18 xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp
Index: StylesheetExecutionContext.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- StylesheetExecutionContext.hpp 2000/07/28 22:02:21 1.24
+++ StylesheetExecutionContext.hpp 2000/08/10 18:43:11 1.25
@@ -602,7 +602,7 @@
* @param resolver resolver for namespace resolution
* @return pointer to resulting XObject
*/
- virtual XObject*
+ virtual const XObject*
executeXPath(
const XalanDOMString& str,
XalanNode* contextNode,
@@ -616,7 +616,7 @@
* @param resolver resolver for namespace resolution
* @return pointer to resulting XPath
*/
- virtual XPath*
+ virtual const XPath*
createMatchPattern(
const XalanDOMString& str,
const PrefixResolver& resolver) = 0;
@@ -627,7 +627,7 @@
* @param xpath The XPath to return.
*/
virtual void
- returnXPath(XPath* xpath) = 0;
+ returnXPath(const XPath* xpath) = 0;
// A helper class to automatically return an XPath instance.
class XPathGuard
@@ -636,7 +636,7 @@
XPathGuard(
StylesheetExecutionContext& context,
- XPath* xpath = 0) :
+ const XPath* xpath = 0) :
m_context(context),
m_xpath(xpath)
{
@@ -650,16 +650,16 @@
}
}
- XPath*
+ const XPath*
get() const
{
return m_xpath;
}
- XPath*
+ const XPath*
release()
{
- XPath* const temp = m_xpath;
+ const XPath* const temp = m_xpath;
m_xpath = 0;
@@ -667,7 +667,7 @@
}
void
- reset(XPath* xpath)
+ reset(const XPath* xpath)
{
if (m_xpath != 0)
{
@@ -681,7 +681,7 @@
StylesheetExecutionContext& m_context;
- XPath* m_xpath;
+ const XPath* m_xpath;
};
/**
@@ -723,7 +723,7 @@
* @param resolver resolver for namespace resolution
* @return a pointer to the XObject result
*/
- virtual XObject*
+ virtual const XObject*
createVariable(
const ElemTemplateElement* element,
const XPath& xpath,
@@ -741,7 +741,7 @@
* @param sourceNode source node
* @return a pointer to the XObject result
*/
- virtual XObject*
+ virtual const XObject*
createVariable(
const ElemTemplateElement* element,
const ElemTemplateElement& templateChild,
@@ -816,7 +816,7 @@
virtual void
pushVariable(
const QName& name,
- XObject* var,
+ const XObject* var,
const ElemTemplateElement* element) = 0;
/**
@@ -869,7 +869,7 @@
* @param theName name of variable
* @return pointer to XObject for variable
*/
- virtual XObject*
+ virtual const XObject*
getParamVariable(const QName& theName) const = 0;
/**
@@ -1164,7 +1164,7 @@
* @param sourceNode source node
* @return XObject instance
*/
- virtual XObject*
+ virtual const XObject*
createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
@@ -1179,7 +1179,7 @@
* @param mode current mode
* @return XObject instance
*/
- virtual XObject*
+ virtual const XObject*
createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
@@ -1195,9 +1195,18 @@
* @return true if the object was destroyed.
*/
virtual bool
- destroyXObject(XObject* theXObject) const = 0;
+ destroyXObject(const XObject* theXObject) const = 0;
/**
+ * Output an object to the result tree by doing the right conversions.
+ * This is public for access by extensions.
+ *
+ * @param obj the XObject to output
+ */
+ virtual void
+ outputToResultTree(const XObject& xobj) = 0;
+
+ /**
* Given a result tree fragment, walk the tree and
* output it to the result stream.
*
@@ -1491,6 +1500,9 @@
virtual XObjectFactory&
getXObjectFactory() const = 0;
+ virtual bool
+ isIgnorableWhitespace(const XalanText& node) const = 0;
+
virtual XalanDOMString
getNamespaceOfNode(const XalanNode& n) const = 0;
@@ -1544,7 +1556,7 @@
virtual void
popArgVector() = 0;
- virtual XObject*
+ virtual const XObject*
extFunction(
const XalanDOMString& theNamespace,
const XalanDOMString& functionName,
@@ -1596,7 +1608,7 @@
const XalanDOMString& ref,
const PrefixResolver& resolver) = 0;
- virtual XObject*
+ virtual const XObject*
getVariable(const QName& name) const = 0;
virtual const PrefixResolver*
@@ -1610,6 +1622,9 @@
virtual XalanDOMString
findURIFromDoc(const XalanDocument* owner) const = 0;
+
+ virtual XalanDocument*
+ getDOMFactory() const = 0;
virtual XalanDOMString
getUnparsedEntityURI(
1.26 +45 -21 xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp
Index: StylesheetExecutionContextDefault.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- StylesheetExecutionContextDefault.cpp 2000/08/07 19:52:06 1.25
+++ StylesheetExecutionContextDefault.cpp 2000/08/10 18:43:11 1.26
@@ -438,7 +438,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::executeXPath(
const XalanDOMString& str,
XalanNode* contextNode,
@@ -452,12 +452,12 @@
-XPath*
+const XPath*
StylesheetExecutionContextDefault::createMatchPattern(
const XalanDOMString& str,
const PrefixResolver& resolver)
{
- XPath* theResult = 0;
+ const XPath* theResult = 0;
// We won't cache any xpath that has a namespace, since
// we have no idea how that might be resolved. We could
@@ -500,7 +500,7 @@
void
-StylesheetExecutionContextDefault::returnXPath(XPath* xpath)
+StylesheetExecutionContextDefault::returnXPath(const XPath* xpath)
{
if (isCached(xpath) == false)
{
@@ -534,14 +534,14 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::createVariable(
const ElemTemplateElement* /* element */,
const XPath& xpath,
XalanNode* contextNode,
const PrefixResolver& resolver)
{
- XObject* const theVariable =
+ const XObject* const theVariable =
xpath.execute(contextNode, resolver, *this);
assert(m_liveVariablesStack.empty() == false);
@@ -555,7 +555,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::createVariable(
const ElemTemplateElement* /* element */,
const ElemTemplateElement& templateChild,
@@ -563,8 +563,8 @@
XalanNode* sourceNode,
const QName& mode)
{
- XObject* const theVariable =
- this->createXResultTreeFrag(templateChild, sourceTree, sourceNode, mode);
+ const XObject* const theVariable =
+ createXResultTreeFrag(templateChild, sourceTree, sourceNode, mode);
// We'll want to return this variable after the current element frame
// has finished executing, so save this off for later...
@@ -583,7 +583,7 @@
XalanNode* contextNode,
const PrefixResolver& resolver)
{
- XObject* var = 0;
+ const XObject* var = 0;
if (length(str) > 0)
{
@@ -604,7 +604,7 @@
void
StylesheetExecutionContextDefault::pushVariable(
const QName& name,
- XObject* var,
+ const XObject* var,
const ElemTemplateElement* element)
{
m_variablesStack.pushVariable(name, var, element);
@@ -756,7 +756,7 @@
const XPath* const pxpath = xslParamElement->getSelectPattern();
- XObject* theXObject = 0;
+ const XObject* theXObject = 0;
if(0 != pxpath)
{
@@ -791,7 +791,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::getParamVariable(const QName& theName) const
{
return m_variablesStack.getParamVariable(theName);
@@ -937,7 +937,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
@@ -951,7 +951,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
@@ -975,7 +975,7 @@
bool
-StylesheetExecutionContextDefault::destroyXObject(XObject* theXObject) const
+StylesheetExecutionContextDefault::destroyXObject(const XObject* theXObject) const
{
return getXObjectFactory().returnObject(theXObject);
}
@@ -983,9 +983,17 @@
void
+StylesheetExecutionContextDefault::outputToResultTree(const XObject& xobj)
+{
+ m_xsltProcessor.outputToResultTree(*this, xobj);
+}
+
+
+
+void
StylesheetExecutionContextDefault::outputResultTreeFragment(const XObject& theTree)
{
- m_xsltProcessor.outputResultTreeFragment(theTree);
+ m_xsltProcessor.outputResultTreeFragment(*this, theTree);
}
@@ -1332,6 +1340,14 @@
+bool
+StylesheetExecutionContextDefault::isIgnorableWhitespace(const XalanText& node) const
+{
+ return m_xpathExecutionContextDefault.isIgnorableWhitespace(node);
+}
+
+
+
XalanDOMString
StylesheetExecutionContextDefault::getNamespaceOfNode(const XalanNode& n) const
{
@@ -1469,7 +1485,7 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::extFunction(
const XalanDOMString& theNamespace,
const XalanDOMString& functionName,
@@ -1576,10 +1592,10 @@
-XObject*
+const XObject*
StylesheetExecutionContextDefault::getVariable(const QName& name) const
{
- XObject* const theVariable =
+ const XObject* const theVariable =
m_variablesStack.getVariable(name);
return m_xpathExecutionContextDefault.getXObjectFactory().clone(*theVariable);
@@ -1611,6 +1627,14 @@
+XalanDocument*
+StylesheetExecutionContextDefault::getDOMFactory() const
+{
+ return m_xpathExecutionContextDefault.getDOMFactory();
+}
+
+
+
XalanDOMString
StylesheetExecutionContextDefault::findURIFromDoc(const XalanDocument* owner) const
{
@@ -1951,7 +1975,7 @@
void
StylesheetExecutionContextDefault::addToXPathCache(
const XalanDOMString& pattern,
- XPath* theXPath)
+ const XPath* theXPath)
{
clock_t addClock = clock();
1.24 +24 -15 xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp
Index: StylesheetExecutionContextDefault.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- StylesheetExecutionContextDefault.hpp 2000/08/07 19:52:06 1.23
+++ StylesheetExecutionContextDefault.hpp 2000/08/10 18:43:11 1.24
@@ -207,19 +207,19 @@
getIndent() const;
// $$$ ToDo: Get rid of this!!!!
- virtual XObject*
+ virtual const XObject*
executeXPath(
const XalanDOMString& str,
XalanNode* contextNode,
const XalanElement& resolver);
- virtual XPath*
+ virtual const XPath*
createMatchPattern(
const XalanDOMString& str,
const PrefixResolver& resolver);
virtual void
- returnXPath(XPath* xpath);
+ returnXPath(const XPath* xpath);
virtual const XalanDOMString
evaluateAttrVal(
@@ -230,14 +230,14 @@
virtual void
pushTopLevelVariables(const ParamVectorType& topLevelParams);
- virtual XObject*
+ virtual const XObject*
createVariable(
const ElemTemplateElement* element,
const XPath& xpath,
XalanNode* contextNode,
const PrefixResolver& resolver);
- virtual XObject*
+ virtual const XObject*
createVariable(
const ElemTemplateElement* element,
const ElemTemplateElement& templateChild,
@@ -256,7 +256,7 @@
virtual void
pushVariable(
const QName& name,
- XObject* var,
+ const XObject* var,
const ElemTemplateElement* element);
virtual void
@@ -295,7 +295,7 @@
const QName& mode,
const ElemTemplateElement* targetTemplate);
- virtual XObject*
+ virtual const XObject*
getParamVariable(const QName& theName) const;
virtual void
@@ -352,13 +352,13 @@
bool overrideStrip,
bool shouldCloneAttributes);
- virtual XObject*
+ virtual const XObject*
createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
XalanNode* sourceNode);
- virtual XObject*
+ virtual const XObject*
createXResultTreeFrag(
const ElemTemplateElement& templateChild,
XalanNode* sourceTree,
@@ -366,9 +366,12 @@
const QName& mode);
virtual bool
- destroyXObject(XObject* theXObject) const;
+ destroyXObject(const XObject* theXObject) const;
virtual void
+ outputToResultTree(const XObject& xobj);
+
+ virtual void
outputResultTreeFragment(const XObject& theTree);
virtual const XalanDOMString&
@@ -536,6 +539,9 @@
virtual XObjectFactory&
getXObjectFactory() const;
+ virtual bool
+ isIgnorableWhitespace(const XalanText& node) const;
+
virtual XalanDOMString
getNamespaceOfNode(const XalanNode& n) const;
@@ -589,7 +595,7 @@
virtual void
popArgVector();
- virtual XObject*
+ virtual const XObject*
extFunction(
const XalanDOMString& theNamespace,
const XalanDOMString& functionName,
@@ -641,7 +647,7 @@
const XalanDOMString& ref,
const PrefixResolver& resolver);
- virtual XObject*
+ virtual const XObject*
getVariable(const QName& name) const;
virtual const PrefixResolver*
@@ -656,6 +662,9 @@
virtual XalanDOMString
findURIFromDoc(const XalanDocument* owner) const;
+ virtual XalanDocument*
+ getDOMFactory() const;
+
virtual XalanDOMString
getUnparsedEntityURI(
const XalanDOMString& theName,
@@ -762,7 +771,7 @@
void
addToXPathCache(
const XalanDOMString& pattern,
- XPath* theXPath);
+ const XPath* theXPath);
XPathExecutionContextDefault m_xpathExecutionContextDefault;
@@ -779,7 +788,7 @@
typedef set<TextOutputStream*> TextOutputStreamSetType;
typedef vector<const XObject*> VariablesCollectionType;
typedef vector<VariablesCollectionType> LiveVariablesStackType;
- typedef pair<XPath*, clock_t> XPathCacheEntry;
+ typedef pair<const XPath*, clock_t> XPathCacheEntry;
typedef map<XalanDOMString,
XPathCacheEntry,
less<XalanDOMString> > XPathCacheMapType;
@@ -790,7 +799,7 @@
typedef std::set<TextOutputStream*> TextOutputStreamSetType;
typedef std::vector<const XObject*> VariablesCollectionType;
typedef std::vector<VariablesCollectionType> LiveVariablesStackType;
- typedef std::pair<XPath*, clock_t> XPathCacheEntry;
+ typedef std::pair<const XPath*, clock_t> XPathCacheEntry;
typedef std::map<XalanDOMString, XPathCacheEntry> XPathCacheMapType;
#endif
1.3 +1 -1 xml-xalan/c/src/XSLT/TraceListenerDefault.cpp
Index: TraceListenerDefault.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/TraceListenerDefault.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TraceListenerDefault.cpp 2000/06/05 01:19:10 1.2
+++ TraceListenerDefault.cpp 2000/08/10 18:43:11 1.3
@@ -250,7 +250,7 @@
for(unsigned int i = 0; i < n; i++)
{
m_printWriter.print(XALAN_STATIC_UCODE_STRING(" "));
- m_printWriter.println(DOMServices::getNodeData(*nl.item(i)));
+ m_printWriter.println(nl.item(i)->getXSLTData());
}
}
}
1.4 +4 -4 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- VariablesStack.cpp 2000/07/25 14:54:33 1.3
+++ VariablesStack.cpp 2000/08/10 18:43:12 1.4
@@ -321,7 +321,7 @@
void
VariablesStack::pushVariable(
const QName& name,
- XObject* val,
+ const XObject* val,
const ElemTemplateElement* e)
{
if(elementFrameAlreadyPushed(e) == false)
@@ -351,12 +351,12 @@
-XObject*
+const XObject*
VariablesStack::findXObject(
const QName& name,
bool fSearchGlobalSpace) const
{
- XObject* theXObject = 0;
+ const XObject* theXObject = 0;
const StackEntry* theVariable = findVariable(name, fSearchGlobalSpace);
@@ -508,7 +508,7 @@
VariablesStack::StackEntry::StackEntry(
const QName* name,
- XObject* val) :
+ const XObject* val) :
m_type(eVariable)
{
variable.m_qname = name;
1.3 +9 -9 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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- VariablesStack.hpp 2000/07/25 14:54:33 1.2
+++ VariablesStack.hpp 2000/08/10 18:43:12 1.3
@@ -140,9 +140,9 @@
popContextMarker();
#if defined(XALAN_NO_NAMESPACES)
- typedef vector<pair<const QName*, XObject*> > ParamsVectorType;
+ typedef vector<pair<const QName*, const XObject*> > ParamsVectorType;
#else
- typedef std::vector<std::pair<const QName*, XObject*> > ParamsVectorType;
+ typedef std::vector<std::pair<const QName*, const XObject*> > ParamsVectorType;
#endif
/**
@@ -164,7 +164,7 @@
* @param theName name of variable
* @return pointer to XObject for variable
*/
- XObject*
+ const XObject*
getParamVariable(const QName& qname) const
{
return findXObject(qname, false);
@@ -176,7 +176,7 @@
* @param qname name of variable
* @return pointer to the corresponding XObject
*/
- XObject*
+ const XObject*
getVariable(const QName& name) const
{
return findXObject(name, true);
@@ -194,7 +194,7 @@
void
pushVariable(
const QName& name,
- XObject* val,
+ const XObject* val,
const ElemTemplateElement* e);
/**
@@ -321,7 +321,7 @@
*/
StackEntry(
const QName* name,
- XObject* val);
+ const XObject* val);
/**
* Construct an element frame marker.
@@ -366,7 +366,7 @@
*
* @return pointer to XObject
*/
- XObject*
+ const XObject*
getVariable() const
{
return variable.m_value;
@@ -400,7 +400,7 @@
{
const QName* m_qname;
- XObject* m_value;
+ const XObject* m_value;
} variable;
struct
@@ -419,7 +419,7 @@
enum { eDefaultStackSize = 100 };
- XObject*
+ const XObject*
findXObject(
const QName& name,
bool fSearchGlobalSpace) const;
1.55 +31 -24 xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
Index: XSLTEngineImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- XSLTEngineImpl.cpp 2000/08/08 16:29:06 1.54
+++ XSLTEngineImpl.cpp 2000/08/10 18:43:12 1.55
@@ -972,9 +972,11 @@
void
-XSLTEngineImpl::outputToResultTree(const XObject& value)
+XSLTEngineImpl::outputToResultTree(
+ StylesheetExecutionContext& executionContext,
+ const XObject& value)
{
- const int type = value.getType();
+ const XObject::eObjectType type = value.getType();
XalanDOMString s;
@@ -1041,7 +1043,7 @@
break;
case XObject::eTypeResultTreeFrag:
- outputResultTreeFragment(value);
+ outputResultTreeFragment(executionContext, value);
break;
case XObject::eTypeNull:
@@ -1934,9 +1936,10 @@
if(stripWhiteSpace == true)
{
- if(!m_xpathSupport.isIgnorableWhitespace(tx))
+ if(tx.isIgnorableWhitespace())
{
data = getNormalizedText(tx);
+
if((0 != length(data)) && (0 == length(trim(data))))
{
clear(data);
@@ -1967,7 +1970,7 @@
// if the node after that is a ignorable text node, append
// it to the text node just added.
- if(m_xpathSupport.isIgnorableWhitespace(tx))
+ if(tx.isIgnorableWhitespace())
{
ignorableWhitespace(toCharArray(data), length(data));
}
@@ -2103,9 +2106,11 @@
void
-XSLTEngineImpl::outputResultTreeFragment(const XObject& theTree)
+XSLTEngineImpl::outputResultTreeFragment(
+ StylesheetExecutionContext& executionContext,
+ const XObject& theTree)
{
- const ResultTreeFragBase& docFrag = theTree.rtree();
+ const ResultTreeFragBase& docFrag = theTree.rtree(executionContext);
const XalanNodeList* nl = docFrag.getChildNodes();
assert(nl != 0);
@@ -2393,18 +2398,19 @@
-XObject*
+const XObject*
XSLTEngineImpl::evalXPathStr(
const XalanDOMString& str,
XPathExecutionContext& executionContext)
{
- XPathGuard theXPath(m_xpathFactory,
- m_xpathFactory.create());
+ XPath* const theXPath = m_xpathFactory.create();
- m_xpathProcessor->initXPath(*theXPath.get(),
+ XPathGuard theGuard(m_xpathFactory,
+ theXPath);
+
+ m_xpathProcessor->initXPath(*theXPath,
str,
*executionContext.getPrefixResolver(),
- m_xobjectFactory,
m_xpathEnvSupport);
return theXPath->execute(executionContext.getCurrentNode(),
@@ -2414,20 +2420,21 @@
-XObject*
+const XObject*
XSLTEngineImpl::evalXPathStr(
const XalanDOMString& str,
XalanNode* contextNode,
const PrefixResolver& prefixResolver,
XPathExecutionContext& executionContext)
{
- XPathGuard theXPath(m_xpathFactory,
- m_xpathFactory.create());
+ XPath* const theXPath = m_xpathFactory.create();
+
+ XPathGuard theGuard(m_xpathFactory,
+ theXPath);
- m_xpathProcessor->initXPath(*theXPath.get(),
+ m_xpathProcessor->initXPath(*theXPath,
str,
prefixResolver,
- m_xobjectFactory,
m_xpathEnvSupport);
return theXPath->execute(contextNode, prefixResolver, executionContext);
@@ -2435,7 +2442,7 @@
-XObject*
+const XObject*
XSLTEngineImpl::evalXPathStr(
const XalanDOMString& str,
XalanNode* contextNode,
@@ -2455,14 +2462,14 @@
/**
* Create and initialize an xpath and return it.
*/
-XPath*
+const XPath*
XSLTEngineImpl::createMatchPattern(
const XalanDOMString& str,
const PrefixResolver& resolver)
{
XPath* const xpath = m_xpathFactory.create();
- m_xpathProcessor->initMatchPattern(*xpath, str, resolver, m_xobjectFactory, m_xpathEnvSupport);
+ m_xpathProcessor->initMatchPattern(*xpath, str, resolver, m_xpathEnvSupport);
return xpath;
}
@@ -2470,7 +2477,7 @@
void
-XSLTEngineImpl::returnXPath(XPath* xpath)
+XSLTEngineImpl::returnXPath(const XPath* xpath)
{
m_xpathFactory.returnObject(xpath);
}
@@ -2782,7 +2789,7 @@
const XalanText& theTextNode =
static_cast<const XalanText&>(textNode);
- if(!m_xpathSupport.isIgnorableWhitespace(theTextNode))
+ if(!theTextNode.isIgnorableWhitespace())
{
const XalanDOMString data = theTextNode.getData();
@@ -3107,7 +3114,7 @@
*/
ResultTreeFragBase* XSLTEngineImpl::createDocFrag() const
{
- return new ResultTreeFrag(*getDOMFactory(), m_xpathSupport);
+ return new ResultTreeFrag(*getDOMFactory());
}
@@ -3133,7 +3140,7 @@
ResultTreeFragBase*
XSLTEngineImpl::createResultTreeFrag() const
{
- return new ResultTreeFrag(*getDOMFactory(), m_xpathSupport);
+ return new ResultTreeFrag(*getDOMFactory());
}
1.42 +11 -7 xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
Index: XSLTEngineImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- XSLTEngineImpl.hpp 2000/08/01 19:43:27 1.41
+++ XSLTEngineImpl.hpp 2000/08/10 18:43:12 1.42
@@ -229,7 +229,9 @@
getSourceTreeFromInput(XSLTInputSource& inputSource);
virtual void
- outputToResultTree(const XObject& xobj);
+ outputToResultTree(
+ StylesheetExecutionContext& executionContext,
+ const XObject& xobj);
virtual void
resetCurrentState(
@@ -534,7 +536,9 @@
* @param theTree result tree fragment
*/
void
- outputResultTreeFragment(const XObject& theTree);
+ outputResultTreeFragment(
+ StylesheetExecutionContext& executionContext,
+ const XObject& theTree);
/**
* Retrieve the root stylesheet.
@@ -824,7 +828,7 @@
* @param resolver resolver for namespace resolution
* @return pointer to XPath created
*/
- XPath*
+ const XPath*
createMatchPattern(
const XalanDOMString& str,
const PrefixResolver& resolver);
@@ -836,7 +840,7 @@
* @param xpath The XPath to return.
*/
void
- returnXPath(XPath* xpath);
+ returnXPath(const XPath* xpath);
/**
* Copy XMLNS: attributes in if not already in scope.
@@ -856,7 +860,7 @@
* @param executionContext current execution context
* @return pointer to XObject result
*/
- XObject*
+ const XObject*
evalXPathStr(
const XalanDOMString& str,
XPathExecutionContext& executionContext);
@@ -870,7 +874,7 @@
* @param executionContext current execution context
* @return pointer to XObject result
*/
- XObject*
+ const XObject*
evalXPathStr(
const XalanDOMString& str,
XalanNode* contextNode,
@@ -886,7 +890,7 @@
* @param executionContext current execution context
* @return pointer to XObject result
*/
- XObject*
+ const XObject*
evalXPathStr(
const XalanDOMString& str,
XalanNode* contextNode,
1.14 +4 -1 xml-xalan/c/src/XSLT/XSLTProcessor.hpp
Index: XSLTProcessor.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessor.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- XSLTProcessor.hpp 2000/07/28 22:02:21 1.13
+++ XSLTProcessor.hpp 2000/08/10 18:43:12 1.14
@@ -209,10 +209,13 @@
* Output an object to the result tree by doing the right conversions.
* This is public for access by extensions.
*
+ * @param executionContext current execution context
* @param obj the XObject to output
*/
virtual void
- outputToResultTree(const XObject& xobj) = 0;
+ outputToResultTree(
+ StylesheetExecutionContext& executionContext,
+ const XObject& xobj) = 0;
/**
* Reset the state of execution to node 'xmlNode' in source tree