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 2002/05/14 17:46:50 UTC

cvs commit: xml-xalan/c/src/XSLT FunctionDocument.cpp FunctionDocument.hpp

dbertoni    02/05/14 08:46:50

  Modified:    c/src/XSLT FunctionDocument.cpp FunctionDocument.hpp
  Log:
  Better scoping and modularity.
  
  Revision  Changes    Path
  1.30      +89 -47    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.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- FunctionDocument.cpp	26 Sep 2001 21:30:23 -0000	1.29
  +++ FunctionDocument.cpp	14 May 2002 15:46:50 -0000	1.30
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2000 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -91,48 +91,80 @@
   
   
   
  -static void
  -getDoc(
  +inline void
  +doWarn(
   			XPathExecutionContext&				executionContext,
   			const XalanDOMString&				uri,
   			const XalanDOMString&				base,
  -			BorrowReturnMutableNodeRefList&		mnl)
  +			const XalanNode*					sourceNode,
  +			const Locator*						locator)
   {
  -	XalanDOMString	localURI(uri);
  +	XalanDOMString	theMessage(TranscodeFromLocalCodePage("Cannot load requested document: "));
   
  -    XalanDocument*	newDoc = executionContext.getSourceDocument(localURI);
  +	theMessage += uri;
   
  -	if(newDoc == 0)
  +	if (length(base) > 0)
   	{
  -		if(length(localURI) == 0)
  -		{
  -			assert(executionContext.getPrefixResolver() != 0);
  +		theMessage += TranscodeFromLocalCodePage(" (Base URI: ");
  +		theMessage += base;
  +		theMessage += TranscodeFromLocalCodePage(")");
  +	}
   
  -			localURI = executionContext.getPrefixResolver()->getURI();
  -		}
  +	executionContext.warn(theMessage, sourceNode, locator);
  +}
   
  -		try
  -		{
  -			newDoc = executionContext.parseXML(localURI, base);
  -		}
  -		catch(...)
  -		{
  -		}
   
  -		if(newDoc == 0)
  -		{
  -			XalanDOMString	theMessage(TranscodeFromLocalCodePage("Cannot load requested doc: "));
   
  -			theMessage += localURI;
  +inline XalanDocument*
  +parseDoc(
  +			XPathExecutionContext&	executionContext,
  +			const XalanDOMString&	uri,
  +			const XalanDOMString&	base,
  +			const XalanNode*		sourceNode,
  +			const Locator*			locator)
  +{
  +	try
  +	{
  +		return executionContext.parseXML(uri, base);
  +	}
  +	catch(...)
  +	{
  +		doWarn(executionContext, uri, base, sourceNode, locator);
  +	}
   
  -			if (length(base) > 0)
  -			{
  -				theMessage += TranscodeFromLocalCodePage(" (Base URI: ");
  -				theMessage += base;
  -				theMessage += TranscodeFromLocalCodePage(")");
  -			}
  +	return 0;
  +}
  +
  +
  +
  +static void
  +getDoc(
  +			XPathExecutionContext&				executionContext,
  +			const XalanDOMString&				uri,
  +			const XalanDOMString&				base,
  +			BorrowReturnMutableNodeRefList&		mnl,
  +			const XalanNode*					sourceNode,
  +			const Locator*						locator)
  +{
  +    XalanDocument*	newDoc = executionContext.getSourceDocument(uri);
  +
  +	if(newDoc == 0)
  +	{
  +		if(length(uri) != 0)
  +		{
  +			newDoc = parseDoc(executionContext, uri, base, sourceNode, locator);
  +		}
  +		else
  +		{
  +			assert(executionContext.getPrefixResolver() != 0);
   
  -			executionContext.warn(theMessage);
  +			newDoc =
  +				parseDoc(
  +					executionContext,
  +					executionContext.getPrefixResolver()->getURI(),
  +					base,
  +					sourceNode,
  +					locator);
   		}
       }
   
  @@ -148,9 +180,11 @@
   getDoc(
   			XPathExecutionContext&				executionContext,
   			const XalanDOMString&				uri,
  -			BorrowReturnMutableNodeRefList&		mnl)
  +			BorrowReturnMutableNodeRefList&		mnl,
  +			const XalanNode*					sourceNode,
  +			const Locator*						locator)
   {
  -	getDoc(executionContext, uri, XalanDOMString(), mnl);
  +	getDoc(executionContext, uri, XalanDOMString(), mnl, sourceNode, locator);
   }
   
   
  @@ -160,7 +194,8 @@
   			XPathExecutionContext&				executionContext,
   			const XalanDOMString&				uri,
   			const XalanNode*					resolver,
  -			BorrowReturnMutableNodeRefList&		mnl)
  +			BorrowReturnMutableNodeRefList&		mnl,
  +			const Locator*						locator)
   {
   	assert(resolver != 0);
   
  @@ -172,7 +207,13 @@
   #endif
   			resolver->getOwnerDocument();
   
  -	getDoc(executionContext, uri, executionContext.findURIFromDoc(ownerDocument), mnl);
  +	getDoc(
  +		executionContext,
  +		uri,
  +		executionContext.findURIFromDoc(ownerDocument),
  +		mnl,
  +		resolver,
  +		locator);
   }
   
   
  @@ -182,13 +223,13 @@
   			XPathExecutionContext&	executionContext,
   			XalanNode*				context,			
   			const XObjectPtr		arg1,
  -			const Locator*			/* locator */) const
  +			const Locator*			locator) const
   {
   	assert(arg1.null() == false);
   
   	if (arg1->getType() == XObject::eTypeNodeSet)
   	{
  -		return doExecute(executionContext, context, arg1, 0, 1);
  +		return doExecute(executionContext, context, arg1, 0, 1, locator);
   	}
   	else
   	{
  @@ -198,7 +239,7 @@
   
   		base = executionContext.getPrefixResolver()->getURI();
   
  -		return doExecute(executionContext, context, arg1, &base, 1);
  +		return doExecute(executionContext, context, arg1, &base, 1, locator);
   	}
   }
   
  @@ -262,18 +303,19 @@
   		}
   	}
   
  -	return doExecute(executionContext, context, arg1, &base, 2);
  +	return doExecute(executionContext, context, arg1, &base, 2, locator);
   }
   
   
   
   XObjectPtr
   FunctionDocument::doExecute(
  -		XPathExecutionContext&			executionContext,
  -		XalanNode*						/* context */,
  -		const XObjectPtr				arg,
  -		XalanDOMString*					base,
  -		int								argCount) const
  +			XPathExecutionContext&			executionContext,
  +			XalanNode*						context,
  +			const XObjectPtr				arg,
  +			XalanDOMString*					base,
  +			int								argCount,
  +			const Locator*					locator) const
   {
   	typedef XPathExecutionContext::BorrowReturnMutableNodeRefList	BorrowReturnMutableNodeRefList;
   
  @@ -346,7 +388,7 @@
   			   indexOfColon < indexOfSlash)
   			{
   				// The ref is absolute...
  -				getDoc(executionContext, ref, mnl);
  +				getDoc(executionContext, ref, mnl, context, locator);
   			}
   			else
   			{
  @@ -354,7 +396,7 @@
   				// provided, use that...
   				if (base != 0)
   				{
  -					getDoc(executionContext, ref, *base, mnl);
  +					getDoc(executionContext, ref, *base, mnl, context, locator);
   				}
   				else
   				{
  @@ -362,11 +404,11 @@
   					// relative ref...
   					if (resolver == 0)
   					{
  -						getDoc(executionContext, ref, mnl);
  +						getDoc(executionContext, ref, mnl, context, locator);
   					}
   					else
   					{
  -						getDoc(executionContext, ref, resolver, mnl);
  +						getDoc(executionContext, ref, resolver, mnl, locator);
   					}
   				}
   			}
  
  
  
  1.8       +7 -6      xml-xalan/c/src/XSLT/FunctionDocument.hpp
  
  Index: FunctionDocument.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionDocument.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FunctionDocument.hpp	14 Sep 2001 20:49:43 -0000	1.7
  +++ FunctionDocument.hpp	14 May 2002 15:46:50 -0000	1.8
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -112,11 +112,12 @@
   
   	XObjectPtr
   	doExecute(
  -			XPathExecutionContext&			executionContext,
  -			XalanNode*						context,			
  -			const XObjectPtr				arg,
  -			XalanDOMString*					base,
  -			int								argCount) const;
  +			XPathExecutionContext&	executionContext,
  +			XalanNode*				context,			
  +			const XObjectPtr		arg,
  +			XalanDOMString*			base,
  +			int						argCount,
  +			const Locator*			locator) const;
   
   	// Not implemented...
   	FunctionDocument&
  
  
  

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