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...@apache.org on 2001/06/14 21:12:50 UTC

cvs commit: xml-xalan/c/src/XPath NodeRefListResultTreeFragProxy.cpp NodeRefListResultTreeFragProxy.hpp XNodeSetBase.cpp XNodeSetBase.hpp XNodeSetResultTreeFragProxy.cpp XNodeSetResultTreeFragProxy.hpp ResultTreeFrag.cpp ResultTreeFrag.hpp ResultTreeFragBase.hpp XNodeSet.cpp XNodeSet.hpp XPath.cpp XPath.hpp XPathEnvSupport.hpp XPathEnvSupportDefault.cpp XPathEnvSupportDefault.hpp XPathEvaluator.cpp XPathExecutionContextDefault.cpp XPathExpression.cpp XPathExpression.hpp XPathProcessor.hpp XPathProcessorImpl.cpp XPathProcessorImpl.hpp XResultTreeFrag.cpp XResultTreeFrag.hpp XStringBase.cpp

dbertoni    01/06/14 12:12:50

  Modified:    c/src/XPath ResultTreeFrag.cpp ResultTreeFrag.hpp
                        ResultTreeFragBase.hpp XNodeSet.cpp XNodeSet.hpp
                        XPath.cpp XPath.hpp XPathEnvSupport.hpp
                        XPathEnvSupportDefault.cpp
                        XPathEnvSupportDefault.hpp XPathEvaluator.cpp
                        XPathExecutionContextDefault.cpp
                        XPathExpression.cpp XPathExpression.hpp
                        XPathProcessor.hpp XPathProcessorImpl.cpp
                        XPathProcessorImpl.hpp XResultTreeFrag.cpp
                        XResultTreeFrag.hpp XStringBase.cpp
  Added:       c/src/XPath NodeRefListResultTreeFragProxy.cpp
                        NodeRefListResultTreeFragProxy.hpp XNodeSetBase.cpp
                        XNodeSetBase.hpp XNodeSetResultTreeFragProxy.cpp
                        XNodeSetResultTreeFragProxy.hpp
  Log:
  Performance improvements and code cleanup.
  
  Revision  Changes    Path
  1.12      +3 -15     xml-xalan/c/src/XPath/ResultTreeFrag.cpp
  
  Index: ResultTreeFrag.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/ResultTreeFrag.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ResultTreeFrag.cpp	2001/01/16 02:31:28	1.11
  +++ ResultTreeFrag.cpp	2001/06/14 19:12:00	1.12
  @@ -72,10 +72,9 @@
   
   
   
  -ResultTreeFrag::ResultTreeFrag(XalanDocument*	theOwnerDocument) :
  +ResultTreeFrag::ResultTreeFrag() :
   	ResultTreeFragBase(),
  -	XalanNodeList(),
  -	m_document(theOwnerDocument)
  +	XalanNodeList()
   {
   }
   
  @@ -85,7 +84,6 @@
   							   bool						deepClone) :
   	ResultTreeFragBase(theSource),
   	XalanNodeList(),
  -	m_document(theSource.m_document),
   	m_children(deepClone == false ? theSource.m_children : NodeVectorType())
   {
   	if (deepClone == true)
  @@ -119,16 +117,6 @@
   
   
   
  -void
  -ResultTreeFrag::setOwnerDocument(XalanDocument*		theOwnerDocument)
  -{
  -	m_document = theOwnerDocument;
  -
  -	clear();
  -}
  -
  -
  -
   const XalanDOMString&
   ResultTreeFrag::getNodeName() const
   {
  @@ -215,7 +203,7 @@
   XalanDocument*
   ResultTreeFrag::getOwnerDocument() const
   {
  -	return m_document;
  +	return 0;
   }
   
   
  
  
  
  1.13      +1 -9      xml-xalan/c/src/XPath/ResultTreeFrag.hpp
  
  Index: ResultTreeFrag.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/ResultTreeFrag.hpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ResultTreeFrag.hpp	2001/01/16 02:31:28	1.12
  +++ ResultTreeFrag.hpp	2001/06/14 19:12:01	1.13
  @@ -86,10 +86,8 @@
   
   	/**
   	 * Construct a result tree fragment object from a DOM document.
  -	 * 
  -	 * @param theOwnerDocument The document used to construct result tree fragment
   	 */
  -	ResultTreeFrag(XalanDocument*	theOwnerDocument = 0);
  +	ResultTreeFrag();
   
   	/**
   	 * Construct a result tree fragment object from another.
  @@ -109,10 +107,6 @@
   	virtual void
   	clear();
   
  -	virtual void
  -	setOwnerDocument(XalanDocument*		theOwnerDocument);
  -
  -
   	// These interfaces are inherited from XalanDocumentFragment...
   
   	virtual const XalanDOMString&
  @@ -227,8 +221,6 @@
   	bool
   	operator==(const ResultTreeFrag&	theRHS) const;
   
  -
  -	XalanDocument*					m_document;
   
   #if defined(XALAN_NO_NAMESPACES)
   	typedef vector<XalanNode*>			NodeVectorType;
  
  
  
  1.11      +1 -13     xml-xalan/c/src/XPath/ResultTreeFragBase.hpp
  
  Index: ResultTreeFragBase.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/ResultTreeFragBase.hpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ResultTreeFragBase.hpp	2001/01/16 02:31:28	1.10
  +++ ResultTreeFragBase.hpp	2001/06/14 19:12:02	1.11
  @@ -82,9 +82,7 @@
   public:
   
   	/**
  -	 * Construct a result tree fragment object from a DOM document.
  -	 * 
  -	 * @param theOwnerDocument document used to construct result tree fragment
  +	 * Construct a result tree fragment object.
   	 */
   	ResultTreeFragBase();
   
  @@ -104,16 +102,6 @@
   	 */
   	virtual void
   	clear() = 0;
  -
  -	/**
  -	 * Set the owner document for the result tree fragment.  This will
  -	 * cause all of the children to be cleared as well.
  -	 *
  -	 * @param theOwnerDocument The new owner document instance.
  -	 */
  -	virtual void
  -	setOwnerDocument(XalanDocument*		theOwnerDocument) = 0;
  -
   
   	// These interfaces are inherited from XalanDocumentFragment...
   	virtual const XalanDOMString&
  
  
  
  1.24      +18 -152   xml-xalan/c/src/XPath/XNodeSet.cpp
  
  Index: XNodeSet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XNodeSet.cpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- XNodeSet.cpp	2001/06/06 21:49:00	1.23
  +++ XNodeSet.cpp	2001/06/14 19:12:04	1.24
  @@ -84,11 +84,8 @@
   
   
   XNodeSet::XNodeSet(BorrowReturnMutableNodeRefList&	value) :
  -	XObject(eTypeNodeSet),
  -	m_value(value),
  -	m_resultTreeFrag(),
  -	m_cachedStringValue(),
  -	m_cachedNumberValue(theBogusNumberValue)
  +	XNodeSetBase(),
  +	m_value(value)
   {
   }
   
  @@ -96,13 +93,8 @@
   
   XNodeSet::XNodeSet(const XNodeSet&	source,
   				   bool				deepClone) :
  -	XObject(source),
  -	m_value(source.m_value.clone()),
  -	m_resultTreeFrag(source.m_resultTreeFrag.get() == 0 ?
  -						0 :
  -						source.m_resultTreeFrag->clone(deepClone)),
  -	m_cachedStringValue(source.m_cachedStringValue),
  -	m_cachedNumberValue(source.m_cachedNumberValue)
  +	XNodeSetBase(source),
  +	m_value(source.m_value.clone())
   {
   }
   
  @@ -126,128 +118,6 @@
   
   
   
  -XalanDOMString
  -XNodeSet::getTypeString() const
  -{
  -	return XALAN_STATIC_UCODE_STRING("#NODESET");
  -}
  -
  -
  -
  -double
  -XNodeSet::num() const
  -{
  -	if (DoubleSupport::equal(m_cachedNumberValue, theBogusNumberValue) == true)
  -	{
  -#if defined(XALAN_NO_MUTABLE)
  -		((XNodeSet*)this)->m_cachedNumberValue = DoubleSupport::toDouble(str());
  -#else
  -		m_cachedNumberValue = DoubleSupport::toDouble(str());
  -#endif
  -	}
  -
  -	return m_cachedNumberValue;
  -}
  -
  -
  -
  -bool
  -XNodeSet::boolean() const
  -{
  -	return m_value->getLength() > 0 ? true : false;
  -}
  -
  -
  -
  -const XalanDOMString&
  -XNodeSet::str() const
  -{
  -	if (isEmpty(m_cachedStringValue) == true &&
  -		m_value->getLength() > 0)
  -	{
  -		const XalanNode* const	theNode = m_value->item(0);
  -		assert(theNode != 0);
  -
  -#if defined(XALAN_NO_MUTABLE)
  -		DOMServices::getNodeData(*theNode, ((XNodeSet*)this)->m_cachedStringValue);
  -#else
  -		DOMServices::getNodeData(*theNode, m_cachedStringValue);
  -#endif
  -	}
  -
  -	return m_cachedStringValue;
  -}
  -
  -
  -
  -void
  -XNodeSet::str(
  -			FormatterListener&	formatterListener,
  -			MemberFunctionPtr	function) const
  -{
  -	if (isEmpty(m_cachedStringValue) == false)
  -	{
  -		(formatterListener.*function)(c_wstr(m_cachedStringValue), length(m_cachedStringValue));
  -	}
  -	else if (m_value->getLength() > 0)
  -	{
  -		const XalanNode* const	theNode = m_value->item(0);
  -		assert(theNode != 0);
  -
  -		DOMServices::getNodeData(*theNode, formatterListener, function);
  -	}
  -}
  -
  -
  -
  -void
  -XNodeSet::str(XalanDOMString&	theBuffer) const
  -{
  -	if (isEmpty(m_cachedStringValue) == false)
  -	{
  -		append(theBuffer, m_cachedStringValue);
  -	}
  -	else if (m_value->getLength() > 0)
  -	{
  -		const XalanNode* const	theNode = m_value->item(0);
  -		assert(theNode != 0);
  -
  -		DOMServices::getNodeData(*theNode, theBuffer);
  -	}
  -}
  -
  -
  -
  -const ResultTreeFragBase&
  -XNodeSet::rtree(XPathExecutionContext&	executionContext) const
  -{
  -	if (m_resultTreeFrag.get() == 0)
  -	{
  -		XalanDocument* const	theFactory = executionContext.getDOMFactory();
  -		assert(theFactory != 0);
  -
  -		ResultTreeFrag* const	theFrag =
  -			new ResultTreeFrag(theFactory);
  -
  -		const int	nNodes = m_value->getLength();
  -
  -		for(int i = 0; i < nNodes; i++)
  -		{
  -			theFrag->appendChild(m_value->item(i));
  -		}
  -
  -#if defined(XALAN_NO_MUTABLE)
  -		((XNodeSet*)this)->m_resultTreeFrag.reset(theFrag);
  -#else
  -	    m_resultTreeFrag.reset(theFrag);
  -#endif
  -	}
  -
  -	return *m_resultTreeFrag.get();
  -}
  -
  -
  -
   const NodeRefListBase&
   XNodeSet::nodeset() const
   {
  @@ -257,39 +127,35 @@
   
   
   void
  -XNodeSet::ProcessXObjectTypeCallback(XObjectTypeCallback&	theCallbackObject)
  +XNodeSet::release()
   {
  -	theCallbackObject.NodeSet(*this,
  -							  nodeset());
  +	m_value.release();
  +
  +	clearCachedValues();
   }
   
   
   
   void
  -XNodeSet::ProcessXObjectTypeCallback(XObjectTypeCallback&	theCallbackObject) const
  +XNodeSet::set(BorrowReturnMutableNodeRefList&	value)
   {
  -	theCallbackObject.NodeSet(*this,
  -							  nodeset());
  +	release();
  +
  +	m_value = value;
   }
   
   
   
  -void
  -XNodeSet::release()
  +XalanNode*
  +XNodeSet::item(unsigned int	index) const
   {
  -	m_value.release();
  -
  -	m_cachedNumberValue = theBogusNumberValue;
  -
  -	clear(m_cachedStringValue);
  +	return m_value->item(index);
   }
   
   
   
  -void
  -XNodeSet::set(BorrowReturnMutableNodeRefList&	value)
  +unsigned int
  +XNodeSet::getLength() const
   {
  -	release();
  -
  -	m_value = value;
  +	return m_value->getLength();
   }
  
  
  
  1.21      +8 -51     xml-xalan/c/src/XPath/XNodeSet.hpp
  
  Index: XNodeSet.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XNodeSet.hpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- XNodeSet.hpp	2001/06/06 21:49:01	1.20
  +++ XNodeSet.hpp	2001/06/14 19:12:05	1.21
  @@ -64,31 +64,19 @@
   
   
   
  -#if defined(XALAN_AUTO_PTR_REQUIRES_DEFINITION)
  -#include <XPath/ResultTreeFragBase.hpp>
  -#endif
  -
  -
  -
  -#include <Include/XalanAutoPtr.hpp>
  -
  -
  -
   // Base class header file.
  -#include <XPath/XObject.hpp>
  -#include <XPath/XPathExecutionContext.hpp>
  +#include <XPath/XNodeSetBase.hpp>
   
   
   
  -class ResultTreeFragBase;
  -class XalanNode;
  +#include <XPath/XPathExecutionContext.hpp>
   
   
   
   /**
    * Class to hold XPath return types.
    */
  -class XALAN_XPATH_EXPORT XNodeSet : public XObject
  +class XALAN_XPATH_EXPORT XNodeSet : public XNodeSetBase
   {
   public:
   
  @@ -114,7 +102,7 @@
   	virtual
   	~XNodeSet();
   
  -	// These methods are inherited from XObject ...
  +	// These methods are inherited from XNodeSetBase...
   
   #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
   	virtual XObject*
  @@ -123,37 +111,14 @@
   #endif
   	clone(void*		theAddress = 0) const;
   
  -	virtual XalanDOMString
  -	getTypeString() const;
  -
  -	virtual double
  -	num() const;
  -
  -	virtual bool
  -	boolean() const;
  -
  -	virtual const XalanDOMString&
  -	str() const;
  -
  -	virtual void
  -	str(
  -			FormatterListener&	formatterListener,
  -			MemberFunctionPtr	function) const;
  -
  -	virtual void
  -	str(XalanDOMString&	theBuffer) const;
  -
  -	virtual const ResultTreeFragBase&
  -	rtree(XPathExecutionContext&	executionContext) const;
  -
   	virtual const NodeRefListBase&
   	nodeset() const;
   
  -	virtual void
  -	ProcessXObjectTypeCallback(XObjectTypeCallback&		theCallbackObject);
  +	virtual XalanNode*
  +	item(unsigned int	index) const;
   
  -	virtual void
  -	ProcessXObjectTypeCallback(XObjectTypeCallback&		theCallbackObject) const;
  +	virtual unsigned int
  +	getLength() const;
   
   	/**
   	 * Release the node set held by the instance.
  @@ -176,15 +141,7 @@
   	operator=(const XNodeSet&);
   
   	// Data members...
  -
  -
   	BorrowReturnMutableNodeRefList				m_value;
  -
  -	mutable XalanAutoPtr<ResultTreeFragBase>	m_resultTreeFrag;
  -
  -	mutable XalanDOMString						m_cachedStringValue;
  -
  -	mutable double								m_cachedNumberValue;
   };
   
   
  
  
  
  1.53      +0 -72     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.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- XPath.cpp	2001/05/17 16:12:17	1.52
  +++ XPath.cpp	2001/06/14 19:12:06	1.53
  @@ -261,18 +261,10 @@
   		return mod(context, opPos, executionContext);
   		break;
   
  -	case XPathExpression::eOP_QUO:
  -		return quo(context, opPos, executionContext);
  -		break;
  -
   	case XPathExpression::eOP_NEG:
   		return neg(context, opPos, executionContext);
   		break;
   
  -	case XPathExpression::eOP_STRING:
  -		return string(context, opPos, executionContext);
  -		break;
  -
   	case XPathExpression::eOP_BOOL:
   		return boolean(context, opPos, executionContext);
   		break;
  @@ -407,22 +399,6 @@
   
   
   
  -double
  -XPath::nodeTest(
  -			XalanNode*				context,
  -			int						/* opPos */,
  -			int						/* argLen */,
  -			int						/* stepType */,
  -			XPathExecutionContext&	executionContext) const
  -{
  -	executionContext.warn(TranscodeFromLocalCodePage("XPath needs a derived object to implement nodeTest!"),
  -						  context);
  -
  -    return s_MatchScoreNone;
  -}
  -
  -
  -
   void
   XPath::getTargetElementStrings(TargetElementStringsVectorType&	targetStrings) const
   {
  @@ -539,17 +515,6 @@
   
   
   const XObjectPtr
  -XPath::xpath(
  -			XalanNode*				context,
  -			int						opPos,
  -			XPathExecutionContext&	executionContext) const
  -{
  -	return executeMore(context, opPos + 2, executionContext);
  -}
  -
  -
  -
  -const XObjectPtr
   XPath::matchPattern(
   			XalanNode*				context,
   			int						opPos,
  @@ -902,20 +867,6 @@
   
   
   const XObjectPtr
  -XPath::quo(
  -			XalanNode*				context,
  -			int						opPos,
  -			XPathExecutionContext&	executionContext) const
  -{
  -	// Actually, this is no longer supported by xpath...
  -	executionContext.warn(TranscodeFromLocalCodePage("Old syntax: quo(...) is no longer defined in XPath."));
  -
  -	return div(context, opPos, executionContext);
  -}
  -
  -
  -
  -const XObjectPtr
   XPath::neg(
   			XalanNode*				context,
   			int						opPos,
  @@ -925,29 +876,6 @@
   	assert(expr1.get() != 0);
   
   	return executionContext.getXObjectFactory().createNumber(DoubleSupport::negative(expr1->num()));
  -}
  -
  -
  -
  -const XObjectPtr
  -XPath::string(
  -			XalanNode*				context,
  -			int						opPos,
  -			XPathExecutionContext&	executionContext) const
  -{
  -	XObjectPtr	expr1(executeMore(context, opPos + 2, executionContext));
  -	assert(expr1.get() != 0);
  -
  -	// Try to optimize when the result of the execution is
  -	// already a string.
  -	if (expr1->getType() == XObject::eTypeString)
  -	{
  -		return expr1;
  -	}
  -	else
  -	{
  -		return executionContext.getXObjectFactory().createStringAdapter(expr1);
  -	}
   }
   
   
  
  
  
  1.24      +0 -45     xml-xalan/c/src/XPath/XPath.hpp
  
  Index: XPath.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPath.hpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- XPath.hpp	2001/04/18 14:46:11	1.23
  +++ XPath.hpp	2001/06/14 19:12:09	1.24
  @@ -304,26 +304,6 @@
   			XPathExecutionContext&	executionContext) const;
   
   	/**
  -	 * Test a node.  This should be implemented by a derived class.
  -	 * Returns s_MatchScoreNone by default.
  -	 *
  -	 * @param context  current source tree context node
  -	 * @param opPos    current position in the m_opMap array
  -	 * @param argLen   argument length
  -	 * @param stepType type of step
  -	 * @param executionContext current execution context
  -	 * @return      one of s_MatchScoreNone, s_MatchScoreNodeTest,
  -	 *              s_MatchScoreQName
  -	 */
  -	virtual double
  -	nodeTest(
  -			XalanNode*				context,
  -			int						opPos,
  -			int						argLen,
  -			int						stepType,
  -			XPathExecutionContext&	executionContext) const;
  -
  -	/**
   	 * Evaluate a predicate.
   	 *
   	 * @param context          current source tree context node
  @@ -445,18 +425,6 @@
   	createXLocatorHandler() const;
   
   	/**
  -	 * Execute from the beginning of the xpath.
  -	 * @param context The current source tree context node.
  -	 * @param opPos The current position in the m_opMap array.
  -	 * @return The result of the expression.
  -	 */
  -	virtual const XObjectPtr
  -	xpath(
  -			XalanNode*				context,
  -			int						opPos,
  -			XPathExecutionContext&	executionContext) const;
  -
  -	/**
   	 * Computes the union of its operands which must be node-sets.
   	 * @param context The current source tree context node.
   	 * @param opPos The current position in the m_opMap array.
  @@ -652,19 +620,6 @@
   			int						opPos,
   			XPathExecutionContext&	executionContext) const;
   
  -	/**
  -	 * Return the remainder from a truncating division.
  -	 * (Quo is no longer supported by xpath).
  -	 * @param context The current source tree context node.
  -	 * @param opPos The current position in the m_opMap array.
  -	 * @return arg1 mod arg2.
  -	 */
  -	const XObjectPtr
  -	quo(
  -			XalanNode*				context,
  -			int						opPos,
  -			XPathExecutionContext&	executionContext) const;
  -	
   	/**
   	 * Return the negation of a number.
   	 * @param context The current source tree context node.
  
  
  
  1.14      +0 -16     xml-xalan/c/src/XPath/XPathEnvSupport.hpp
  
  Index: XPathEnvSupport.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathEnvSupport.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XPathEnvSupport.hpp	2001/03/29 22:16:05	1.13
  +++ XPathEnvSupport.hpp	2001/06/14 19:12:10	1.14
  @@ -202,22 +202,6 @@
   			XalanNode*						context,
   			const XObjectArgVectorType&		argVec) const = 0;
   
  -	/**
  -	 * Tells, through the combination of the default-space attribute on
  -	 * xsl:stylesheet, xsl:strip-space, xsl:preserve-space, and the xml:space
  -	 * attribute, whether or not extra whitespace should be stripped from the
  -	 * node.  Literal elements from template elements should <em>not</em> be
  -	 * tested with this function.
  -	 *
  -	 * @param executionContext  current execution context
  -	 * @param node text node from the source tree
  -	 * @return true if the text node should be stripped of extra whitespace
  -	 */
  -	virtual bool
  -	shouldStripSourceNode(
  -			XPathExecutionContext&	executionContext,
  -			const XalanNode&		node) const = 0;
  -
   	enum eSource { eXMLParser		= 1,
   				   eXSLTProcessor	= 2,
   				   eXPATHParser		= 3,
  
  
  
  1.26      +0 -10     xml-xalan/c/src/XPath/XPathEnvSupportDefault.cpp
  
  Index: XPathEnvSupportDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathEnvSupportDefault.cpp,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- XPathEnvSupportDefault.cpp	2001/04/30 18:11:01	1.25
  +++ XPathEnvSupportDefault.cpp	2001/06/14 19:12:11	1.26
  @@ -464,16 +464,6 @@
   
   
   bool
  -XPathEnvSupportDefault::shouldStripSourceNode(
  -			XPathExecutionContext&	/* executionContext */,
  -			const XalanNode&		/* node */) const
  -{
  -	return false;
  -}
  -
  -
  -
  -bool
   XPathEnvSupportDefault::problem(
   			eSource					/* where */,
   			eClassification			classification,
  
  
  
  1.20      +0 -5      xml-xalan/c/src/XPath/XPathEnvSupportDefault.hpp
  
  Index: XPathEnvSupportDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathEnvSupportDefault.hpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XPathEnvSupportDefault.hpp	2001/03/29 22:18:12	1.19
  +++ XPathEnvSupportDefault.hpp	2001/06/14 19:12:12	1.20
  @@ -207,11 +207,6 @@
   			const XObjectArgVectorType&		argVec) const;
   
   	virtual bool
  -	shouldStripSourceNode(
  -			XPathExecutionContext&	executionContext,
  -			const XalanNode&		node) const;
  -
  -	virtual bool
   	problem(
   			eSource					where,
   			eClassification			classification,
  
  
  
  1.3       +1 -2      xml-xalan/c/src/XPath/XPathEvaluator.cpp
  
  Index: XPathEvaluator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathEvaluator.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XPathEvaluator.cpp	2001/03/29 22:40:40	1.2
  +++ XPathEvaluator.cpp	2001/06/14 19:12:14	1.3
  @@ -255,8 +255,7 @@
       theProcessor.initXPath(
   			theXPath,
   			XalanDOMString(xpathString),
  -			prefixResolver,
  -			envSupport);
  +			prefixResolver);
   
   	// Set up the connections between the execution context and
   	// the provided support objects...
  
  
  
  1.38      +1 -3      xml-xalan/c/src/XPath/XPathExecutionContextDefault.cpp
  
  Index: XPathExecutionContextDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExecutionContextDefault.cpp,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- XPathExecutionContextDefault.cpp	2001/05/14 01:01:16	1.37
  +++ XPathExecutionContextDefault.cpp	2001/06/14 19:12:15	1.38
  @@ -449,9 +449,7 @@
   bool
   XPathExecutionContextDefault::shouldStripSourceNode(const XalanNode&	node)
   {
  -	assert(m_xpathEnvSupport != 0);
  -
  -	return m_xpathEnvSupport->shouldStripSourceNode(*this, node);
  +	return false;
   }
   
   
  
  
  
  1.31      +0 -2      xml-xalan/c/src/XPath/XPathExpression.cpp
  
  Index: XPathExpression.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExpression.cpp,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- XPathExpression.cpp	2001/06/06 21:50:43	1.30
  +++ XPathExpression.cpp	2001/06/14 19:12:16	1.31
  @@ -847,9 +847,7 @@
   	theMap[eOP_MULT] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_DIV] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_MOD] = 1 + s__opCodeMapLengthIndex;
  -	theMap[eOP_QUO] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_NEG] = 1 + s__opCodeMapLengthIndex;
  -	theMap[eOP_STRING] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_BOOL] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_NUMBER] = 1 + s__opCodeMapLengthIndex;
   	theMap[eOP_UNION] = 1 + s__opCodeMapLengthIndex;
  
  
  
  1.19      +4 -2      xml-xalan/c/src/XPath/XPathExpression.hpp
  
  Index: XPathExpression.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExpression.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XPathExpression.hpp	2001/06/06 21:50:43	1.18
  +++ XPathExpression.hpp	2001/06/14 19:12:18	1.19
  @@ -305,7 +305,8 @@
   		 * returns: 
   		 *	XNumber
   		 */
  -		eOP_QUO = 15,
  +// No longer supported...
  +//		eOP_QUO = 15,
   
   		/**
   		 * [OP_NEG]
  @@ -325,7 +326,8 @@
   		 * returns: 
   		 *	XString
   		 */
  -		eOP_STRING = 17,
  +// No longer supported...
  +//		eOP_STRING = 17,
   
   		/**
   		 * [OP_BOOL] (cast operation)
  
  
  
  1.6       +2 -7      xml-xalan/c/src/XPath/XPathProcessor.hpp
  
  Index: XPathProcessor.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathProcessor.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XPathProcessor.hpp	2000/08/10 18:37:39	1.5
  +++ XPathProcessor.hpp	2001/06/14 19:12:19	1.6
  @@ -72,7 +72,6 @@
   class Function;
   class PrefixResolver;
   class XPath;
  -class XPathEnvSupport;
   
   
   
  @@ -100,8 +99,7 @@
   	initXPath(
   			XPath&					pathObj,
   			const XalanDOMString&	expression,
  -			const PrefixResolver&	resolver,
  -			const XPathEnvSupport&	envSupport) = 0;
  +			const PrefixResolver&	resolver) = 0;
   
   	/**
   	 * Given a string, create an XSLT Match Pattern object.
  @@ -109,15 +107,12 @@
   	 * @param pathObj        XPath object to be initialized
   	 * @param expression     expression that will be evaluated
   	 * @param resolver       prefix resolver to use
  -	 * @param xobjectFactory factory class instance for XObjects
  -	 * @param envSupport     XPath environment support class instance
   	 */
   	virtual void
   	initMatchPattern(
   			XPath&					pathObj,
   			const XalanDOMString&	expression,
  -			const PrefixResolver&	resolver,
  -			const XPathEnvSupport&	envSupport) = 0;
  +			const PrefixResolver&	resolver) = 0;
   
   	/**
   	 * Given a string, and a reference to a function object, install the
  
  
  
  1.41      +7 -85     xml-xalan/c/src/XPath/XPathProcessorImpl.cpp
  
  Index: XPathProcessorImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathProcessorImpl.cpp,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- XPathProcessorImpl.cpp	2001/06/06 21:51:24	1.40
  +++ XPathProcessorImpl.cpp	2001/06/14 19:12:20	1.41
  @@ -86,7 +86,6 @@
   	m_xpath(0),
   	m_expression(0),
   	m_prefixResolver(0),
  -	m_envSupport(0),
   	m_requireLiterals(false)
   {
   }
  @@ -103,16 +102,15 @@
   XPathProcessorImpl::initXPath(
   			XPath&						pathObj,
   			const XalanDOMString&		expression,
  -			const PrefixResolver&		prefixResolver,
  -			const XPathEnvSupport&		envSupport)
  +			const PrefixResolver&		prefixResolver)
   {
   	m_requireLiterals = false;
   
   	m_xpath = &pathObj;
  +
   	m_expression = &m_xpath->getExpression();
   
   	m_prefixResolver = &prefixResolver;
  -	m_envSupport = &envSupport;
   
   	tokenize(expression);
   
  @@ -130,7 +128,6 @@
   	m_xpath = 0;
   	m_expression = 0;
   	m_prefixResolver = 0;
  -	m_envSupport = 0;
   }
   
   
  @@ -139,14 +136,14 @@
   XPathProcessorImpl::initMatchPattern(
   			XPath&					pathObj,
   			const XalanDOMString&	expression,
  -			const PrefixResolver&	prefixResolver,
  -			const XPathEnvSupport&	envSupport)
  +			const PrefixResolver&	prefixResolver)
   {
   	m_xpath = &pathObj;
  +
   	m_expression = &m_xpath->getExpression();
   
   	m_prefixResolver = &prefixResolver;
  -	m_envSupport = &envSupport;
  +
   	m_expression->reset();
   
   	tokenize(expression);
  @@ -170,7 +167,6 @@
   	m_xpath = 0;
   	m_expression = 0;
   	m_prefixResolver = 0;
  -	m_envSupport = 0;
   }
   
   
  @@ -895,40 +891,6 @@
   
   
   void
  -XPathProcessorImpl::warn(
  -			const XalanDOMString&	msg,
  -			XalanNode* 				sourceNode) const
  -{
  -	assert(m_envSupport != 0);
  -
  -	const bool	shouldThrow =
  -		m_envSupport->problem(XPathEnvSupport::eXPATHParser, 
  -							  XPathEnvSupport::eWarning,
  -							  m_prefixResolver, 
  -							  sourceNode,
  -							  msg,
  -							  0,
  -							  0);
  -
  -	if(shouldThrow == true)
  -	{
  -	  throw XPathParserException(msg);
  -	}
  -}
  - 
  -
  -
  -void
  -XPathProcessorImpl::warn(
  -			const char*		msg,
  -			XalanNode*		sourceNode) const
  -{
  -	warn(TranscodeFromLocalCodePage(msg), sourceNode);
  -}
  -
  -
  -
  -void
   XPathProcessorImpl::error(
   			const XalanDOMString&	msg,
   			XalanNode*				sourceNode) const
  @@ -963,22 +925,8 @@
   		// Ask the expression to dump the remaining tokens...
   		m_expression->dumpRemainingTokenQueue(thePrintWriter);
   	}
  -
  -	assert(m_envSupport != 0);
  -
  -	const bool	shouldThrow =
  -		m_envSupport->problem(XPathEnvSupport::eXPATHParser, 
  -							  XPathEnvSupport::eError,
  -							  m_prefixResolver, 
  -							  sourceNode,
  -							  emsg,
  -							  0,
  -							  0);
   
  -	if(shouldThrow == true)
  -	{
  -		throw XPathParserException(emsg);
  -	}
  +	throw XPathParserException(emsg);
   }
   
   
  @@ -1323,10 +1271,6 @@
   		{
   			theOpCode = XPathExpression::eOP_MOD;
   		}
  -		else if(tokenIs(s_quoString) == true)
  -		{
  -			theOpCode = XPathExpression::eOP_QUO;
  -		}
   
   		if (theOpCode != XPathExpression::eENDOP)
   		{
  @@ -1399,22 +1343,6 @@
   
   
   void
  -XPathProcessorImpl::StringExpr()
  -{
  -	const int	opPos = m_expression->opCodeMapLength();
  -
  -	m_expression->appendOpCode(XPathExpression::eOP_STRING);
  -
  -	Expr();
  -
  -	// $$$ ToDo: Is this really necessary?
  -	m_expression->updateOpCodeLength(XPathExpression::eOP_STRING,
  -									 opPos);
  -}
  -
  -
  -
  -void
   XPathProcessorImpl::BooleanExpr()
   {
   	const int	opPos = m_expression->opCodeMapLength();
  @@ -1727,7 +1655,7 @@
   	{
   		if (isValidFunction(m_token) == false)
   		{
  -			warn(TranscodeFromLocalCodePage("Could not find function: ") +
  +			error(TranscodeFromLocalCodePage("Could not find function: ") +
   				 m_token +
   				 TranscodeFromLocalCodePage("()"));
   		}
  @@ -2554,8 +2482,6 @@
   
   static XalanDOMString	s_modString;
   
  -static XalanDOMString	s_quoString;
  -
   static XalanDOMString	s_dotString;
   
   static XalanDOMString	s_dotDotString;
  @@ -2582,8 +2508,6 @@
   
   const XalanDOMString&	XPathProcessorImpl::s_modString = ::s_modString;
   
  -const XalanDOMString&	XPathProcessorImpl::s_quoString = ::s_quoString;
  -
   const XalanDOMString&	XPathProcessorImpl::s_dotString = ::s_dotString;
   
   const XalanDOMString&	XPathProcessorImpl::s_dotDotString = ::s_dotDotString;
  @@ -2623,7 +2547,6 @@
   	::s_andString = XALAN_STATIC_UCODE_STRING("and");
   	::s_divString = XALAN_STATIC_UCODE_STRING("div");
   	::s_modString = XALAN_STATIC_UCODE_STRING("mod");
  -	::s_quoString = XALAN_STATIC_UCODE_STRING("quo");
   	::s_dotString = XALAN_STATIC_UCODE_STRING(".");
   	::s_dotDotString = XALAN_STATIC_UCODE_STRING("..");
   	::s_axisString = XALAN_STATIC_UCODE_STRING("::");
  @@ -2647,7 +2570,6 @@
   	releaseMemory(::s_andString);
   	releaseMemory(::s_divString);
   	releaseMemory(::s_modString);
  -	releaseMemory(::s_quoString);
   	releaseMemory(::s_dotString);
   	releaseMemory(::s_dotDotString);
   	releaseMemory(::s_axisString);
  
  
  
  1.15      +4 -36     xml-xalan/c/src/XPath/XPathProcessorImpl.hpp
  
  Index: XPathProcessorImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathProcessorImpl.hpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- XPathProcessorImpl.hpp	2001/06/06 21:51:24	1.14
  +++ XPathProcessorImpl.hpp	2001/06/14 19:12:22	1.15
  @@ -147,15 +147,13 @@
   	initXPath(
   			XPath&					pathObj,
   			const XalanDOMString&	expression,
  -			const PrefixResolver&	prefixResolver,
  -			const XPathEnvSupport&	envSupport);
  +			const PrefixResolver&	prefixResolver);
   
   	virtual void
   	initMatchPattern(
   			XPath&					pathObj,
   			const XalanDOMString&	expression,
  -			const PrefixResolver&	prefixResolver,
  -			const XPathEnvSupport&	envSupport);
  +			const PrefixResolver&	prefixResolver);
   
   private:
   
  @@ -390,33 +388,15 @@
   	isCurrentLiteral() const;
   
   	/**
  -	 * Warn the user of an problem.
  +	 * Throw an exception using the provided message text.
   	 */
   	void
  -	warn(
  -			const XalanDOMString&	msg,
  -			XalanNode*				sourceNode = 0) const;
  -
  -	/**
  -	 * Warn the user of an problem.
  -	 */
  -	void
  -	warn(
  -			const char*		msg,
  -			XalanNode*		sourceNode = 0) const;
  -
  -	/**
  -	 * Tell the user of an error, and probably throw an 
  -	 * exception.
  -	 */
  -	void
   	error(
   			const XalanDOMString&	msg,
   			XalanNode*				sourceNode = 0) const;
   
   	/**
  -	 * Tell the user of an error, and probably throw an 
  -	 * exception.
  +	 * Throw an exception using the provided message text.
   	 */
   	void
   	error(
  @@ -531,14 +511,6 @@
   	 */
   	void
   	UnaryExpr();
  -  
  -	/**
  -	 * --------------------------------------------------------------------------------
  -	 StringExpr  ::=	Expr   
  -	 * --------------------------------------------------------------------------------
  -	 */
  -	void
  -	StringExpr();
   
   	/**
   	 * 
  @@ -832,8 +804,6 @@
   	 */
   	const PrefixResolver*			m_prefixResolver;
   
  -	const XPathEnvSupport*			m_envSupport;
  -
   	bool							m_requireLiterals;
   
   	enum eDummy
  @@ -858,8 +828,6 @@
   	static const XalanDOMString&	s_divString;
   
   	static const XalanDOMString&	s_modString;
  -
  -	static const XalanDOMString&	s_quoString;
   
   	static const XalanDOMString&	s_dotString;
   
  
  
  
  1.23      +18 -3     xml-xalan/c/src/XPath/XResultTreeFrag.cpp
  
  Index: XResultTreeFrag.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XResultTreeFrag.cpp,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- XResultTreeFrag.cpp	2001/06/06 21:49:03	1.22
  +++ XResultTreeFrag.cpp	2001/06/14 19:12:24	1.23
  @@ -274,6 +274,7 @@
   unsigned int
   XResultTreeFrag::getLength() const
   {
  +	return 1;
   	assert(m_value.get() != 0);
   
   	unsigned int	theLength = 0;
  @@ -336,7 +337,14 @@
   XalanNode*
   XResultTreeFrag::NodeRefListBaseProxy::item(unsigned int	index) const
   {
  -	return m_xresultTreeFrag.item(index);
  +	if (index == 0)
  +	{
  +		return m_xresultTreeFrag.m_value.get();
  +	}
  +	else
  +	{
  +		return 0;
  +	}
   }
   
   
  @@ -344,7 +352,7 @@
   unsigned int
   XResultTreeFrag::NodeRefListBaseProxy::getLength() const
   {
  -	return m_xresultTreeFrag.getLength();
  +	return 1;
   }
   
   
  @@ -352,7 +360,14 @@
   unsigned int
   XResultTreeFrag::NodeRefListBaseProxy::indexOf(const XalanNode*	theNode) const
   {
  -	return m_xresultTreeFrag.indexOf(theNode);
  +	if (theNode == m_xresultTreeFrag.m_value.get())
  +	{
  +		return 0;
  +	}
  +	else
  +	{
  +		return NodeRefListBase::npos;
  +	}
   }
   
   
  
  
  
  1.24      +3 -1      xml-xalan/c/src/XPath/XResultTreeFrag.hpp
  
  Index: XResultTreeFrag.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XResultTreeFrag.hpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- XResultTreeFrag.hpp	2001/06/06 21:49:04	1.23
  +++ XResultTreeFrag.hpp	2001/06/14 19:12:25	1.24
  @@ -178,7 +178,9 @@
   	void
   	set(BorrowReturnResultTreeFrag&	theValue);
   
  -	class  NodeRefListBaseProxy : public NodeRefListBase
  +	// This is a proxy class for result tree fragment to node-set
  +	// conversion.
  +	class XALAN_XPATH_EXPORT NodeRefListBaseProxy : public NodeRefListBase
   	{
   	public:
   
  
  
  
  1.3       +9 -8      xml-xalan/c/src/XPath/XStringBase.cpp
  
  Index: XStringBase.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XStringBase.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XStringBase.cpp	2001/01/16 02:32:39	1.2
  +++ XStringBase.cpp	2001/06/14 19:12:26	1.3
  @@ -139,17 +139,18 @@
   {
   	if (m_resultTreeFrag.get() == 0)
   	{
  -		XalanDocument* const	theFactory = executionContext.getDOMFactory();
  -		assert(theFactory != 0);
  +		ResultTreeFrag* const	theFrag = new ResultTreeFrag;
   
  -		ResultTreeFrag* const	theFrag =
  -			new ResultTreeFrag(theFactory);
  +		XalanDocument* const	theFactory = executionContext.getDOMFactory();
   
  -		XalanNode* const	textNode =
  -			theFactory->createTextNode(str());
  -		assert(textNode != 0);
  +		if (theFactory != 0)
  +		{
  +			XalanNode* const	textNode =
  +				theFactory->createTextNode(str());
  +			assert(textNode != 0);
   
  -		theFrag->appendChild(textNode);
  +			theFrag->appendChild(textNode);
  +		}
   
   #if defined(XALAN_NO_MUTABLE)
   		((XStringBase*)this)->m_resultTreeFrag.reset(theFrag);
  
  
  
  1.1                  xml-xalan/c/src/XPath/NodeRefListResultTreeFragProxy.cpp
  
  Index: NodeRefListResultTreeFragProxy.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  // Class header file.
  #include "NodeRefListResultTreeFragProxy.hpp"
  
  
  
  #include <XalanDOM/XalanDOMException.hpp>
  
  
  
  #include "NodeRefListBase.hpp"
  
  
  
  const XalanDOMString	NodeRefListResultTreeFragProxy::s_emptyString;
  
  
  
  NodeRefListResultTreeFragProxy::NodeRefListResultTreeFragProxy(const NodeRefListBase&	theValue) :
  	ResultTreeFragBase(),
  	XalanNodeList(),
  	m_value(theValue)
  {
  }
  
  
  
  NodeRefListResultTreeFragProxy::~NodeRefListResultTreeFragProxy()
  {
  }
  
  
  
  void
  NodeRefListResultTreeFragProxy::clear()
  {
  	assert(false);
  }
  
  
  
  const XalanDOMString&
  NodeRefListResultTreeFragProxy::getNodeName() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  NodeRefListResultTreeFragProxy::getNodeValue() const
  {
  	return s_emptyString;
  }
  
  
  
  NodeRefListResultTreeFragProxy::NodeType
  NodeRefListResultTreeFragProxy::getNodeType() const
  {
  	return DOCUMENT_FRAGMENT_NODE;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::getParentNode() const
  {
  	return 0;
  }
  
  
  
  const XalanNodeList*
  NodeRefListResultTreeFragProxy::getChildNodes() const
  {
  	return this;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::getFirstChild() const
  {
  	return m_value.getLength() == 0 ? 0 : m_value.item(0);
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::getLastChild() const
  {
  	const unsigned int	theLength = m_value.getLength();
  	
  	return theLength == 0 ? 0 : m_value.item(theLength - 1);
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::getPreviousSibling() const
  {
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::getNextSibling() const
  {
  	return 0;
  }
  
  
  
  const XalanNamedNodeMap*
  NodeRefListResultTreeFragProxy::getAttributes() const
  {
  	return 0;
  }
  
  
  
  XalanDocument*
  NodeRefListResultTreeFragProxy::getOwnerDocument() const
  {
  	return 0;
  }
  
  
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  XalanNode*
  #else
  NodeRefListResultTreeFragProxy*
  #endif
  NodeRefListResultTreeFragProxy::cloneNode(bool	/* deep */) const
  {
  	throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR);
  
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::insertBefore(
  			XalanNode*	/* newChild */,
  			XalanNode*	/* refChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::replaceChild(
  			XalanNode*	/* newChild */,
  			XalanNode*	/* oldChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::appendChild(XalanNode*	/* newChild */ )
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::removeChild(XalanNode*	/* oldChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  bool
  NodeRefListResultTreeFragProxy::hasChildNodes() const
  {
  	return getLength() > 0 ? true : false;
  }
  
  
  
  void
  NodeRefListResultTreeFragProxy::setNodeValue(const XalanDOMString&	/* nodeValue */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  }
  
  
  
  void
  NodeRefListResultTreeFragProxy::normalize()
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  }
  
  
  
  bool
  NodeRefListResultTreeFragProxy::supports(
  			const XalanDOMString&	/* feature */,
  			const XalanDOMString&	/* version */) const
  {
  	return false;
  }
  
  
  
  const XalanDOMString&
  NodeRefListResultTreeFragProxy::getNamespaceURI() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  NodeRefListResultTreeFragProxy::getPrefix() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  NodeRefListResultTreeFragProxy::getLocalName() const
  {
  	return s_emptyString;
  }
  
  
  
  void
  NodeRefListResultTreeFragProxy::setPrefix(const XalanDOMString&		/* prefix */)
  {
  }
  
  
  
  bool
  NodeRefListResultTreeFragProxy::isIndexed() const
  {
  	return false;
  }
  
  
  
  unsigned long
  NodeRefListResultTreeFragProxy::getIndex() const
  {
  	return 0;
  }
  
  
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  ResultTreeFragBase*
  #else
  NodeRefListResultTreeFragProxy*
  #endif
  NodeRefListResultTreeFragProxy::clone(bool	/* deep */) const
  {
  	assert(false);
  
  	return 0;
  }
  
  
  
  XalanNode*
  NodeRefListResultTreeFragProxy::item(unsigned int	index) const
  {
  	assert(index < m_value.getLength());
  
  	return m_value.item(index);
  }
  
  
  
  unsigned int
  NodeRefListResultTreeFragProxy::getLength() const
  {
  	return m_value.getLength();
  }
  
  
  
  1.1                  xml-xalan/c/src/XPath/NodeRefListResultTreeFragProxy.hpp
  
  Index: NodeRefListResultTreeFragProxy.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  #if !defined(NODEREFLISTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680)
  #define NODEREFLISTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XPath/XPathDefinitions.hpp>
  
  
  
  #include <XalanDOM/XalanNodeList.hpp>
  
  
  
  #include <XPath/ResultTreeFragBase.hpp>
  
  
  
  class NodeRefListBase;
  
  
  
  class XALAN_XPATH_EXPORT NodeRefListResultTreeFragProxy : public ResultTreeFragBase, private XalanNodeList
  {
  public:
  
  	NodeRefListResultTreeFragProxy(const NodeRefListBase&	value);
  
  	virtual
  	~NodeRefListResultTreeFragProxy();
  
  	// These interfaces are inherited from ResultTreeFragBase...
  
  	virtual void
  	clear();
  
  	virtual const XalanDOMString&
  	getNodeName() const;
  
  	virtual const XalanDOMString&
  	getNodeValue() const;
  
  	virtual NodeType
  	getNodeType() const;
  
  	virtual XalanNode*
  	getParentNode() const;
  
  	virtual const XalanNodeList*
  	getChildNodes() const;
  
  	virtual XalanNode*
  	getFirstChild() const;
  
  	virtual XalanNode*
  	getLastChild() const;
  
  	virtual XalanNode*
  	getPreviousSibling() const;
  
  	virtual XalanNode*
  	getNextSibling() const;
  
  	virtual const XalanNamedNodeMap*
  	getAttributes() const;
  
  	virtual XalanDocument*
  	getOwnerDocument() const;
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  	virtual XalanNode*
  #else
  	virtual ResultTreeFragBase*
  #endif
  	cloneNode(bool deep) const;
  
  	virtual XalanNode*
  	insertBefore(
  			XalanNode*	newChild,
  			XalanNode*	refChild);
  
  	virtual XalanNode*
  	replaceChild(
  			XalanNode*	newChild,
  			XalanNode*	oldChild);
  
  	virtual XalanNode*
  	removeChild(XalanNode*	oldChild);
  
  	virtual XalanNode*
  	appendChild(XalanNode*	newChild);
  
  	virtual bool
  	hasChildNodes() const;
  
  	virtual void
  	setNodeValue(const XalanDOMString&	nodeValue);
  
  	virtual void
  	normalize();
  
  	virtual bool
  	supports(
  			const XalanDOMString&	feature,
  			const XalanDOMString&	version) const;
  
  	virtual const XalanDOMString&
  	getNamespaceURI() const;
  
  	virtual const XalanDOMString&
  	getPrefix() const;
  
  	virtual const XalanDOMString&
  	getLocalName() const;
  
  	virtual void
  	setPrefix(const XalanDOMString&		prefix);
  
  	virtual bool
  	isIndexed() const;
  
  	virtual unsigned long
  	getIndex() const;
  
  	virtual ResultTreeFragBase*
  	clone(bool	deep) const;
  
  private:
  
  	// Not implemented...
  	NodeRefListResultTreeFragProxy(const NodeRefListResultTreeFragProxy&	theSource);
  
  	NodeRefListResultTreeFragProxy&
  	operator=(const NodeRefListResultTreeFragProxy&	theRHS);
  
  	bool
  	operator==(const NodeRefListResultTreeFragProxy&	theRHS);
  
  
  	// These methods are inherited from XalanNodeList...
  
  	virtual XalanNode*
  	item(unsigned int	index) const;
  
  	virtual unsigned int
  	getLength() const;
  
  	// Data members...
  	const NodeRefListBase&		m_value;
  
  	static const XalanDOMString		s_emptyString;
  
  };
  
  
  
  #endif	// NODEREFLISTRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680
  
  
  
  1.1                  xml-xalan/c/src/XPath/XNodeSetBase.cpp
  
  Index: XNodeSetBase.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  // Class header file.
  #include "XNodeSetBase.hpp"
  
  
  
  #include <XalanDOM/XalanNode.hpp>
  
  
  
  #include <PlatformSupport/DOMStringHelper.hpp>
  #include <PlatformSupport/DoubleSupport.hpp>
  
  
  
  #include <DOMSupport/DOMServices.hpp>
  
  
  
  #include "ResultTreeFrag.hpp"
  #include "XObjectTypeCallback.hpp"
  #include "XPathExecutionContext.hpp"
  
  
  
  const double	theBogusNumberValue = 123456789;
  
  
  
  XNodeSetBase::XNodeSetBase() :
  	XObject(eTypeNodeSet),
  	m_proxy(*this),
  	m_cachedStringValue(),
  	m_cachedNumberValue(theBogusNumberValue)
  {
  }
  
  
  
  XNodeSetBase::XNodeSetBase(const XNodeSetBase&	source) :
  	XObject(source),
  	m_proxy(*this),
  	m_cachedStringValue(source.m_cachedStringValue),
  	m_cachedNumberValue(source.m_cachedNumberValue)
  {
  }
  
  
  
  XNodeSetBase::~XNodeSetBase()
  {
  }
  
  
  
  XalanDOMString
  XNodeSetBase::getTypeString() const
  {
  	return XALAN_STATIC_UCODE_STRING("#NODESET");
  }
  
  
  
  double
  XNodeSetBase::num() const
  {
  	if (DoubleSupport::equal(m_cachedNumberValue, theBogusNumberValue) == true)
  	{
  #if defined(XALAN_NO_MUTABLE)
  		((XNodeSetBase*)this)->m_cachedNumberValue = DoubleSupport::toDouble(str());
  #else
  		m_cachedNumberValue = DoubleSupport::toDouble(str());
  #endif
  	}
  
  	return m_cachedNumberValue;
  }
  
  
  
  bool
  XNodeSetBase::boolean() const
  {
  	return getLength() > 0 ? true : false;
  }
  
  
  
  const XalanDOMString&
  XNodeSetBase::str() const
  {
  	if (isEmpty(m_cachedStringValue) == true &&
  		getLength() > 0)
  	{
  		const XalanNode* const	theNode = item(0);
  		assert(theNode != 0);
  
  #if defined(XALAN_NO_MUTABLE)
  		DOMServices::getNodeData(*theNode, ((XNodeSetBase*)this)->m_cachedStringValue);
  #else
  		DOMServices::getNodeData(*theNode, m_cachedStringValue);
  #endif
  	}
  
  	return m_cachedStringValue;
  }
  
  
  
  void
  XNodeSetBase::str(
  			FormatterListener&	formatterListener,
  			MemberFunctionPtr	function) const
  {
  	if (isEmpty(m_cachedStringValue) == false)
  	{
  		(formatterListener.*function)(c_wstr(m_cachedStringValue), length(m_cachedStringValue));
  	}
  	else if (getLength() > 0)
  	{
  		const XalanNode* const	theNode = item(0);
  		assert(theNode != 0);
  
  		DOMServices::getNodeData(*theNode, formatterListener, function);
  	}
  }
  
  
  
  void
  XNodeSetBase::str(XalanDOMString&	theBuffer) const
  {
  	if (isEmpty(m_cachedStringValue) == false)
  	{
  		append(theBuffer, m_cachedStringValue);
  	}
  	else if (getLength() > 0)
  	{
  		const XalanNode* const	theNode = item(0);
  		assert(theNode != 0);
  
  		DOMServices::getNodeData(*theNode, theBuffer);
  	}
  }
  
  
  
  const ResultTreeFragBase&
  XNodeSetBase::rtree(XPathExecutionContext&	/* executionContext */) const
  {
  	return m_proxy;
  }
  
  
  
  void
  XNodeSetBase::ProcessXObjectTypeCallback(XObjectTypeCallback&	theCallbackObject)
  {
  	theCallbackObject.NodeSet(*this,
  							  nodeset());
  }
  
  
  
  void
  XNodeSetBase::ProcessXObjectTypeCallback(XObjectTypeCallback&	theCallbackObject) const
  {
  	theCallbackObject.NodeSet(*this,
  							  nodeset());
  }
  
  
  
  void
  XNodeSetBase::clearCachedValues()
  {
  	m_cachedNumberValue = theBogusNumberValue;
  
  	clear(m_cachedStringValue);
  }
  
  
  
  1.1                  xml-xalan/c/src/XPath/XNodeSetBase.hpp
  
  Index: XNodeSetBase.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  #if !defined(XNODESETBASE_HEADER_GUARD_1357924680)
  #define XNODESETBASE_HEADER_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XPath/XPathDefinitions.hpp>
  
  
  
  // Base class header file.
  #include <XPath/XObject.hpp>
  
  
  
  #include <XPath/XNodeSetResultTreeFragProxy.hpp>
  
  
  
  /**
   * Class to hold XPath return types.
   */
  class XALAN_XPATH_EXPORT XNodeSetBase : public XObject
  {
  public:
  
  	/**
  	 * Create an XNodeSetBase
  	 */
  	XNodeSetBase();
  
  	/**
  	 * Create an XNodeSetBase from another.
  	 *
  	 * @param source    object to copy
  	 */
  	XNodeSetBase(const XNodeSetBase&	source);
  
  	virtual
  	~XNodeSetBase();
  
  	// These methods are inherited from XObject ...
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  	virtual XObject*
  #else
  	virtual XNodeSetBase*
  #endif
  	clone(void*		theAddress = 0) const = 0;
  
  	virtual XalanDOMString
  	getTypeString() const;
  
  	virtual double
  	num() const;
  
  	virtual bool
  	boolean() const;
  
  	virtual const XalanDOMString&
  	str() const;
  
  	virtual void
  	str(
  			FormatterListener&	formatterListener,
  			MemberFunctionPtr	function) const;
  
  	virtual void
  	str(XalanDOMString&	theBuffer) const;
  
  	virtual const ResultTreeFragBase&
  	rtree(XPathExecutionContext&	executionContext) const;
  
  	virtual const NodeRefListBase&
  	nodeset() const = 0;
  
  	virtual void
  	ProcessXObjectTypeCallback(XObjectTypeCallback&		theCallbackObject);
  
  	virtual void
  	ProcessXObjectTypeCallback(XObjectTypeCallback&		theCallbackObject) const;
  
  	virtual XalanNode*
  	item(unsigned int	index) const = 0;
  
  	virtual unsigned int
  	getLength() const = 0;
  
  protected:
  
  	void
  	clearCachedValues();
  
  private:
  
  	// Not implemented...
  	XNodeSetBase&
  	operator=(const XNodeSetBase&);
  
  	// Data members...
  	XNodeSetResultTreeFragProxy					m_proxy;
  
  	mutable XalanDOMString						m_cachedStringValue;
  
  	mutable double								m_cachedNumberValue;
  };
  
  
  
  #endif	// XNODESETBASE_HEADER_GUARD_1357924680
  
  
  
  1.1                  xml-xalan/c/src/XPath/XNodeSetResultTreeFragProxy.cpp
  
  Index: XNodeSetResultTreeFragProxy.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  // Class header file.
  #include "XNodeSetResultTreeFragProxy.hpp"
  
  
  
  #include <XalanDOM/XalanDOMException.hpp>
  
  
  
  #include "NodeRefListBase.hpp"
  #include "XNodeSetBase.hpp"
  
  
  
  const XalanDOMString	XNodeSetResultTreeFragProxy::s_emptyString;
  
  
  
  XNodeSetResultTreeFragProxy::XNodeSetResultTreeFragProxy(const XNodeSetBase&	theValue) :
  	ResultTreeFragBase(),
  	XalanNodeList(),
  	m_value(theValue)
  {
  }
  
  
  
  XNodeSetResultTreeFragProxy::~XNodeSetResultTreeFragProxy()
  {
  }
  
  
  
  void
  XNodeSetResultTreeFragProxy::clear()
  {
  	assert(false);
  }
  
  
  
  const XalanDOMString&
  XNodeSetResultTreeFragProxy::getNodeName() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  XNodeSetResultTreeFragProxy::getNodeValue() const
  {
  	return s_emptyString;
  }
  
  
  
  XNodeSetResultTreeFragProxy::NodeType
  XNodeSetResultTreeFragProxy::getNodeType() const
  {
  	return DOCUMENT_FRAGMENT_NODE;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::getParentNode() const
  {
  	return 0;
  }
  
  
  
  const XalanNodeList*
  XNodeSetResultTreeFragProxy::getChildNodes() const
  {
  	return this;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::getFirstChild() const
  {
  	return m_value.getLength() == 0 ? 0 : m_value.item(0);
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::getLastChild() const
  {
  	const unsigned int	theLength = m_value.getLength();
  	
  	return theLength == 0 ? 0 : m_value.item(theLength - 1);
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::getPreviousSibling() const
  {
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::getNextSibling() const
  {
  	return 0;
  }
  
  
  
  const XalanNamedNodeMap*
  XNodeSetResultTreeFragProxy::getAttributes() const
  {
  	return 0;
  }
  
  
  
  XalanDocument*
  XNodeSetResultTreeFragProxy::getOwnerDocument() const
  {
  	return 0;
  }
  
  
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  XalanNode*
  #else
  XNodeSetResultTreeFragProxy*
  #endif
  XNodeSetResultTreeFragProxy::cloneNode(bool	/* deep */) const
  {
  	throw XalanDOMException(XalanDOMException::NOT_SUPPORTED_ERR);
  
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::insertBefore(
  			XalanNode*	/* newChild */,
  			XalanNode*	/* refChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::replaceChild(
  			XalanNode*	/* newChild */,
  			XalanNode*	/* oldChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::appendChild(XalanNode*	/* newChild */ )
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::removeChild(XalanNode*	/* oldChild */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  
  	// Dummy return value...
  	return 0;
  }
  
  
  bool
  XNodeSetResultTreeFragProxy::hasChildNodes() const
  {
  	return getLength() > 0 ? true : false;
  }
  
  
  
  void
  XNodeSetResultTreeFragProxy::setNodeValue(const XalanDOMString&	/* nodeValue */)
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  }
  
  
  
  void
  XNodeSetResultTreeFragProxy::normalize()
  {
  	throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
  }
  
  
  
  bool
  XNodeSetResultTreeFragProxy::supports(
  			const XalanDOMString&	/* feature */,
  			const XalanDOMString&	/* version */) const
  {
  	return false;
  }
  
  
  
  const XalanDOMString&
  XNodeSetResultTreeFragProxy::getNamespaceURI() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  XNodeSetResultTreeFragProxy::getPrefix() const
  {
  	return s_emptyString;
  }
  
  
  
  const XalanDOMString&
  XNodeSetResultTreeFragProxy::getLocalName() const
  {
  	return s_emptyString;
  }
  
  
  
  void
  XNodeSetResultTreeFragProxy::setPrefix(const XalanDOMString&		/* prefix */)
  {
  }
  
  
  
  bool
  XNodeSetResultTreeFragProxy::isIndexed() const
  {
  	return false;
  }
  
  
  
  unsigned long
  XNodeSetResultTreeFragProxy::getIndex() const
  {
  	return 0;
  }
  
  
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  ResultTreeFragBase*
  #else
  XNodeSetResultTreeFragProxy*
  #endif
  XNodeSetResultTreeFragProxy::clone(bool	/* deep */) const
  {
  	assert(false);
  
  	return 0;
  }
  
  
  
  XalanNode*
  XNodeSetResultTreeFragProxy::item(unsigned int	index) const
  {
  	assert(index < getLength());
  
  	return m_value.nodeset().item(index);
  }
  
  
  
  unsigned int
  XNodeSetResultTreeFragProxy::getLength() const
  {
  	return m_value.getLength();
  }
  
  
  
  1.1                  xml-xalan/c/src/XPath/XNodeSetResultTreeFragProxy.hpp
  
  Index: XNodeSetResultTreeFragProxy.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  #if !defined(XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680)
  #define XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XPath/XPathDefinitions.hpp>
  
  
  
  #include <XalanDOM/XalanNodeList.hpp>
  
  
  
  #include <XPath/ResultTreeFragBase.hpp>
  
  
  
  class XNodeSetBase;
  
  
  
  class XALAN_XPATH_EXPORT XNodeSetResultTreeFragProxy : public ResultTreeFragBase, private XalanNodeList
  {
  public:
  
  	XNodeSetResultTreeFragProxy(const XNodeSetBase&	value);
  
  	virtual
  	~XNodeSetResultTreeFragProxy();
  
  	// These interfaces are inherited from ResultTreeFragBase...
  
  	virtual void
  	clear();
  
  	virtual const XalanDOMString&
  	getNodeName() const;
  
  	virtual const XalanDOMString&
  	getNodeValue() const;
  
  	virtual NodeType
  	getNodeType() const;
  
  	virtual XalanNode*
  	getParentNode() const;
  
  	virtual const XalanNodeList*
  	getChildNodes() const;
  
  	virtual XalanNode*
  	getFirstChild() const;
  
  	virtual XalanNode*
  	getLastChild() const;
  
  	virtual XalanNode*
  	getPreviousSibling() const;
  
  	virtual XalanNode*
  	getNextSibling() const;
  
  	virtual const XalanNamedNodeMap*
  	getAttributes() const;
  
  	virtual XalanDocument*
  	getOwnerDocument() const;
  
  #if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
  	virtual XalanNode*
  #else
  	virtual ResultTreeFragBase*
  #endif
  	cloneNode(bool deep) const;
  
  	virtual XalanNode*
  	insertBefore(
  			XalanNode*	newChild,
  			XalanNode*	refChild);
  
  	virtual XalanNode*
  	replaceChild(
  			XalanNode*	newChild,
  			XalanNode*	oldChild);
  
  	virtual XalanNode*
  	removeChild(XalanNode*	oldChild);
  
  	virtual XalanNode*
  	appendChild(XalanNode*	newChild);
  
  	virtual bool
  	hasChildNodes() const;
  
  	virtual void
  	setNodeValue(const XalanDOMString&	nodeValue);
  
  	virtual void
  	normalize();
  
  	virtual bool
  	supports(
  			const XalanDOMString&	feature,
  			const XalanDOMString&	version) const;
  
  	virtual const XalanDOMString&
  	getNamespaceURI() const;
  
  	virtual const XalanDOMString&
  	getPrefix() const;
  
  	virtual const XalanDOMString&
  	getLocalName() const;
  
  	virtual void
  	setPrefix(const XalanDOMString&		prefix);
  
  	virtual bool
  	isIndexed() const;
  
  	virtual unsigned long
  	getIndex() const;
  
  	virtual ResultTreeFragBase*
  	clone(bool	deep) const;
  
  private:
  
  	// Not implemented...
  	XNodeSetResultTreeFragProxy(const XNodeSetResultTreeFragProxy&	theSource);
  
  	XNodeSetResultTreeFragProxy&
  	operator=(const XNodeSetResultTreeFragProxy&	theRHS);
  
  	bool
  	operator==(const XNodeSetResultTreeFragProxy&	theRHS);
  
  
  	// These methods are inherited from XalanNodeList...
  
  	virtual XalanNode*
  	item(unsigned int	index) const;
  
  	virtual unsigned int
  	getLength() const;
  
  	// Data members...
  	const XNodeSetBase&		m_value;
  
  	static const XalanDOMString		s_emptyString;
  
  };
  
  
  
  #endif	// XNODESETRESULTTREEFRAGPROXY_HEADER_GUARD_1357924680
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org