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/05/14 03:01:19 UTC

cvs commit: xml-xalan/c/src/XPath ElementPrefixResolverProxy.cpp ElementPrefixResolverProxy.hpp QName.cpp QName.hpp QNameByValue.cpp XPathExecutionContext.hpp XPathExecutionContextDefault.cpp XPathExecutionContextDefault.hpp XPathProcessorImpl.cpp

dbertoni    01/05/13 18:01:19

  Modified:    c/src/XPath ElementPrefixResolverProxy.cpp
                        ElementPrefixResolverProxy.hpp QName.cpp QName.hpp
                        QNameByValue.cpp XPathExecutionContext.hpp
                        XPathExecutionContextDefault.cpp
                        XPathExecutionContextDefault.hpp
                        XPathProcessorImpl.cpp
  Log:
  Return pointers to string instead of references for namespace-related functions, to support empty namespace URIs.
  
  Revision  Changes    Path
  1.6       +2 -6      xml-xalan/c/src/XPath/ElementPrefixResolverProxy.cpp
  
  Index: ElementPrefixResolverProxy.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/ElementPrefixResolverProxy.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElementPrefixResolverProxy.cpp	2001/01/08 18:28:21	1.5
  +++ ElementPrefixResolverProxy.cpp	2001/05/14 01:01:15	1.6
  @@ -75,10 +75,6 @@
   
   
   
  -const XalanDOMString	ElementPrefixResolverProxy::s_emptyString;
  -
  -
  -
   ElementPrefixResolverProxy::ElementPrefixResolverProxy(
   			const XalanElement*		namespaceContext,
   			const XPathEnvSupport&	envSupport,
  @@ -98,12 +94,12 @@
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   ElementPrefixResolverProxy::getNamespaceForPrefix(const XalanDOMString&		prefix) const
   {
   	if (m_namespaceContext == 0)
   	{
  -		return s_emptyString;
  +		return 0;
   	}
   	else
   	{
  
  
  
  1.8       +1 -4      xml-xalan/c/src/XPath/ElementPrefixResolverProxy.hpp
  
  Index: ElementPrefixResolverProxy.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/ElementPrefixResolverProxy.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ElementPrefixResolverProxy.hpp	2001/01/31 01:40:33	1.7
  +++ ElementPrefixResolverProxy.hpp	2001/05/14 01:01:15	1.8
  @@ -100,7 +100,7 @@
   
   	// These methods are inherited from PrefixResolver ...
   
  -	virtual const XalanDOMString&
  +	virtual const XalanDOMString*
   	getNamespaceForPrefix(const XalanDOMString&		prefix) const;
   
   	virtual const XalanDOMString&
  @@ -115,9 +115,6 @@
   	const DOMSupport&				m_domSupport;
   
   	mutable XalanDOMString			m_uri;
  -
  -	// A dummy string to return when we need an emtpy string...
  -	static const XalanDOMString		s_emptyString;
   };
   
   
  
  
  
  1.16      +18 -26    xml-xalan/c/src/XPath/QName.cpp
  
  Index: QName.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/QName.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- QName.cpp	2001/04/30 18:10:58	1.15
  +++ QName.cpp	2001/05/14 01:01:15	1.16
  @@ -76,13 +76,13 @@
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   QName::getNamespaceForPrefix(
   			const NamespaceVectorType&	namespaces,
   			const XalanDOMString&		prefix,
   			bool						reverse)
   {
  -	const XalanDOMString*	nsURI = &s_emptyString;
  +	const XalanDOMString*	nsURI = 0;
   
   	if(::equals(prefix, DOMServices::s_XMLString))
   	{
  @@ -124,20 +124,18 @@
   		}
   	}
   
  -	assert(nsURI != 0);
  -
  -	return *nsURI;
  +	return nsURI;
   }
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   QName::getNamespaceForPrefix(
   			const NamespacesStackType&	nsStack,
   			const XalanDOMString&		prefix,
   			bool						reverse)
   {
  -	const XalanDOMString*	nsURI = &s_emptyString;
  +	const XalanDOMString*	nsURI = 0;
   
   	const int depth = nsStack.size();
   
  @@ -145,26 +143,24 @@
   	{
   		const NamespaceVectorType&	namespaces = nsStack[i];
   
  -		nsURI = &QName::getNamespaceForPrefix(namespaces, prefix, reverse);
  +		nsURI = getNamespaceForPrefix(namespaces, prefix, reverse);
   
  -		if (! ::isEmpty(*nsURI))
  +		if (nsURI != 0)
   			break;
   	}
  -
  -	assert(nsURI != 0);
   
  -	return *nsURI;
  +	return nsURI;
   }
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   QName::getPrefixForNamespace(
   			const NamespaceVectorType&	namespaces,
   			const XalanDOMString&		uri,
   			bool						/* reverse */)
   {
  -	const XalanDOMString*	thePrefix = &s_emptyString;
  +	const XalanDOMString*	thePrefix = 0;
   
   	for(int j = namespaces.size()-1; j >= 0; j--)
   	{
  @@ -179,20 +175,18 @@
   		}
   	}
   
  -	assert(thePrefix != 0);
  -
  -	return *thePrefix;
  +	return thePrefix;
   }		
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   QName::getPrefixForNamespace(
   			const NamespacesStackType&	nsStack,
   			const XalanDOMString&		uri,
   			bool						reverse)
   {
  -	const XalanDOMString*	thePrefix = &s_emptyString;
  +	const XalanDOMString*	thePrefix = 0;
   
   	const int		depth = nsStack.size();
   
  @@ -202,9 +196,9 @@
   		{
   			const NamespaceVectorType&	namespaces = nsStack[i];
   
  -			thePrefix = &QName::getPrefixForNamespace(namespaces, uri, reverse);
  +			thePrefix = getPrefixForNamespace(namespaces, uri, reverse);
   
  -			if (! ::isEmpty(*thePrefix))
  +			if (thePrefix != 0)
   				break;
   		}
   	}
  @@ -214,14 +208,12 @@
   		{
   			const NamespaceVectorType&	namespaces = nsStack[i];
   
  -			thePrefix = &QName::getPrefixForNamespace(namespaces, uri, reverse);
  +			thePrefix = getPrefixForNamespace(namespaces, uri, reverse);
   
  -			if (! ::isEmpty(*thePrefix))
  +			if (thePrefix != 0)
   				break;
   		}
   	}
  -
  -	assert(thePrefix != 0);
   
  -	return *thePrefix;
  +	return thePrefix;
   }
  
  
  
  1.14      +8 -4      xml-xalan/c/src/XPath/QName.hpp
  
  Index: QName.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/QName.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- QName.hpp	2001/04/23 14:19:05	1.13
  +++ QName.hpp	2001/05/14 01:01:15	1.14
  @@ -173,8 +173,9 @@
   	 * @param namespaces vector of namespaces to search
   	 * @param prefix     namespace prefix to find
   	 * @param reverse    true to search vector from last to first, default true
  +	 * @return pointer to the string value if found, otherwise null.
   	 */
  -	static const XalanDOMString&
  +	static const XalanDOMString*
   	getNamespaceForPrefix(
   			const NamespaceVectorType&	namespaces,
   			const XalanDOMString&		prefix,
  @@ -187,8 +188,9 @@
   	 * @param nsStack stack of namespace vectors to search
   	 * @param prefix  namespace prefix to find
   	 * @param reverse true to search vector from last to first, default true
  +	 * @return pointer to the string value if found, otherwise null.
   	 */
  -	static const XalanDOMString&
  +	static const XalanDOMString*
   	getNamespaceForPrefix(
   			const NamespacesStackType&	nsStack,
   			const XalanDOMString&		prefix,
  @@ -200,8 +202,9 @@
   	 * @param namespaces vector of namespaces to search
   	 * @param uri        URI string for namespace to find
   	 * @param reverse    true to search vector from last to first, default true
  +	 * @return pointer to the string value if found, otherwise null.
   	 */
  -	static const XalanDOMString&
  +	static const XalanDOMString*
   	getPrefixForNamespace(
   			const NamespaceVectorType&	namespaces,
   			const XalanDOMString&		uri,
  @@ -214,8 +217,9 @@
   	 * @param nsStack stack of namespace vectors to search
   	 * @param uri     URI string for namespace to find
   	 * @param reverse true to search vector from last to first, default true
  +	 * @return pointer to the string value if found, otherwise null.
   	 */
  -	static const XalanDOMString&
  +	static const XalanDOMString*
   	getPrefixForNamespace(
   			const NamespacesStackType&	nsStack,
   			const XalanDOMString&		uri,
  
  
  
  1.4       +14 -3     xml-xalan/c/src/XPath/QNameByValue.cpp
  
  Index: QNameByValue.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/QNameByValue.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- QNameByValue.cpp	2001/01/31 01:40:33	1.3
  +++ QNameByValue.cpp	2001/05/14 01:01:16	1.4
  @@ -197,12 +197,17 @@
   		if(::equals(prefix, DOMServices::s_XMLNamespace))
   			return;
   
  -		m_namespace = getNamespaceForPrefix(namespaces, prefix);
  +		const XalanDOMString* const		theNamespace = 
  +				getNamespaceForPrefix(namespaces, prefix);
   
  -		if(0 == length(m_namespace))
  +		if(theNamespace == 0 || 0 == length(*theNamespace))
   		{
   			throw XSLException(TranscodeFromLocalCodePage("Prefix must resolve to a namespace: ") + prefix);
   		}
  +		else
  +		{
  +			m_namespace = *theNamespace;
  +		}
   
   		m_localpart =  substring(qname, indexOfNSSep + 1);
   	}
  @@ -237,7 +242,13 @@
   		}
   		else
   		{
  -			m_namespace = theResolver.getNamespaceForPrefix(prefix);
  +			const XalanDOMString* const		theNamespace =
  +				theResolver.getNamespaceForPrefix(prefix);
  +
  +			if (theNamespace != 0)
  +			{
  +				m_namespace = *theNamespace;
  +			}
   		}  
   
   		if(0 == length(m_namespace))
  
  
  
  1.39      +1 -1      xml-xalan/c/src/XPath/XPathExecutionContext.hpp
  
  Index: XPathExecutionContext.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExecutionContext.hpp,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- XPathExecutionContext.hpp	2001/03/29 22:18:35	1.38
  +++ XPathExecutionContext.hpp	2001/05/14 01:01:16	1.39
  @@ -668,7 +668,7 @@
   	 * @param prefix prefix for a namespace
   	 * @return URI corresponding to namespace
   	 */
  -	virtual const XalanDOMString&
  +	virtual const XalanDOMString*
   	getNamespaceForPrefix(const XalanDOMString&		prefix) const = 0;
   
   	/**
  
  
  
  1.37      +1 -1      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.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- XPathExecutionContextDefault.cpp	2001/05/10 17:57:12	1.36
  +++ XPathExecutionContextDefault.cpp	2001/05/14 01:01:16	1.37
  @@ -406,7 +406,7 @@
   
   
   
  -const XalanDOMString&
  +const XalanDOMString*
   XPathExecutionContextDefault::getNamespaceForPrefix(const XalanDOMString&	prefix) const
   {
   	assert(m_prefixResolver != 0);
  
  
  
  1.35      +1 -1      xml-xalan/c/src/XPath/XPathExecutionContextDefault.hpp
  
  Index: XPathExecutionContextDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathExecutionContextDefault.hpp,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- XPathExecutionContextDefault.hpp	2001/05/10 17:57:13	1.34
  +++ XPathExecutionContextDefault.hpp	2001/05/14 01:01:16	1.35
  @@ -272,7 +272,7 @@
   	virtual void
   	setPrefixResolver(const PrefixResolver*		thePrefixResolver);
   
  -	virtual const XalanDOMString&
  +	virtual const XalanDOMString*
   	getNamespaceForPrefix(const XalanDOMString&		prefix) const;
   
   	virtual XalanDocument*
  
  
  
  1.38      +13 -9     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.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- XPathProcessorImpl.cpp	2001/04/18 14:46:13	1.37
  +++ XPathProcessorImpl.cpp	2001/05/14 01:01:17	1.38
  @@ -588,14 +588,15 @@
   {
   	assert(m_prefixResolver != 0);
   
  -	const XalanDOMString 	prefix = substring(pat, startSubstring, posOfNSSep);
  +	const XalanDOMString 			prefix =
  +				substring(pat, startSubstring, posOfNSSep);
   
  -	const XalanDOMString 	uName =
  +	const XalanDOMString* const		uName =
   				m_prefixResolver->getNamespaceForPrefix(prefix);
   
  -	if(length(uName) > 0)
  +	if(uName != 0 && length(*uName) > 0)
   	{
  -		addToTokenQueue(uName);
  +		addToTokenQueue(*uName);
   
   		addToTokenQueue(DOMServices::s_XMLNamespaceSeparatorString);
   
  @@ -2052,14 +2053,17 @@
   						m_expression->getRelativeToken(-1);
   				assert(theToken != 0);
   
  -				const XalanDOMString&	theString = theToken->str();
  +				const XalanDOMString&			theString = theToken->str();
   
  -				const XalanDOMString&	theNamespace =
  +				const XalanDOMString* const		theNamespace =
   						m_prefixResolver->getNamespaceForPrefix(theString);
   
  -				m_expression->replaceRelativeToken(
  -									-1,
  -									theNamespace);
  +				if (theNamespace != 0)
  +				{
  +					m_expression->replaceRelativeToken(
  +										-1,
  +										*theNamespace);
  +				}
   			}
   
   			m_expression->pushCurrentTokenOnOpCodeMap();
  
  
  

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