You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@locus.apache.org on 2000/08/31 21:43:25 UTC

cvs commit: xml-xalan/c/src/XercesPlatformSupport TextFileOutputStream.cpp XercesStdTextOutputStream.cpp

dbertoni    00/08/31 12:43:24

  Modified:    c/src/DOMSupport DOMServices.cpp DOMServices.hpp
               c/src/PlatformSupport AttributeListImpl.cpp
                        AttributeListImpl.hpp STLHelper.hpp
               c/src/TestXSLT process.cpp
               c/src/XMLSupport FormatterToHTML.cpp FormatterToHTML.hpp
                        FormatterToXML.cpp FormatterToXML.hpp
                        XMLParserLiaison.hpp XMLParserLiaisonDefault.cpp
                        XMLParserLiaisonDefault.hpp
               c/src/XPath XPath.cpp XPath.hpp XPathEnvSupportDefault.cpp
                        XPathEnvSupportDefault.hpp XPathFunctionTable.cpp
                        XPathFunctionTable.hpp XPathProcessorImpl.cpp
                        XPathProcessorImpl.hpp
               c/src/XSLT Constants.cpp Constants.hpp ElemNumber.cpp
                        ElemNumber.hpp FunctionSystemProperty.cpp
                        StylesheetExecutionContextDefault.cpp
                        XSLTEngineImpl.cpp XSLTEngineImpl.hpp
               c/src/XercesParserLiaison XercesParserLiaison.cpp
                        XercesParserLiaison.hpp
               c/src/XercesPlatformSupport TextFileOutputStream.cpp
                        XercesStdTextOutputStream.cpp
  Added:       c/src/DOMSupport DOMSupportInit.cpp DOMSupportInit.hpp
               c/src/PlatformSupport PlatformSupportInit.cpp
                        PlatformSupportInit.hpp
               c/src/XMLSupport XMLSupportInit.cpp XMLSupportInit.hpp
               c/src/XPath XPathInit.cpp XPathInit.hpp
               c/src/XSLT XSLTInit.cpp XSLTInit.hpp
               c/src/XalanDOM XalanDOMInit.cpp XalanDOMInit.hpp
  Log:
  Changes for static initialize/terminate and memory leak detection.
  
  Revision  Changes    Path
  1.15      +59 -19    xml-xalan/c/src/DOMSupport/DOMServices.cpp
  
  Index: DOMServices.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/DOMSupport/DOMServices.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- DOMServices.cpp	2000/08/10 17:52:01	1.14
  +++ DOMServices.cpp	2000/08/31 19:42:47	1.15
  @@ -78,29 +78,37 @@
   
   
   
  -#if defined(XALAN_INLINE_INITIALIZATION)
  +// These four XalanDOMString instances will hold the actual
  +// data.  This way, the DOMSupport references can be const,
  +// but we can initialize the data when we want to.
  +static XalanDOMString	s_XMLString;
  +static XalanDOMString	s_XMLNamespaceURI;
  +static XalanDOMString	s_XMLNamespace;
  +static XalanDOMString	s_XMLNamespaceWithSeparator;
  +
  +
  +const XalanDOMString&	DOMServices::s_XMLString = ::s_XMLString;
  +const XalanDOMString&	DOMServices::s_XMLNamespaceURI = ::s_XMLNamespaceURI;
  +const XalanDOMString&	DOMServices::s_XMLNamespace = ::s_XMLNamespace;
  +const XalanDOMString&	DOMServices::s_XMLNamespaceWithSeparator = ::s_XMLNamespaceWithSeparator;
   
  -const XalanDOMString	DOMServices::s_XMLString;
  -const XalanDOMString	DOMServices::s_XMLNamespaceURI;
  -const XalanDOMString	DOMServices::s_XMLNamespace;
  -const XalanDOMString	DOMServices::s_XMLNamespaceWithSeparator;
  -
  -#else
  -
  -const XalanDOMString	DOMServices::s_XMLString(XALAN_STATIC_UCODE_STRING("xml"));
  -const XalanDOMString	DOMServices::s_XMLNamespaceURI(XALAN_STATIC_UCODE_STRING("http://www.w3.org/XML/1998/namespace"));
  -const XalanDOMString	DOMServices::s_XMLNamespace(XALAN_STATIC_UCODE_STRING("xmlns"));
  -const XalanDOMString	DOMServices::s_XMLNamespaceWithSeparator(XALAN_STATIC_UCODE_STRING("xmlns:"));
  -
  -#endif
  -
  -const unsigned int		DOMServices::s_XMLStringLength = length(s_XMLString);
  -const unsigned int		DOMServices::s_XMLNamespaceURILength = length(s_XMLNamespaceURI);
  -const unsigned int		DOMServices::s_XMLNamespaceLength = length(s_XMLNamespace);
  -const unsigned int		DOMServices::s_XMLNamespaceWithSeparatorLength = length(s_XMLNamespaceWithSeparator);
   
   
  +// These four unsigned ints will hold the actual
  +// data.  This way, the DOMSupport references can be const,
  +// but we can initialize the data when we want to.
  +static unsigned int		s_XMLStringLength = 0;
  +static unsigned int		s_XMLNamespaceURILength = 0;
  +static unsigned int		s_XMLNamespaceLength = 0;
  +static unsigned int		s_XMLNamespaceWithSeparatorLength = 0;
  +
  +const unsigned int&		DOMServices::s_XMLStringLength = ::s_XMLStringLength;
  +const unsigned int&		DOMServices::s_XMLNamespaceURILength = ::s_XMLNamespaceURILength;
  +const unsigned int&		DOMServices::s_XMLNamespaceLength = ::s_XMLNamespaceLength;
  +const unsigned int&		DOMServices::s_XMLNamespaceWithSeparatorLength = ::s_XMLNamespaceWithSeparatorLength;
   
  +
  +
   DOMServices::WhitespaceSupport::WhitespaceSupport()
   {
   }
  @@ -145,6 +153,38 @@
   	}
   
   	return i == theLength ? true : false;
  +}
  +
  +
  +
  +void
  +DOMServices::initialize()
  +{
  +	::s_XMLString = XALAN_STATIC_UCODE_STRING("xml");
  +	::s_XMLNamespaceURI = XALAN_STATIC_UCODE_STRING("http://www.w3.org/XML/1998/namespace");
  +	::s_XMLNamespace = XALAN_STATIC_UCODE_STRING("xmlns");
  +	::s_XMLNamespaceWithSeparator = XALAN_STATIC_UCODE_STRING("xmlns:");
  +
  +	::s_XMLStringLength = length(DOMServices::s_XMLString);
  +	::s_XMLNamespaceURILength = length(DOMServices::s_XMLNamespaceURI);
  +	::s_XMLNamespaceLength = length(DOMServices::s_XMLNamespace);
  +	::s_XMLNamespaceWithSeparatorLength = length(DOMServices::s_XMLNamespaceWithSeparator);
  +}
  +
  +
  +
  +void
  +DOMServices::terminate()
  +{
  +	clear(::s_XMLString);
  +	clear(::s_XMLNamespaceURI);
  +	clear(::s_XMLNamespace);
  +	clear(::s_XMLNamespaceWithSeparator);
  +
  +	::s_XMLStringLength = 0;
  +	::s_XMLNamespaceURILength = 0;
  +	::s_XMLNamespaceLength = 0;
  +	::s_XMLNamespaceWithSeparatorLength = 0;
   }
   
   
  
  
  
  1.12      +23 -20    xml-xalan/c/src/DOMSupport/DOMServices.hpp
  
  Index: DOMServices.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/DOMSupport/DOMServices.hpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DOMServices.hpp	2000/08/10 17:52:01	1.11
  +++ DOMServices.hpp	2000/08/31 19:42:48	1.12
  @@ -87,27 +87,16 @@
   {
   public:
   
  -#if defined(XALAN_INLINE_INITIALIZATION)
  +	static const XalanDOMString&	s_XMLString;
  +	static const XalanDOMString&	s_XMLNamespaceURI;
  +	static const XalanDOMString&	s_XMLNamespace;
  +	static const XalanDOMString&	s_XMLNamespaceWithSeparator;
  +
  +	static const unsigned int&		s_XMLStringLength;
  +	static const unsigned int&		s_XMLNamespaceURILength;
  +	static const unsigned int&		s_XMLNamespaceLength;
  +	static const unsigned int&		s_XMLNamespaceWithSeparatorLength;
   
  -	static const XalanDOMString		s_XMLString(XALAN_STATIC_UCODE_STRING("xml"));
  -	static const XalanDOMString		s_XMLNamespaceURI(XALAN_STATIC_UCODE_STRING("http://www.w3.org/XML/1998/namespace"));
  -	static const XalanDOMString		s_XMLNamespace(XALAN_STATIC_UCODE_STRING("xmlns"));
  -	static const XalanDOMString		s_XMLNamespaceWithSeparator(XALAN_STATIC_UCODE_STRING("xmlns:"));
  -
  -#else
  -
  -	static const XalanDOMString		s_XMLString;
  -	static const XalanDOMString		s_XMLNamespaceURI;
  -	static const XalanDOMString		s_XMLNamespace;
  -	static const XalanDOMString		s_XMLNamespaceWithSeparator;
  -
  -#endif
  -
  -	static const unsigned int		s_XMLStringLength;
  -	static const unsigned int		s_XMLNamespaceURILength;
  -	static const unsigned int		s_XMLNamespaceLength;
  -	static const unsigned int		s_XMLNamespaceWithSeparatorLength;
  -
   	class XALAN_DOMSUPPORT_EXPORT WhitespaceSupport
   	{
   	public:
  @@ -148,6 +137,20 @@
   		virtual bool
   		isIgnorableWhitespace(const XalanText&	node) const;
   	};
  +
  +	/**
  +	 * Initialize static data.  Must be called before any
  +	 * other functions are called.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Destroy static data.  After thus function is called,
  +	 * no other functions can be called.
  +	 */
  +	static void
  +	terminate();
   
   	/**
   	 * Retrieves data for node
  
  
  
  1.1                  xml-xalan/c/src/DOMSupport/DOMSupportInit.cpp
  
  Index: DOMSupportInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "DOMSupportInit.hpp"
  
  
  
  #include "DOMServices.hpp"
  
  
  
  unsigned long	DOMSupportInit::s_initCounter = 0;
  
  
  
  DOMSupportInit::DOMSupportInit() :
  	m_platformSupportInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  DOMSupportInit::~DOMSupportInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  DOMSupportInit::initialize()
  {
  	DOMServices::initialize();
  }
  
  
  
  void
  DOMSupportInit::terminate()
  {
  	DOMServices::terminate();
  }
  
  
  
  1.1                  xml-xalan/c/src/DOMSupport/DOMSupportInit.hpp
  
  Index: DOMSupportInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(DOMSUPPORTINIT_INCLUDE_GUARD_1357924680)
  #define DOMSUPPORTINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <DOMSupport/DOMSupportDefinitions.hpp>
  
  
  
  #include <PlatformSupport/PlatformSupportInit.hpp>
  
  
  
  class XALAN_DOMSUPPORT_EXPORT DOMSupportInit
  {
  public:
  
  	explicit
  	DOMSupportInit();
  
  	~DOMSupportInit();
  
  private:
  
  	// Not implemented...
  	DOMSupportInit(const DOMSupportInit&);
  
  	DOMSupportInit&
  	operator=(const DOMSupportInit&);
  
  	
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	const PlatformSupportInit	m_platformSupportInit;
  
  	static unsigned long		s_initCounter;
  };
  
  
  
  #endif	// !defined(DOMSUPPORTINIT_INCLUDE_GUARD_1357924680)
  
  
  
  1.12      +25 -50    xml-xalan/c/src/PlatformSupport/AttributeListImpl.cpp
  
  Index: AttributeListImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/AttributeListImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AttributeListImpl.cpp	2000/08/22 20:18:49	1.11
  +++ AttributeListImpl.cpp	2000/08/31 19:42:50	1.12
  @@ -148,15 +148,18 @@
   		// Reserve the appropriate capacity right now...
   		tempVector.reserve(theLength);
   
  -		try
   		{
  +			// This will delete everything in tempVector when we're done...
  +			CollectionDeleteGuard<AttributeVectorType,
  +								  DeleteFunctor<AttributeVectorEntry> >		theGuard(tempVector);
  +
   			// Copy the vector entries, and build the index map...
   			for(unsigned int i = 0; i < theLength; i++)
   			{
   				assert(theRHS.m_AttributeVector[i] != 0);
   
   				XalanAutoPtr<AttributeVectorEntry>	theEntry(
  -					new AttributeVectorEntry(*theRHS.m_AttributeVector[i]));
  +						new AttributeVectorEntry(*theRHS.m_AttributeVector[i]));
   
   				// Add the item...
   				tempVector.push_back(theEntry.get());
  @@ -167,24 +170,15 @@
   
   				// Create an entry in the index map...
   				tempMap.insert(AttributeKeyMapType::value_type(entry->m_Name.begin(),
  -															   entry));
  +																   entry));
   			}
  -		}
  -		catch(...)
  -		{
  -			deleteEntries(tempVector);
   
  -			throw;
  +			// OK, we're safe, so swap the contents of the
  +			// containers.  This is guaranteed not to throw.
  +			m_AttributeKeyMap.swap(tempMap);
  +			m_AttributeVector.swap(tempVector);
   		}
   
  -		// OK, we're safe, so swap the contents of the
  -		// containers.  This is guaranteed not to throw.
  -		m_AttributeKeyMap.swap(tempMap);
  -		m_AttributeVector.swap(tempVector);
  -
  -		// This will delete all of the old entries.
  -		deleteEntries(tempVector);
  -
   		assert(getLength() == theLength);
   		assert(m_AttributeKeyMap.size() == m_AttributeVector.size());
   	}
  @@ -202,46 +196,27 @@
   		// Note that we can't chain up to our base class operator=()
   		// because it's private.
   
  +		// Add all of the attributes to this temp list,
  +		// then swap at the end.  This means we're exception
  +		// safe and don't need any try blocks.
  +		AttributeListImpl	theTempList;
  +
   		const unsigned int	theLength = theRHS.getLength();
   
  -		// Some temporary structures to hold everything
  -		// until we're done.
  -		AttributeKeyMapType		tempMap;
  -		AttributeVectorType		tempVector;
  -
  -		// Keep our old entries, in case something
  -		// bad happens.
  -		tempMap.swap(m_AttributeKeyMap);
  -		tempVector.swap(m_AttributeVector);
  +		theTempList.reserve(theLength);
   
  -		try
  +		// Add each attribute.
  +		for(unsigned int i = 0; i < theLength; i++)
   		{
  -			// Reserve the appropriate capacity right now...
  -			m_AttributeVector.reserve(theLength);
  -
  -			// Add each attribute.
  -			for(unsigned int i = 0; i < theLength; i++)
  -			{
  -				addAttribute(theRHS.getName(i),
  -							 theRHS.getType(i),
  -							 theRHS.getValue(i));
  -			}
  +			theTempList.addAttribute(
  +					theRHS.getName(i),
  +					theRHS.getType(i),
  +					theRHS.getValue(i));
   		}
  -		catch(...)
  -		{
  -			// Swap everything back...
  -			tempMap.swap(m_AttributeKeyMap);
  -			tempVector.swap(m_AttributeVector);
  -
  -			// This will delete anything new we've
  -			// created.
  -			deleteEntries(tempVector);
   
  -			throw;
  -		}
  -
  -		assert(getLength() == theLength);
  -		assert(m_AttributeKeyMap.size() == m_AttributeVector.size());
  +		// Now that the temp list is built, swap everything. This is
  +		// guaranteed not to throw.
  +		swap(theTempList);
   	}
   
   	return *this;
  
  
  
  1.10      +26 -0     xml-xalan/c/src/PlatformSupport/AttributeListImpl.hpp
  
  Index: AttributeListImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/AttributeListImpl.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AttributeListImpl.hpp	2000/08/22 20:18:49	1.9
  +++ AttributeListImpl.hpp	2000/08/31 19:42:50	1.10
  @@ -148,6 +148,32 @@
   	virtual bool
   	removeAttribute(const XMLCh*	name);
   
  +	/**
  +	 * Swap the contents of two instances.  This must _never_
  +	 * throw an exception.
  +	 *
  +	 * @param thOther The instance with which to swap.
  +	 */
  +	void
  +	swap(AttributeListImpl&		theOther)
  +	{
  +		m_AttributeKeyMap.swap(theOther.m_AttributeKeyMap);
  +
  +		m_AttributeVector.swap(theOther.m_AttributeVector);
  +	}
  +
  +	/**
  +	 * Reserve room for the given number of
  +	 * attributes.
  +	 *
  +	 * @param theCount The number to reserve
  +	 */
  +	void
  +	reserve(unsigned int	theCount)
  +	{
  +		m_AttributeVector.reserve(theCount);
  +	}
  +
   protected:
   
   	// This is not implemented.
  
  
  
  1.12      +47 -0     xml-xalan/c/src/PlatformSupport/STLHelper.hpp
  
  Index: STLHelper.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/STLHelper.hpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- STLHelper.hpp	2000/08/22 20:18:52	1.11
  +++ STLHelper.hpp	2000/08/31 19:42:51	1.12
  @@ -64,9 +64,11 @@
   
   
   
  +#include <algorithm>
   #include <functional>
   
   
  +
   /**
    * Functor to delete objects, used in STL iteration algorithms.
    */
  @@ -264,6 +266,51 @@
   
   		return *theLHS < *theRHS ? true : false;
   	}
  +};
  +
  +
  +
  +template<class CollectionType, class DeleteFunctorType>
  +class CollectionDeleteGuard
  +{
  +public:
  +
  +	CollectionDeleteGuard(CollectionType&	theCollection) :
  +		m_collection(&theCollection)
  +	{
  +	}
  +
  +	~CollectionDeleteGuard()
  +	{
  +		if (m_collection != 0)
  +		{
  +#if !defined(XALAN_NO_NAMESPACES)
  +			using std::for_each;
  +#endif
  +
  +			// Delete all of the objects in the temp vector.
  +			for_each(m_collection->begin(),
  +					 m_collection->end(),
  +					 DeleteFunctorType());
  +		}
  +	}
  +
  +	void
  +	release()
  +	{
  +		m_collection = 0;
  +	}
  +
  +private:
  +
  +	// Not implemented...
  +	CollectionDeleteGuard(const CollectionDeleteGuard<CollectionType, DeleteFunctorType>&);
  +
  +	CollectionDeleteGuard<CollectionType, DeleteFunctorType>&
  +	operator=(const CollectionDeleteGuard<CollectionType, DeleteFunctorType>&);
  +
  +	// Data members...
  +	CollectionType*		m_collection;
   };
   
   
  
  
  
  1.1                  xml-xalan/c/src/PlatformSupport/PlatformSupportInit.cpp
  
  Index: PlatformSupportInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "PlatformSupportInit.hpp"
  
  
  
  unsigned long	PlatformSupportInit::s_initCounter = 0;
  
  
  
  PlatformSupportInit::PlatformSupportInit() :
  	m_xalanDOMInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  PlatformSupportInit::~PlatformSupportInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  PlatformSupportInit::initialize()
  {
  }
  
  
  
  void
  PlatformSupportInit::terminate()
  {
  }
  
  
  
  1.1                  xml-xalan/c/src/PlatformSupport/PlatformSupportInit.hpp
  
  Index: PlatformSupportInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(PLATFORMSUPPORTINIT_INCLUDE_GUARD_1357924680)
  #define PLATFORMSUPPORTINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <PlatformSupport/PlatformSupportDefinitions.hpp>
  
  
  
  #include <XalanDOM/XalanDOMInit.hpp>
  
  
  class XALAN_PLATFORMSUPPORT_EXPORT PlatformSupportInit
  {
  public:
  
  	explicit
  	PlatformSupportInit();
  
  	~PlatformSupportInit();
  
  private:
  
  	// Not implemented...
  	PlatformSupportInit(const PlatformSupportInit&);
  
  	PlatformSupportInit&
  	operator=(const PlatformSupportInit&);
  
  	
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	const XalanDOMInit		m_xalanDOMInit;
  
  	static unsigned long	s_initCounter;
  };
  
  
  
  #endif	// !defined(ARENAALLOCATOR_INCLUDE_GUARD_1357924680)
  
  
  
  1.35      +30 -3     xml-xalan/c/src/TestXSLT/process.cpp
  
  Index: process.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/TestXSLT/process.cpp,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- process.cpp	2000/08/22 20:57:33	1.34
  +++ process.cpp	2000/08/31 19:42:53	1.35
  @@ -63,7 +63,12 @@
   #include <cstring>
   #include <iostream>
   #include <string>
  +#include <strstream>
   
  +#if !defined(NDEBUG) && defined(_MSC_VER)
  +#include <crtdbg.h>
  +#endif
  +
   
   
   #include <util/PlatformUtils.hpp>
  @@ -74,14 +79,17 @@
   #include <XalanDOM/XalanDOMException.hpp>
   
   
  +
   #include <PlatformSupport/DOMStringHelper.hpp>
   #include <PlatformSupport/DOMStringPrintWriter.hpp>
   #include <PlatformSupport/XalanAutoPtr.hpp>
   
   
  +
   #include <DOMSupport/DOMSupportDefault.hpp>
   
   
  +
   #include <XPath/XObjectFactoryDefault.hpp>
   #include <XPath/XPathEnvSupportDefault.hpp>
   #include <XPath/XPathSupportDefault.hpp>
  @@ -91,15 +99,18 @@
   #include <XPath/XPathProcessorImpl.hpp>
   
   
  +
   #include <XercesPlatformSupport/XercesDOMPrintWriter.hpp>
   #include <XercesPlatformSupport/TextFileOutputStream.hpp>
   #include <XercesPlatformSupport/XercesStdTextOutputStream.hpp>
   
   
  +
   #include <XercesParserLiaison/XercesParserLiaison.hpp>
   #include <XercesParserLiaison/XercesDOMSupport.hpp>
   
   
  +
   #include <XMLSupport/FormatterToDOM.hpp>
   #include <XMLSupport/FormatterToHTML.hpp>
   #include <XMLSupport/FormatterToText.hpp>
  @@ -107,7 +118,9 @@
   #include <XMLSupport/FormatterTreeWalker.hpp>
   
   
  +
   #include <XSLT/XSLTEngineImpl.hpp>
  +#include <XSLT/XSLTInit.hpp>
   #include <XSLT/XSLTInputSource.hpp>
   #include <XSLT/XSLTResultTarget.hpp>
   #include <XSLT/StylesheetRoot.hpp>
  @@ -117,6 +130,7 @@
   #include <XSLT/XSLTProcessorEnvSupportDefault.hpp>
   
   
  +
   //#define XALAN_USE_ICU
   #if defined(XALAN_USE_ICU)
   #include <ICUBridge/ICUBridge.hpp>
  @@ -126,6 +140,8 @@
   #endif
   
   
  +
  +
   //#define XALAN_USE_BLOCK_XOBJECT_FACTORY
   #if defined(XALAN_USE_BLOCK_XOBJECT_FACTORY)
   #include <XalanHiPerf/XObjectFactoryArena.hpp>
  @@ -1006,7 +1022,14 @@
   			int				argc,
   			const char*		argv[])
   {
  -	/**
  +#if !defined(XALAN_USE_ICU) && defined(NDEBUG) && defined(_MSC_VER)
  +	_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
  +
  +	_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
  +	_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
  +#endif
  +
  +   /**
   	 * Command line interface to transform the XML according to 
   	 * the instructions found in the XSL document.
   	 *		-in inputXMLURL
  @@ -1014,9 +1037,8 @@
   	 *		-out outputFileName
   	 *		-F (Format output pretty-printed)
   	 */
  -	
  +
   	XMLPlatformUtils::Initialize();
  -	XSLTEngineImpl::Initialize();
   
   	int				theResult = 0;
   
  @@ -1050,7 +1072,10 @@
   		{
   			try
   			{
  +				XSLTInit	theInit;
  +
   				theResult = xsltMain(theParams);
  +
   			}
   			catch (XSLException& e)
   			{
  @@ -1164,6 +1189,8 @@
   
   		}
   	}
  +
  +	XMLPlatformUtils::Terminate();
   
   	return theResult;
   }
  
  
  
  1.23      +112 -42   xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp
  
  Index: FormatterToHTML.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.cpp,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FormatterToHTML.cpp	2000/08/22 20:20:30	1.22
  +++ FormatterToHTML.cpp	2000/08/31 19:42:55	1.23
  @@ -55,7 +55,7 @@
    * <http://www.apache.org/>.
    */
   /**
  - * $Id: FormatterToHTML.cpp,v 1.22 2000/08/22 20:20:30 dbertoni Exp $
  + * $Id: FormatterToHTML.cpp,v 1.23 2000/08/31 19:42:55 dbertoni Exp $
    * 
    * $State: Exp $
    * 
  @@ -198,42 +198,6 @@
   #endif
   
   
  -const FormatterToHTML::ElementFlagsMapType		FormatterToHTML::s_elementFlags =
  -	FormatterToHTML::createElementFlagsMap();
  -
  -
  -const FormatterToHTML::ElemDesc					FormatterToHTML::s_dummyDesc(FormatterToHTML::ElemDesc::BLOCK);
  -
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_doctypeHeaderStartString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<!DOCTYPE HTML")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_doctypeHeaderPublicString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" PUBLIC \"")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_doctypeHeaderSystemString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" SYSTEM")));
  -
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_scriptString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("SCRIPT")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_styleString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("STYLE")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_ltString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("lt")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_gtString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("gt")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_ampString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("amp")));
  -
  -const XalanDOMCharVectorType	FormatterToHTML::s_fnofString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("fnof")));
  -
  -
   FormatterToHTML::FormatterToHTML(
   	  Writer&				writer,
   	  const XalanDOMString& encoding, 
  @@ -963,8 +927,8 @@
   
   
   
  -FormatterToHTML::ElementFlagsMapType
  -FormatterToHTML::createElementFlagsMap()
  +void
  +FormatterToHTML::initializeElementFlagsMap(ElementFlagsMapType&		theElementFlags)
   {
   #if defined(XALAN_NO_NAMESPACES)
   	typedef pair<ElementFlagsMapType::iterator, bool>	PairType;
  @@ -972,8 +936,6 @@
   	typedef std::pair<ElementFlagsMapType::iterator, bool>	PairType;
   #endif
   
  -	ElementFlagsMapType 	theElementFlags;
  -
   	// HTML 4.0 loose DTD
   	theElementFlags.insert(
   		ElementFlagsMapType::value_type(
  @@ -1475,6 +1437,114 @@
   		ElementFlagsMapType::value_type(
   			XALAN_STATIC_UCODE_STRING("HTML"),
   			ElemDesc(0|ElemDesc::BLOCK)));
  +}
  +
  +
  +
  +static FormatterToHTML::ElementFlagsMapType		s_elementFlags;
  +
  +
  +const FormatterToHTML::ElementFlagsMapType&		FormatterToHTML::s_elementFlags = ::s_elementFlags;
  +
  +
  +const FormatterToHTML::ElemDesc					FormatterToHTML::s_dummyDesc(FormatterToHTML::ElemDesc::BLOCK);
  +
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderStartString;
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderPublicString;
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderSystemString;
  +
  +static XalanDOMCharVectorType	s_scriptString;
  +
  +static XalanDOMCharVectorType	s_styleString;
  +
  +static XalanDOMCharVectorType	s_ltString;
  +
  +static XalanDOMCharVectorType	s_gtString;
  +
  +static XalanDOMCharVectorType	s_ampString;
  +
  +static XalanDOMCharVectorType	s_fnofString;
  +
  +
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_doctypeHeaderStartString =
  +			::s_doctypeHeaderStartString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_doctypeHeaderPublicString =
  +			::s_doctypeHeaderPublicString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_doctypeHeaderSystemString =
  +			::s_doctypeHeaderSystemString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_scriptString =
  +			::s_scriptString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_styleString =
  +			::s_styleString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_ltString =
  +			::s_ltString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_gtString =
  +			::s_gtString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_ampString =
  +			::s_ampString;
  +
  +const XalanDOMCharVectorType&	FormatterToHTML::s_fnofString =
  +			::s_fnofString;
  +
  +
  +
  +void
  +FormatterToHTML::initialize()
  +{
  +	initializeElementFlagsMap(::s_elementFlags);
  +
  +	::s_doctypeHeaderStartString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<!DOCTYPE HTML")));
  +
  +	::s_doctypeHeaderPublicString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" PUBLIC \"")));
  +
  +	::s_doctypeHeaderSystemString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" SYSTEM")));
  +
  +	::s_scriptString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("SCRIPT")));
  +
  +	::s_styleString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("STYLE")));
  +
  +	::s_ltString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("lt")));
  +
  +	::s_gtString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("gt")));
  +
  +	::s_ampString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("amp")));
  +
  +	::s_fnofString = MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("fnof")));
  +}
  +
  +
  +
  +void
  +FormatterToHTML::terminate()
  +{
  +	ElementFlagsMapType().swap(::s_elementFlags);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderStartString);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderPublicString);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderSystemString);
  +
  +	XalanDOMCharVectorType().swap(::s_scriptString);
  +
  +	XalanDOMCharVectorType().swap(::s_styleString);
  +
  +	XalanDOMCharVectorType().swap(::s_ltString);
  +
  +	XalanDOMCharVectorType().swap(::s_gtString);
  +
  +	XalanDOMCharVectorType().swap(::s_ampString);
   
  -	return theElementFlags;
  +	XalanDOMCharVectorType().swap(::s_fnofString);
   }
  
  
  
  1.11      +44 -30    xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp
  
  Index: FormatterToHTML.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToHTML.hpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FormatterToHTML.hpp	2000/08/07 19:51:31	1.10
  +++ FormatterToHTML.hpp	2000/08/31 19:42:55	1.11
  @@ -58,7 +58,7 @@
   #define FORMATTERTOHTML_HEADER_GUARD_1357924680
   
   /**
  - * $Id: FormatterToHTML.hpp,v 1.10 2000/08/07 19:51:31 dbertoni Exp $
  + * $Id: FormatterToHTML.hpp,v 1.11 2000/08/31 19:42:55 dbertoni Exp $
    * 
    * $State: Exp $
    * 
  @@ -99,6 +99,18 @@
   
   public:
   
  +	/**
  +	 * Perform static initialization.  See class XMLSupportInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform static shut down.  See class XMLSupportInit.
  +	 */
  +	static void
  +	terminate();
  +
   	enum eDummy
   	{
   		eDefaultIndentAmount = 4
  @@ -162,21 +174,6 @@
   			const XMLCh* const	data);
   
   
  -protected:
  -
  -	// These methods are new ...
  -	/**
  -	 * Write an attribute string.
  -	 * @param string The string to write.
  -	 * @param encoding The current encoding.
  -	 */
  -	virtual void
  -	writeAttrString(
  -			const XalanDOMChar*		string,
  -			const XalanDOMString&	encoding);
  -
  -private:
  -
   	class ElemDesc
   	{
   	public:
  @@ -265,12 +262,29 @@
   
   
   #if defined(XALAN_NO_NAMESPACES)
  -	typedef map<XalanDOMString, ElemDesc, less<XalanDOMString> >	ElementFlagsMapType;
  +	typedef map<XalanDOMString,
  +				ElemDesc,
  +				less<XalanDOMString> >			ElementFlagsMapType;
   #else
   	typedef std::map<XalanDOMString, ElemDesc>	ElementFlagsMapType;
   #endif
  +
  +protected:
  +
  +	// These methods are new ...
  +	/**
  +	 * Write an attribute string.
  +	 * @param string The string to write.
  +	 * @param encoding The current encoding.
  +	 */
  +	virtual void
  +	writeAttrString(
  +			const XalanDOMChar*		string,
  +			const XalanDOMString&	encoding);
  +
  +private:
   
  -	static const ElementFlagsMapType	s_elementFlags;
  +	static const ElementFlagsMapType&	s_elementFlags;
   
   	/**
   	 * Dummy description for elements not found.
  @@ -280,47 +294,47 @@
   	/**
   	 * The string "<!DOCTYPE  HTML".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderStartString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderStartString;
   
   	/**
   	 * The string " PUBLIC \"".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderPublicString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderPublicString;
   
   	/**
   	 * The string " SYSTEM".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderSystemString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderSystemString;
   
   	/**
   	 * The string "SCRIPT".
   	 */
  -	static const XalanDOMCharVectorType		s_scriptString;
  +	static const XalanDOMCharVectorType&	s_scriptString;
   
   	/**
   	 * The string "STYLE".
   	 */
  -	static const XalanDOMCharVectorType		s_styleString;
  +	static const XalanDOMCharVectorType&	s_styleString;
   
   	/**
   	 * The string "lt".
   	 */
  -	static const XalanDOMCharVectorType		s_ltString;
  +	static const XalanDOMCharVectorType&	s_ltString;
   
   	/**
   	 * The string "gt".
   	 */
  -	static const XalanDOMCharVectorType		s_gtString;
  +	static const XalanDOMCharVectorType&	s_gtString;
   
   	/**
   	 * The string "amp.
   	 */
  -	static const XalanDOMCharVectorType		s_ampString;
  +	static const XalanDOMCharVectorType&	s_ampString;
   
   	/**
   	 * The string "fnof".
   	 */
  -	static const XalanDOMCharVectorType		s_fnofString;
  +	static const XalanDOMCharVectorType&	s_fnofString;
   
   	/**
   	 * Set the attribute characters what will require special mapping.
  @@ -369,8 +383,8 @@
   	 *
   	 * @return map of element flags.
   	 */
  -	static ElementFlagsMapType
  -	createElementFlagsMap();
  +	static void
  +	initializeElementFlagsMap(ElementFlagsMapType&	);
   
   	/**
   	 * Process an attribute.
  @@ -396,7 +410,7 @@
   			const XalanDOMChar*		string,
   			const XalanDOMString	encoding);
   
  -	 XalanDOMString	m_currentElementName;
  +	XalanDOMString	m_currentElementName;
   
   	bool			m_inBlockElem;
   
  
  
  
  1.24      +159 -55   xml-xalan/c/src/XMLSupport/FormatterToXML.cpp
  
  Index: FormatterToXML.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToXML.cpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- FormatterToXML.cpp	2000/08/22 20:20:30	1.23
  +++ FormatterToXML.cpp	2000/08/31 19:42:57	1.24
  @@ -74,60 +74,6 @@
   static const XalanDOMChar 	theDefaultAttrSpecialChars[] = {'<', '>', '&', '"', '\r', '\n', 0 };
   
   
  -const XalanDOMCharVectorType	FormatterToXML::s_xsltNextIsRawString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("xslt-next-is-raw")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_formatterToDOMString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("formatter-to-dom")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_defaultMIMEEncoding = 
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("UTF-8")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_doctypeHeaderStartString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<!DOCTYPE ")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_doctypeHeaderPublicString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" PUBLIC \"")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_doctypeHeaderSystemString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" SYSTEM \"")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_defaultVersionString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("1.0")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_xmlHeaderStartString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<?xml version=\"")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_xmlHeaderEncodingString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\" encoding=\"")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_xmlHeaderStandaloneString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\" standalone=\"")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_xmlHeaderEndString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\"?>")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_windows1250EncodingString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("WINDOWS-1250")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_usASCIIEncodingString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("US-ASCII")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_asciiEncodingString =
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("ASCII")));
  -
  -const XalanDOMCharVectorType	FormatterToXML::s_utf8EncodingString=
  -		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("UTF-8")));
  -
  -XalanDOMChar				FormatterToXML::s_lineSep = '\n';
  -
  -
  -bool						FormatterToXML::s_javaEncodingIsISO = false; 
  -
  -
  -const FormatterToXML::DOMCharBufferType::size_type	FormatterToXML::s_maxBufferSize = 512;
  -
  -
   FormatterToXML::FormatterToXML(
   			Writer& 				writer,
   			const XalanDOMString&	version,
  @@ -1548,5 +1494,163 @@
   	s_revhash.insert(make_pair(XalanDOMString(XALAN_STATIC_UCODE_STRING("CP870")), XalanDOMString(XALAN_STATIC_UCODE_STRING("EBCDIC-CP-YU"))));
   	s_revhash.insert(make_pair(XalanDOMString(XALAN_STATIC_UCODE_STRING("CP871")), XalanDOMString(XALAN_STATIC_UCODE_STRING("EBCDIC-CP-IS"))));
   	s_revhash.insert(make_pair(XalanDOMString(XALAN_STATIC_UCODE_STRING("CP918")), XalanDOMString(XALAN_STATIC_UCODE_STRING("EBCDIC-CP-AR2"))));
  +}
  +#endif
  +
  +
  +static XalanDOMCharVectorType	s_xsltNextIsRawString;
  +
  +static XalanDOMCharVectorType	s_formatterToDOMString;
  +
  +static XalanDOMCharVectorType	s_defaultMIMEEncoding;
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderStartString;
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderPublicString;
  +
  +static XalanDOMCharVectorType	s_doctypeHeaderSystemString;
  +
  +static XalanDOMCharVectorType	s_defaultVersionString;
  +
  +static XalanDOMCharVectorType	s_xmlHeaderStartString;
  +
  +static XalanDOMCharVectorType	s_xmlHeaderEncodingString;
  +
  +static XalanDOMCharVectorType	s_xmlHeaderStandaloneString;
  +
  +static XalanDOMCharVectorType	s_xmlHeaderEndString;
  +
  +static XalanDOMCharVectorType	s_windows1250EncodingString;
  +
  +static XalanDOMCharVectorType	s_usASCIIEncodingString;
  +
  +static XalanDOMCharVectorType	s_asciiEncodingString;
  +
  +static XalanDOMCharVectorType	s_utf8EncodingString ;
  +
  +
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_xsltNextIsRawString = ::s_xsltNextIsRawString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_formatterToDOMString = ::s_formatterToDOMString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_defaultMIMEEncoding = ::s_defaultMIMEEncoding;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_doctypeHeaderStartString = ::s_doctypeHeaderStartString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_doctypeHeaderPublicString = ::s_doctypeHeaderPublicString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_doctypeHeaderSystemString = ::s_doctypeHeaderSystemString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_defaultVersionString = ::s_defaultVersionString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_xmlHeaderStartString = ::s_xmlHeaderStartString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_xmlHeaderEncodingString = ::s_xmlHeaderEncodingString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_xmlHeaderStandaloneString = ::s_xmlHeaderStandaloneString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_xmlHeaderEndString = ::s_xmlHeaderEndString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_windows1250EncodingString = ::s_windows1250EncodingString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_usASCIIEncodingString = ::s_usASCIIEncodingString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_asciiEncodingString = ::s_asciiEncodingString;
  +
  +const XalanDOMCharVectorType&	FormatterToXML::s_utf8EncodingString = ::s_utf8EncodingString;
  +
  +XalanDOMChar					FormatterToXML::s_lineSep = '\n';
  +
  +
  +bool							FormatterToXML::s_javaEncodingIsISO = false; 
  +
  +
  +const FormatterToXML::DOMCharBufferType::size_type	FormatterToXML::s_maxBufferSize = 512;
  +
  +
  +
  +void
  +FormatterToXML::initialize()
  +{
  +	::s_xsltNextIsRawString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("xslt-next-is-raw")));
  +
  +	::s_formatterToDOMString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("formatter-to-dom")));
  +
  +	::s_defaultMIMEEncoding = 
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("UTF-8")));
  +
  +	::s_doctypeHeaderStartString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<!DOCTYPE ")));
  +
  +	::s_doctypeHeaderPublicString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" PUBLIC \"")));
  +
  +	::s_doctypeHeaderSystemString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING(" SYSTEM \"")));
  +
  +	::s_defaultVersionString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("1.0")));
  +
  +	::s_xmlHeaderStartString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("<?xml version=\"")));
  +
  +	::s_xmlHeaderEncodingString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\" encoding=\"")));
  +
  +	::s_xmlHeaderStandaloneString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\" standalone=\"")));
  +
  +	::s_xmlHeaderEndString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("\"?>")));
  +
  +	::s_windows1250EncodingString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("WINDOWS-1250")));
  +
  +	::s_usASCIIEncodingString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("US-ASCII")));
  +
  +	::s_asciiEncodingString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("ASCII")));
  +
  +	::s_utf8EncodingString =
  +		MakeXalanDOMCharVector(c_wstr(XALAN_STATIC_UCODE_STRING("UTF-8")));
  +}
  +
  +
  +
  +void
  +FormatterToXML::terminate()
  +{
  +	XalanDOMCharVectorType().swap(::s_xsltNextIsRawString);
  +
  +	XalanDOMCharVectorType().swap(::s_formatterToDOMString);
  +
  +	XalanDOMCharVectorType().swap(::s_defaultMIMEEncoding);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderStartString);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderPublicString);
  +
  +	XalanDOMCharVectorType().swap(::s_doctypeHeaderSystemString);
  +
  +	XalanDOMCharVectorType().swap(::s_defaultVersionString);
  +
  +	XalanDOMCharVectorType().swap(::s_xmlHeaderStartString);
  +
  +	XalanDOMCharVectorType().swap(::s_xmlHeaderEncodingString);
  +
  +	XalanDOMCharVectorType().swap(::s_xmlHeaderStandaloneString);
  +
  +	XalanDOMCharVectorType().swap(::s_xmlHeaderEndString);
  +
  +	XalanDOMCharVectorType().swap(::s_windows1250EncodingString);
  +
  +	XalanDOMCharVectorType().swap(::s_usASCIIEncodingString);
  +
  +	XalanDOMCharVectorType().swap(::s_asciiEncodingString);
  +
  +	XalanDOMCharVectorType().swap(::s_utf8EncodingString);
   }
  -#endif
  \ No newline at end of file
  
  
  
  1.15      +28 -15    xml-xalan/c/src/XMLSupport/FormatterToXML.hpp
  
  Index: FormatterToXML.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/FormatterToXML.hpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FormatterToXML.hpp	2000/08/22 20:20:31	1.14
  +++ FormatterToXML.hpp	2000/08/31 19:42:57	1.15
  @@ -101,6 +101,18 @@
   	};
   
   	/**
  +	 * Perform static initialization.  See class XMLSupportInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform static shut down.  See class XMLSupportInit.
  +	 */
  +	static void
  +	terminate();
  +
  +	/**
   	 * Constructor for customized encoding and doctype.
   	 *
   	 * @param writer            character output stream to use
  @@ -598,12 +610,12 @@
   	/**
   	 * The text "xslt-next-is-raw".
   	 */
  -	static const XalanDOMCharVectorType		s_xsltNextIsRawString;
  +	static const XalanDOMCharVectorType&	s_xsltNextIsRawString;
   
   	/**
   	 * The string "formatter-to-dom".
   	 */
  -	static const XalanDOMCharVectorType		s_formatterToDOMString;
  +	static const XalanDOMCharVectorType&	s_formatterToDOMString;
   
   #if defined(XALAN_NO_NAMESPACES)
   	typedef vector<bool>				BoolStackType;
  @@ -682,6 +694,7 @@
   
   	// Data members...
   	bool		m_shouldFlush;
  +
   	bool		m_bytesEqualChars;
   
   	/**
  @@ -729,67 +742,67 @@
   	/**
   	 * The default MIME encoding.
   	 */
  -	static const XalanDOMCharVectorType		s_defaultMIMEEncoding;
  +	static const XalanDOMCharVectorType&	s_defaultMIMEEncoding;
   
   	/**
   	 * The string "<!DOCTYPE ".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderStartString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderStartString;
   
   	/**
   	 * The string " PUBLIC \"".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderPublicString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderPublicString;
   
   	/**
   	 * The string " SYSTEM \"".
   	 */
  -	static const XalanDOMCharVectorType		s_doctypeHeaderSystemString;
  +	static const XalanDOMCharVectorType&	s_doctypeHeaderSystemString;
   
   	/**
   	 * The string "<?xml version=\"".
   	 */
  -	static const XalanDOMCharVectorType		s_xmlHeaderStartString;
  +	static const XalanDOMCharVectorType&	s_xmlHeaderStartString;
   
   	/**
   	 * The string "<?xml version=\"".
   	 */
  -	static const XalanDOMCharVectorType		s_xmlHeaderEncodingString;
  +	static const XalanDOMCharVectorType&	s_xmlHeaderEncodingString;
   
   	/**
   	 * The string "\" standalone=\"".
   	 */
  -	static const XalanDOMCharVectorType		s_xmlHeaderStandaloneString;
  +	static const XalanDOMCharVectorType&	s_xmlHeaderStandaloneString;
   
   	/**
   	 * The string "\"?>".
   	 */
  -	static const XalanDOMCharVectorType		s_xmlHeaderEndString;
  +	static const XalanDOMCharVectorType&	s_xmlHeaderEndString;
   
   	/**
   	 * The string "1.0".
   	 */
  -	static const XalanDOMCharVectorType		s_defaultVersionString;
  +	static const XalanDOMCharVectorType&	s_defaultVersionString;
   
   	/**
   	 * The string "WINDOWS-1250".
   	 */
  -	static const XalanDOMCharVectorType		s_windows1250EncodingString;
  +	static const XalanDOMCharVectorType&	s_windows1250EncodingString;
   
   	/**
   	 * The string "US-ASCII".
   	 */
  -	static const XalanDOMCharVectorType		s_usASCIIEncodingString;
  +	static const XalanDOMCharVectorType&	s_usASCIIEncodingString;
   
   	/**
   	 * The string "ASCII".
   	 */
  -	static const XalanDOMCharVectorType		s_asciiEncodingString;
  +	static const XalanDOMCharVectorType&	s_asciiEncodingString;
   
   	/**
   	 * The string "UTF-8".
   	 */
  -	static const XalanDOMCharVectorType		s_utf8EncodingString;
  +	static const XalanDOMCharVectorType&	s_utf8EncodingString;
   
   
   	DOMCharBufferType		m_charBuf;
  
  
  
  1.6       +1 -1      xml-xalan/c/src/XMLSupport/XMLParserLiaison.hpp
  
  Index: XMLParserLiaison.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/XMLParserLiaison.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLParserLiaison.hpp	2000/07/13 17:53:55	1.5
  +++ XMLParserLiaison.hpp	2000/08/31 19:42:58	1.6
  @@ -248,7 +248,7 @@
   	 *
   	 * @return string describing parser
   	 */
  -	virtual const XalanDOMString&
  +	virtual const XalanDOMString
   	getParserDescription() const = 0;
   
   private:
  
  
  
  1.8       +11 -5     xml-xalan/c/src/XMLSupport/XMLParserLiaisonDefault.cpp
  
  Index: XMLParserLiaisonDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/XMLParserLiaisonDefault.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XMLParserLiaisonDefault.cpp	2000/07/13 17:53:55	1.7
  +++ XMLParserLiaisonDefault.cpp	2000/08/31 19:42:58	1.8
  @@ -67,16 +67,13 @@
   
   
   
  -XMLParserLiaisonDefault::XMLParserLiaisonDefault(
  -			DOMSupport&				theDOMSupport,
  -			const XalanDOMString&	theParserDescription) :
  +XMLParserLiaisonDefault::XMLParserLiaisonDefault(DOMSupport&	theDOMSupport) :
   	XMLParserLiaison(),
   	m_DOMSupport(theDOMSupport),
   	m_SpecialCharacters(),
   	m_Indent(-1),
   	m_fShouldExpandEntityRefs(false),
  -	m_fUseValidation(false),
  -	m_ParserDescription(theParserDescription)
  +	m_fUseValidation(false)
   {
   }
   
  @@ -164,3 +161,12 @@
   {
   	return m_DOMSupport.getExpandedAttributeName(attr);
   }
  +
  +
  +
  +const XalanDOMString
  +XMLParserLiaisonDefault::getParserDescription() const
  +{
  +	return XALAN_STATIC_UCODE_STRING("(No parser - generic DOM)");
  +}
  +
  
  
  
  1.5       +3 -9      xml-xalan/c/src/XMLSupport/XMLParserLiaisonDefault.hpp
  
  Index: XMLParserLiaisonDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XMLSupport/XMLParserLiaisonDefault.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLParserLiaisonDefault.hpp	2000/07/13 17:53:55	1.4
  +++ XMLParserLiaisonDefault.hpp	2000/08/31 19:42:58	1.5
  @@ -85,12 +85,8 @@
   	 *                          (toXMLString, digest, ...)
   	 *
   	 * @param theDOMSupport        instance of DOMSupport object
  -	 * @param theParserDescription string description of parser
   	 */
  -	XMLParserLiaisonDefault(
  -			DOMSupport&				theDOMSupport,
  -			const XalanDOMString&	theParserDescription =
  -					XalanDOMString(XALAN_STATIC_UCODE_STRING("(No parser - generic DOM)")));
  +	XMLParserLiaisonDefault(DOMSupport&		theDOMSupport);
   
   	virtual
   	~XMLParserLiaisonDefault();
  @@ -152,8 +148,8 @@
   	virtual void
   	setUseValidation(bool b) { m_fUseValidation = b; }
   
  -	virtual const XalanDOMString&
  -	getParserDescription() const { return m_ParserDescription; }
  +	virtual const XalanDOMString
  +	getParserDescription() const;
   
   protected:
   
  @@ -175,8 +171,6 @@
   
   	bool					m_fShouldExpandEntityRefs;
   	bool					m_fUseValidation;
  -
  -	const XalanDOMString	m_ParserDescription;
   };
   
   
  
  
  
  1.1                  xml-xalan/c/src/XMLSupport/XMLSupportInit.cpp
  
  Index: XMLSupportInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "XMLSupportInit.hpp"
  
  
  
  #include "FormatterToHTML.hpp"
  
  
  
  unsigned long	XMLSupportInit::s_initCounter = 0;
  
  
  
  XMLSupportInit::XMLSupportInit() :
  	m_platformSupportInit(),
  	m_domSupportInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  XMLSupportInit::~XMLSupportInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  XMLSupportInit::initialize()
  {
  	FormatterToXML::initialize();
  
  	FormatterToHTML::initialize();
  }
  
  
  
  void
  XMLSupportInit::terminate()
  {
  	FormatterToHTML::terminate();
  
  	FormatterToXML::terminate();
  }
  
  
  
  1.1                  xml-xalan/c/src/XMLSupport/XMLSupportInit.hpp
  
  Index: XMLSupportInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(XMLSUPPORTINIT_INCLUDE_GUARD_1357924680)
  #define XMLSUPPORTINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XMLSupport/XMLSupportDefinitions.hpp>
  
  
  
  #include <PlatformSupport/PlatformSupportInit.hpp>
  
  
  
  #include <DOMSupport/DOMSupportInit.hpp>
  
  
  
  class XALAN_XMLSUPPORT_EXPORT XMLSupportInit
  {
  public:
  
  	explicit
  	XMLSupportInit();
  
  	~XMLSupportInit();
  
  private:
  
  	// Not implemented...
  	XMLSupportInit(const XMLSupportInit&);
  
  	XMLSupportInit&
  	operator=(const XMLSupportInit&);
  
  	
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	const PlatformSupportInit	m_platformSupportInit;
  
  	const DOMSupportInit		m_domSupportInit;
  
  	static unsigned long		s_initCounter;
  };
  
  
  
  #endif	// !defined(XMLSUPPORTINIT_INCLUDE_GUARD_1357924680)
  
  
  
  1.28      +61 -20    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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- XPath.cpp	2000/08/15 19:43:19	1.27
  +++ XPath.cpp	2000/08/31 19:43:03	1.28
  @@ -86,26 +86,6 @@
   
   
   
  -#if !defined(XALAN_INLINE_INITIALIZATION)
  -const XalanDOMString			XPath::PSEUDONAME_ANY(XALAN_STATIC_UCODE_STRING("*"));
  -const XalanDOMString			XPath::PSEUDONAME_ROOT(XALAN_STATIC_UCODE_STRING("/"));
  -const XalanDOMString			XPath::PSEUDONAME_TEXT(XALAN_STATIC_UCODE_STRING("#text"));
  -const XalanDOMString			XPath::PSEUDONAME_COMMENT(XALAN_STATIC_UCODE_STRING("#comment"));
  -const XalanDOMString			XPath::PSEUDONAME_PI(XALAN_STATIC_UCODE_STRING("#pi"));
  -const XalanDOMString			XPath::PSEUDONAME_OTHER(XALAN_STATIC_UCODE_STRING("*"));
  -
  -const double					XPath::s_MatchScoreNone = -9999999999999.0;
  -const double					XPath::s_MatchScoreQName = 0.0;
  -const double					XPath::s_MatchScoreNSWild = -0.25;
  -const double					XPath::s_MatchScoreNodeTest = -0.5;
  -const double					XPath::s_MatchScoreOther = 0.5;
  -
  -#endif
  -
  -XPath::FunctionTableType		XPath::s_functions;
  -
  -
  -
   XPath::XPath(bool	createDefaultLocator) :
   	m_defaultXLocator(createDefaultLocator == false ? 0 : createXLocatorHandler()),
   	m_expression()
  @@ -1468,4 +1448,65 @@
    
   {
   	return s_functions[funcID].execute(executionContext, context, opPos, argVec);
  +}
  +
  +
  +
  +static XalanDOMString	PSEUDONAME_ANY;
  +static XalanDOMString	PSEUDONAME_ROOT;
  +static XalanDOMString	PSEUDONAME_TEXT;
  +static XalanDOMString	PSEUDONAME_COMMENT;
  +static XalanDOMString	PSEUDONAME_PI;
  +static XalanDOMString	PSEUDONAME_OTHER;
  +
  +
  +
  +const XalanDOMString&	XPath::PSEUDONAME_ANY = ::PSEUDONAME_ANY;
  +const XalanDOMString&	XPath::PSEUDONAME_ROOT = ::PSEUDONAME_ROOT;
  +const XalanDOMString&	XPath::PSEUDONAME_TEXT = ::PSEUDONAME_TEXT;
  +const XalanDOMString&	XPath::PSEUDONAME_COMMENT = ::PSEUDONAME_COMMENT;
  +const XalanDOMString&	XPath::PSEUDONAME_PI = ::PSEUDONAME_PI;
  +const XalanDOMString&	XPath::PSEUDONAME_OTHER = ::PSEUDONAME_OTHER;
  +
  +
  +
  +const double			XPath::s_MatchScoreNone = -9999999999999.0;
  +const double			XPath::s_MatchScoreQName = 0.0;
  +const double			XPath::s_MatchScoreNSWild = -0.25;
  +const double			XPath::s_MatchScoreNodeTest = -0.5;
  +const double			XPath::s_MatchScoreOther = 0.5;
  +
  +
  +
  +// Don't auto-create the table...
  +XPath::FunctionTableType		XPath::s_functions(false);
  +
  +
  +
  +void
  +XPath::initialize()
  +{
  +	s_functions.CreateTable();
  +
  +	::PSEUDONAME_ANY = XALAN_STATIC_UCODE_STRING("*");
  +	::PSEUDONAME_ROOT = XALAN_STATIC_UCODE_STRING("/");
  +	::PSEUDONAME_TEXT = XALAN_STATIC_UCODE_STRING("#text");
  +	::PSEUDONAME_COMMENT = XALAN_STATIC_UCODE_STRING("#comment");
  +	::PSEUDONAME_PI = XALAN_STATIC_UCODE_STRING("#pi");
  +	::PSEUDONAME_OTHER = XALAN_STATIC_UCODE_STRING("*");
  +}
  +
  +
  +
  +void
  +XPath::terminate()
  +{
  +	clear(::PSEUDONAME_ANY);
  +	clear(::PSEUDONAME_ROOT);
  +	clear(::PSEUDONAME_TEXT);
  +	clear(::PSEUDONAME_COMMENT);
  +	clear(::PSEUDONAME_PI);
  +	clear(::PSEUDONAME_OTHER);
  +
  +	s_functions.DestroyTable();
   }
  
  
  
  1.16      +18 -15    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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- XPath.hpp	2000/08/14 16:33:57	1.15
  +++ XPath.hpp	2000/08/31 19:43:03	1.16
  @@ -99,21 +99,12 @@
   {
   public:
   
  -#if defined(XALAN_INLINE_INITIALIZATION)
  -	const XalanDOMString			PSEUDONAME_ANY(XALAN_STATIC_UCODE_STRING("*"));
  -	const XalanDOMString			PSEUDONAME_ROOT(XALAN_STATIC_UCODE_STRING("/"));
  -	const XalanDOMString			PSEUDONAME_TEXT(XALAN_STATIC_UCODE_STRING("#text"));
  -	const XalanDOMString			PSEUDONAME_COMMENT(XALAN_STATIC_UCODE_STRING("#comment"));
  -	const XalanDOMString			PSEUDONAME_PI(XALAN_STATIC_UCODE_STRING("#pi"));
  -	const XalanDOMString			PSEUDONAME_OTHER(XALAN_STATIC_UCODE_STRING("*"));
  -#else
  -	static const XalanDOMString		PSEUDONAME_ANY;
  -	static const XalanDOMString		PSEUDONAME_ROOT;
  -	static const XalanDOMString		PSEUDONAME_TEXT;
  -	static const XalanDOMString		PSEUDONAME_COMMENT;
  -	static const XalanDOMString		PSEUDONAME_PI;
  -	static const XalanDOMString		PSEUDONAME_OTHER;
  -#endif
  +	static const XalanDOMString&	PSEUDONAME_ANY;
  +	static const XalanDOMString&	PSEUDONAME_ROOT;
  +	static const XalanDOMString&	PSEUDONAME_TEXT;
  +	static const XalanDOMString&	PSEUDONAME_COMMENT;
  +	static const XalanDOMString&	PSEUDONAME_PI;
  +	static const XalanDOMString&	PSEUDONAME_OTHER;
   
   #if defined(XALAN_NO_NAMESPACES)
   	typedef vector<XalanDOMString>			TargetElementStringsVectorType;
  @@ -121,6 +112,18 @@
   	typedef std::vector<XalanDOMString>		TargetElementStringsVectorType;
   #endif
   
  +
  +	/**
  +	 * Perform static initialization.  See class XPathInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform static shut down.  See class XPathInit.
  +	 */
  +	static void
  +	terminate();
   
   	/**
   	 * Construct an XPath and optionally a default locator 
  
  
  
  1.17      +49 -0     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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XPathEnvSupportDefault.cpp	2000/08/15 19:43:19	1.16
  +++ XPathEnvSupportDefault.cpp	2000/08/31 19:43:03	1.17
  @@ -82,6 +82,7 @@
   #if !defined(XALAN_NO_NAMESPACES)
   	using std::cerr;
   	using std::endl;
  +	using std::for_each;
   #endif
   		
   
  @@ -90,6 +91,48 @@
   
   
   
  +struct NamespaceFunctionTableDeleteFunctor
  +{
  +	typedef XPathEnvSupportDefault::FunctionTableType				FunctionTableType;
  +	typedef XPathEnvSupportDefault::NamespaceFunctionTablesType		NamespaceFunctionTablesType;
  +	/**
  +	 * Delete the value object in a map value pair.  The value of the pair must
  +	 * be of pointer type.
  +	 *
  +	 * @param thePair key-value pair
  +	 */
  +	void
  +	operator()(const NamespaceFunctionTablesType::value_type&	thePair) const
  +	{
  +		// Clean up the extension namespaces vector
  +		for_each(thePair.second.begin(),
  +				 thePair.second.end(),
  +				 MapValueDeleteFunctor<FunctionTableType>());
  +	}
  +};
  +
  +
  +
  +void
  +XPathEnvSupportDefault::initialize()
  +{
  +}
  +
  +
  +
  +void
  +XPathEnvSupportDefault::terminate()
  +{
  +	// Clean up the extension namespaces vector
  +	for_each(s_externalFunctions.begin(),
  +			 s_externalFunctions.end(),
  +			 NamespaceFunctionTableDeleteFunctor());
  +
  +	NamespaceFunctionTablesType().swap(s_externalFunctions);
  +}
  +
  +
  +
   XPathEnvSupportDefault::XPathEnvSupportDefault() :
   	XPathEnvSupport(),
   	m_sourceDocs(),
  @@ -101,6 +144,12 @@
   
   XPathEnvSupportDefault::~XPathEnvSupportDefault()
   {
  +	// Clean up the extension namespaces vector
  +	for_each(m_externalFunctions.begin(),
  +			 m_externalFunctions.end(),
  +			 NamespaceFunctionTableDeleteFunctor());
  +
  +	NamespaceFunctionTablesType().swap(m_externalFunctions);
   }
   
   
  
  
  
  1.14      +24 -10    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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XPathEnvSupportDefault.hpp	2000/08/14 22:07:24	1.13
  +++ XPathEnvSupportDefault.hpp	2000/08/31 19:43:04	1.14
  @@ -82,6 +82,30 @@
   {
   public:
   
  +#if defined(XALAN_NO_NAMESPACES)
  +	typedef map<XalanDOMString, XalanDocument*, less<XalanDOMString> >		SourceDocsTableType;
  +	typedef map<XalanDOMString, Function*, less<XalanDOMString> >			FunctionTableType;
  +	typedef map<XalanDOMString, FunctionTableType, less<XalanDOMString> >	NamespaceFunctionTablesType;
  +#else
  +	typedef std::map<XalanDOMString, XalanDocument*>	SourceDocsTableType;
  +	typedef std::map<XalanDOMString, Function*>			FunctionTableType;
  +	typedef std::map<XalanDOMString, FunctionTableType>	NamespaceFunctionTablesType;
  +#endif
  +
  +	/**
  +	 * Perform initialization of statics -- must be called before any
  +	 * processing occurs.  See class XPathInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform termination of statics.  See class XPathInit.
  +	 */
  +	static void
  +	terminate();
  +
  +
   	XPathEnvSupportDefault();
   
   	virtual
  @@ -244,16 +268,6 @@
   
   	bool
   	operator==(const XPathEnvSupportDefault&) const;
  -
  -#if defined(XALAN_NO_NAMESPACES)
  -	typedef map<XalanDOMString, XalanDocument*, less<XalanDOMString> >		SourceDocsTableType;
  -	typedef map<XalanDOMString, Function*, less<XalanDOMString> >			FunctionTableType;
  -	typedef map<XalanDOMString, FunctionTableType, less<XalanDOMString> >	NamespaceFunctionTablesType;
  -#else
  -	typedef std::map<XalanDOMString, XalanDocument*>	SourceDocsTableType;
  -	typedef std::map<XalanDOMString, Function*>			FunctionTableType;
  -	typedef std::map<XalanDOMString, FunctionTableType>	NamespaceFunctionTablesType;
  -#endif
   
   	/**
   	 * Update the supplied function table.  If the parameter
  
  
  
  1.10      +10 -6     xml-xalan/c/src/XPath/XPathFunctionTable.cpp
  
  Index: XPathFunctionTable.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XPathFunctionTable.cpp	2000/08/07 19:51:48	1.9
  +++ XPathFunctionTable.cpp	2000/08/31 19:43:04	1.10
  @@ -93,11 +93,14 @@
   
   
   
  -XPathFunctionTable::XPathFunctionTable() :
  +XPathFunctionTable::XPathFunctionTable(bool		fCreateTable) :
   	m_FunctionCollection(),
   	m_FunctionNameIndex()
   {
  -	CreateTable();
  +	if (fCreateTable == true)
  +	{
  +		CreateTable();
  +	}
   }
   
   
  @@ -164,8 +167,8 @@
   		// Delete the function...
   		delete m_FunctionCollection[(*i).second];
   
  -		// Erase it from the table...
  -		m_FunctionCollection.erase(&m_FunctionCollection[(*i).second]);
  +		// Set the entry in the table to 0...
  +		m_FunctionCollection[(*i).second] = 0;
   
   		return true;
   	}
  @@ -282,9 +285,10 @@
   		for_each(m_FunctionCollection.begin(),
   				 m_FunctionCollection.end(),
   				 DeleteFunctorType());
  +
  +		CollectionType().swap(m_FunctionCollection);
   
  -		m_FunctionCollection.clear();
  -		m_FunctionNameIndex.clear();
  +		FunctionNameIndexMapType().swap(m_FunctionNameIndex);
   	}
   	catch(...)
   	{
  
  
  
  1.10      +18 -9     xml-xalan/c/src/XPath/XPathFunctionTable.hpp
  
  Index: XPathFunctionTable.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XPathFunctionTable.hpp	2000/08/14 16:33:58	1.9
  +++ XPathFunctionTable.hpp	2000/08/31 19:43:04	1.10
  @@ -121,11 +121,28 @@
   
   	typedef DeleteFunctor<Function>		DeleteFunctorType;
   
  -	XPathFunctionTable();
  +	/**
  +	 * Constructor.
  +	 *
  +	 * @param fCreateTable If true, the internal table will be created.  Otherwise, CreateTable() must be called.
  +	 */
  +	XPathFunctionTable(bool		fCreateTable = true);
   
   	~XPathFunctionTable();
   
   	/**
  +	 * Set up the internal table.
  +	 */
  +	void
  +	CreateTable();
  +
  +	/**
  +	 * Destroy the internal table.
  +	 */
  +	void
  +	DestroyTable();
  +
  +	/**
   	 * Retrieve the function object for a specified function name.
   	 * 
   	 * @param theFunctionName name of function
  @@ -304,14 +321,6 @@
   		}
   	}
   #endif
  -
  -	void
  -	DestroyTable();
  -
  -protected:
  -
  -	void
  -	CreateTable();
   
   private:
   
  
  
  
  1.20      +92 -91    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.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XPathProcessorImpl.cpp	2000/08/10 18:37:39	1.19
  +++ XPathProcessorImpl.cpp	2000/08/31 19:43:05	1.20
  @@ -76,48 +76,6 @@
   
   
   
  -static XalanDOMString	FROM_ANCESTORS_STRING(XALAN_STATIC_UCODE_STRING("ancestor"));
  -static XalanDOMString	FROM_ANCESTORS_OR_SELF_STRING(XALAN_STATIC_UCODE_STRING("ancestor-or-self"));
  -static XalanDOMString	FROM_ATTRIBUTES_STRING(XALAN_STATIC_UCODE_STRING("attribute"));
  -static XalanDOMString	FROM_CHILDREN_STRING(XALAN_STATIC_UCODE_STRING("child"));
  -static XalanDOMString	FROM_DESCENDANTS_STRING(XALAN_STATIC_UCODE_STRING("descendant"));
  -static XalanDOMString	FROM_DESCENDANTS_OR_SELF_STRING(XALAN_STATIC_UCODE_STRING("descendant-or-self"));
  -static XalanDOMString	FROM_FOLLOWING_STRING(XALAN_STATIC_UCODE_STRING("following"));
  -static XalanDOMString	FROM_FOLLOWING_SIBLINGS_STRING(XALAN_STATIC_UCODE_STRING("following-sibling"));
  -static XalanDOMString	FROM_PARENT_STRING(XALAN_STATIC_UCODE_STRING("parent"));
  -static XalanDOMString	FROM_PRECEDING_STRING(XALAN_STATIC_UCODE_STRING("preceding"));
  -static XalanDOMString	FROM_PRECEDING_SIBLINGS_STRING(XALAN_STATIC_UCODE_STRING("preceding-sibling"));
  -static XalanDOMString	FROM_SELF_STRING(XALAN_STATIC_UCODE_STRING("self"));
  -static XalanDOMString	FROM_SELF_ABBREVIATED_STRING(XALAN_STATIC_UCODE_STRING("."));
  -static XalanDOMString	FROM_NAMESPACE_STRING(XALAN_STATIC_UCODE_STRING("namespace"));
  -
  -// This shouldn't really be here, since it duplicates a string that is part
  -// of the information that is maintained by the class XPathFunctionTable,
  -// but this is a reasonable optimization.
  -static XalanDOMString	FUNC_ID_STRING(XALAN_STATIC_UCODE_STRING("id"));
  -
  -
  -// These shouldn't really be here, since they are not part of the XPath standard,
  -// but rather a part ofthe XSLT standard.
  -static XalanDOMString	FUNC_KEY_STRING(XALAN_STATIC_UCODE_STRING("key"));
  -static XalanDOMString	FUNC_DOC_STRING(XALAN_STATIC_UCODE_STRING("doc"));
  -static XalanDOMString	FUNC_DOCUMENT_STRING(XALAN_STATIC_UCODE_STRING("document"));
  -
  -static XalanDOMString	NODETYPE_COMMENT_STRING(XALAN_STATIC_UCODE_STRING("comment"));
  -static XalanDOMString	NODETYPE_TEXT_STRING(XALAN_STATIC_UCODE_STRING("text"));
  -static XalanDOMString	NODETYPE_PI_STRING(XALAN_STATIC_UCODE_STRING("processing-instruction"));
  -static XalanDOMString	NODETYPE_NODE_STRING(XALAN_STATIC_UCODE_STRING("node"));
  -static XalanDOMString	NODETYPE_ANYELEMENT_STRING(XALAN_STATIC_UCODE_STRING("*"));
  -
  -
  -
  -XPathProcessorImpl::KeywordsMapType 			XPathProcessorImpl::s_keywords;
  -XPathProcessorImpl::FunctionNameMapType 		XPathProcessorImpl::s_functions;
  -XPathProcessorImpl::AxisNamesMapType			XPathProcessorImpl::s_axisNames;
  -XPathProcessorImpl::NodeTypesMapType			XPathProcessorImpl::s_nodeTypes;
  -
  -
  -
   XPathProcessorImpl::XPathProcessorImpl() :
   	m_token(),
   	m_tokenChar(0),
  @@ -126,8 +84,6 @@
   	m_prefixResolver(0),
   	m_envSupport(0)
   {
  -	// $$$ ToDo: This is not thread-safe!!!
  -	static StaticInitializer	theInitializer;
   }
   
   
  @@ -528,31 +484,31 @@
   		switch(tok)
   		{
   		case XPathExpression::eNODETYPE_COMMENT:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_COMMENT);
  +			targetStrings.push_back(XPath::PSEUDONAME_COMMENT);
   			break;
   
   		case XPathExpression::eNODETYPE_TEXT:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_TEXT);
  +			targetStrings.push_back(XPath::PSEUDONAME_TEXT);
   			break;
   
   		case XPathExpression::eNODETYPE_NODE:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_ANY);
  +			targetStrings.push_back(XPath::PSEUDONAME_ANY);
   			break;
   
   		case XPathExpression::eNODETYPE_ROOT:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_ROOT);
  +			targetStrings.push_back(XPath::PSEUDONAME_ROOT);
   			break;
   
   		case XPathExpression::eNODETYPE_ANYELEMENT:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_ANY);
  +			targetStrings.push_back(XPath::PSEUDONAME_ANY);
   			break;
   
   		case XPathExpression::eNODETYPE_PI:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_ANY);
  +			targetStrings.push_back(XPath::PSEUDONAME_ANY);
   			break;
   
   		default:
  -			targetStrings.push_back(m_xpath->PSEUDONAME_ANY);
  +			targetStrings.push_back(XPath::PSEUDONAME_ANY);
   			break;
   		}
   	}
  @@ -2371,73 +2327,118 @@
   
   
   void
  -XPathProcessorImpl::initializeKeywordsTable()
  +XPathProcessorImpl::initializeKeywordsTable(KeywordsMapType&	/* theKeywords */)
   {
   	// $$$ ToDo: This is very confusing.  This table is only used
   	// by getKeywordToken().  But if you look at the switch
   	// statement there, none of these values are considered in the
   	// case statement.  So what's the point?
  +
  +	// theKeywords[FROM_SELF_ABBREVIATED_STRING] = XPathExpression::eFROM_SELF;
  +	// theKeywords[FROM_ATTRIBUTE_STRING] = XPathExpression::eFROM_ATTRIBUTE;
  +	// theKeywords[FROM_DOC_STRING] = XPathExpression::eFROM_DOC;
  +	// theKeywords[FROM_DOCREF_STRING] = XPathExpression::eFROM_DOCREF;
  +	// theKeywords[FROM_ID_STRING] = XPathExpression::eFROM_ID;
  +	// theKeywords[FROM_IDREF_STRING] = XPathExpression::eFROM_IDREF;
  +	// theKeywords[FUNC_ID_STRING] = XPathExpression::eFUNC_ID;
  +	// theKeywords[FUNC_KEY_STRING] = XPathExpression::eFUNC_KEY;
  +	// theKeywords[FUNC_DOCUMENT_STRING] = XPathExpression::eFUNC_DOC;
  +}
  +
   
  -	// s_keywords[FROM_SELF_ABBREVIATED_STRING] = XPathExpression::eFROM_SELF;
  -	// s_keywords[FROM_ATTRIBUTE_STRING] = XPathExpression::eFROM_ATTRIBUTE;
  -	// s_keywords[FROM_DOC_STRING] = XPathExpression::eFROM_DOC;
  -	// s_keywords[FROM_DOCREF_STRING] = XPathExpression::eFROM_DOCREF;
  -	// s_keywords[FROM_ID_STRING] = XPathExpression::eFROM_ID;
  -	// s_keywords[FROM_IDREF_STRING] = XPathExpression::eFROM_IDREF;
  -	// s_keywords[FUNC_ID_STRING] = XPathExpression::eFUNC_ID;
  -	// s_keywords[FUNC_KEY_STRING] = XPathExpression::eFUNC_KEY;
  -	// s_keywords[FUNC_DOCUMENT_STRING] = XPathExpression::eFUNC_DOC;
  +
  +void
  +XPathProcessorImpl::initializeFunctionTable(FunctionNameMapType&	theFunctions)
  +{
  +	theFunctions[XALAN_STATIC_UCODE_STRING("processing-instruction")] = XPathExpression::eNODETYPE_PI;
  +	theFunctions[XALAN_STATIC_UCODE_STRING("comment")] = XPathExpression::eNODETYPE_COMMENT;
  +	theFunctions[XALAN_STATIC_UCODE_STRING("text")] = XPathExpression::eNODETYPE_TEXT;
  +	theFunctions[XALAN_STATIC_UCODE_STRING("node")] = XPathExpression::eNODETYPE_NODE;
   }
   
   
   
   void
  -XPathProcessorImpl::initializeFunctionTable()
  +XPathProcessorImpl::initializeAxisNamesTable(AxisNamesMapType&		theAxisNames)
   {
  -	s_functions[NODETYPE_PI_STRING] = XPathExpression::eNODETYPE_PI;
  -	s_functions[NODETYPE_COMMENT_STRING] = XPathExpression::eNODETYPE_COMMENT;
  -	s_functions[NODETYPE_TEXT_STRING] = XPathExpression::eNODETYPE_TEXT;
  -	s_functions[NODETYPE_NODE_STRING] = XPathExpression::eNODETYPE_NODE;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("ancestor")] = XPathExpression::eFROM_ANCESTORS;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("ancestor-or-self")] = XPathExpression::eFROM_ANCESTORS_OR_SELF;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("attribute")] = XPathExpression::eFROM_ATTRIBUTES;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("child")] = XPathExpression::eFROM_CHILDREN;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("descendant")] = XPathExpression::eFROM_DESCENDANTS;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("descendant-or-self")] = XPathExpression::eFROM_DESCENDANTS_OR_SELF;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("following")] = XPathExpression::eFROM_FOLLOWING;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("following-sibling")] = XPathExpression::eFROM_FOLLOWING_SIBLINGS;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("parent")] = XPathExpression::eFROM_PARENT;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("preceding")] = XPathExpression::eFROM_PRECEDING;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("preceding-sibling")] = XPathExpression::eFROM_PRECEDING_SIBLINGS;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("self")] = XPathExpression::eFROM_SELF;
  +	theAxisNames[XALAN_STATIC_UCODE_STRING("namespace")] = XPathExpression::eFROM_NAMESPACE;
   }
   
   
   
   void
  -XPathProcessorImpl::initializeAxisNamesTable()
  +XPathProcessorImpl::initializeNodeTypesTable(NodeTypesMapType&		theNodeTypes)
   {
  -	s_axisNames[FROM_ANCESTORS_STRING] = XPathExpression::eFROM_ANCESTORS;
  -	s_axisNames[FROM_ANCESTORS_OR_SELF_STRING] = XPathExpression::eFROM_ANCESTORS_OR_SELF;
  -	s_axisNames[FROM_ATTRIBUTES_STRING] = XPathExpression::eFROM_ATTRIBUTES;
  -	s_axisNames[FROM_CHILDREN_STRING] = XPathExpression::eFROM_CHILDREN;
  -	s_axisNames[FROM_DESCENDANTS_STRING] = XPathExpression::eFROM_DESCENDANTS;
  -	s_axisNames[FROM_DESCENDANTS_OR_SELF_STRING] = XPathExpression::eFROM_DESCENDANTS_OR_SELF;
  -	s_axisNames[FROM_FOLLOWING_STRING] = XPathExpression::eFROM_FOLLOWING;
  -	s_axisNames[FROM_FOLLOWING_SIBLINGS_STRING] = XPathExpression::eFROM_FOLLOWING_SIBLINGS;
  -	s_axisNames[FROM_PARENT_STRING] = XPathExpression::eFROM_PARENT;
  -	s_axisNames[FROM_PRECEDING_STRING] = XPathExpression::eFROM_PRECEDING;
  -	s_axisNames[FROM_PRECEDING_SIBLINGS_STRING] = XPathExpression::eFROM_PRECEDING_SIBLINGS;
  -	s_axisNames[FROM_SELF_STRING] = XPathExpression::eFROM_SELF;
  -	s_axisNames[FROM_NAMESPACE_STRING] = XPathExpression::eFROM_NAMESPACE;
  +	theNodeTypes[XALAN_STATIC_UCODE_STRING("comment")] = XPathExpression::eNODETYPE_COMMENT;
  +	theNodeTypes[XALAN_STATIC_UCODE_STRING("text")] = XPathExpression::eNODETYPE_TEXT;
  +	theNodeTypes[XALAN_STATIC_UCODE_STRING("processing-instruction")] = XPathExpression::eNODETYPE_PI;
  +	theNodeTypes[XALAN_STATIC_UCODE_STRING("node")] = XPathExpression::eNODETYPE_NODE;
  +	theNodeTypes[XALAN_STATIC_UCODE_STRING("*")] = XPathExpression::eNODETYPE_ANYELEMENT;
   }
   
   
   
  +static XalanDOMString		FUNC_ID_STRING;
  +
  +static XalanDOMString		FUNC_KEY_STRING;
  +
  +
  +const XalanDOMString&	XPathProcessorImpl::FUNC_ID_STRING = ::FUNC_ID_STRING;
  +
  +
  +	// This shouldn't really be here, since it's not part of the XPath standard,
  +	// but rather a part ofthe XSLT standard.
  +const XalanDOMString&	XPathProcessorImpl::FUNC_KEY_STRING = ::FUNC_KEY_STRING;
  +
  +
  +static XPathProcessorImpl::KeywordsMapType 		s_keywords;
  +static XPathProcessorImpl::FunctionNameMapType 	s_functions;
  +static XPathProcessorImpl::AxisNamesMapType		s_axisNames;
  +static XPathProcessorImpl::NodeTypesMapType		s_nodeTypes;
  +
  +
  +
  +const XPathProcessorImpl::KeywordsMapType& 		XPathProcessorImpl::s_keywords = ::s_keywords;
  +const XPathProcessorImpl::FunctionNameMapType& 	XPathProcessorImpl::s_functions = ::s_functions;
  +const XPathProcessorImpl::AxisNamesMapType&		XPathProcessorImpl::s_axisNames = ::s_axisNames;
  +const XPathProcessorImpl::NodeTypesMapType&		XPathProcessorImpl::s_nodeTypes = ::s_nodeTypes;
  +
  +
  +
   void
  -XPathProcessorImpl::initializeNodeTypesTable()
  +XPathProcessorImpl::initialize()
   {
  -	s_nodeTypes[NODETYPE_COMMENT_STRING] = XPathExpression::eNODETYPE_COMMENT;
  -	s_nodeTypes[NODETYPE_TEXT_STRING] = XPathExpression::eNODETYPE_TEXT;
  -	s_nodeTypes[NODETYPE_PI_STRING] = XPathExpression::eNODETYPE_PI;
  -	s_nodeTypes[NODETYPE_NODE_STRING] = XPathExpression::eNODETYPE_NODE;
  -	s_nodeTypes[NODETYPE_ANYELEMENT_STRING] = XPathExpression::eNODETYPE_ANYELEMENT;
  +	XPathProcessorImpl::initializeKeywordsTable(::s_keywords);
  +	XPathProcessorImpl::initializeFunctionTable(::s_functions);
  +	XPathProcessorImpl::initializeAxisNamesTable(::s_axisNames);
  +	XPathProcessorImpl::initializeNodeTypesTable(::s_nodeTypes);
  +
  +	::FUNC_ID_STRING = XALAN_STATIC_UCODE_STRING("id");
  +	::FUNC_KEY_STRING = XALAN_STATIC_UCODE_STRING("key");
   }
   
   
   
  -XPathProcessorImpl::StaticInitializer::StaticInitializer()
  +void
  +XPathProcessorImpl::terminate()
   {
  -	XPathProcessorImpl::initializeKeywordsTable();
  -	XPathProcessorImpl::initializeFunctionTable();
  -	XPathProcessorImpl::initializeAxisNamesTable();
  -	XPathProcessorImpl::initializeNodeTypesTable();
  +	KeywordsMapType().swap(::s_keywords);
  +	FunctionNameMapType().swap(::s_functions);
  +	AxisNamesMapType().swap(::s_axisNames);
  +	NodeTypesMapType().swap(::s_nodeTypes);
  +
  +	clear(::FUNC_ID_STRING);
  +	clear(::FUNC_KEY_STRING);
   }
  
  
  
  1.9       +30 -22    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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XPathProcessorImpl.hpp	2000/08/22 20:20:49	1.8
  +++ XPathProcessorImpl.hpp	2000/08/31 19:43:05	1.9
  @@ -122,8 +122,19 @@
   
   	typedef std::vector<XalanDOMString>				DOMStringVectorType;
   #endif
  -	
   
  +	/**
  +	 * Perform static initialization.  See class XPathInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform static shut down.  See class XPathInit.
  +	 */
  +	static void
  +	terminate();
  +
   	explicit
   	XPathProcessorImpl();
   
  @@ -756,16 +767,16 @@
   	FunctionCallArguments();
   
   	static void
  -	initializeKeywordsTable();
  +	initializeKeywordsTable(KeywordsMapType&	theKeywords);
   
   	static void
  -	initializeFunctionTable();
  +	initializeFunctionTable(FunctionNameMapType&	theFunctions);
   
   	static void
  -	initializeAxisNamesTable();
  +	initializeAxisNamesTable(AxisNamesMapType&		theAxisNames);
   
   	static void
  -	initializeNodeTypesTable();
  +	initializeNodeTypesTable(NodeTypesMapType&		theNodeTypes);
   
   	/**
   	 * The current input token.
  @@ -801,29 +812,26 @@
   		TARGETEXTRA = 10000
   	};
   
  -	/**
  -	 * Map of keyword names to token values.
  -	 */
  -	static KeywordsMapType			s_keywords;
  +	// This shouldn't really be here, since it duplicates a string that is part
  +	// of the information that is maintained by the class XPathFunctionTable,
  +	// but this is a reasonable optimization.
  +	static const XalanDOMString&	FUNC_ID_STRING;
   
  -	static FunctionNameMapType		s_functions;
   
  -	static AxisNamesMapType			s_axisNames;
  +	// This shouldn't really be here, since it's not part of the XPath standard,
  +	// but rather a part ofthe XSLT standard.
  +	static const XalanDOMString&	FUNC_KEY_STRING;
   
  -	static NodeTypesMapType			s_nodeTypes;
  -
  -	class StaticInitializer
  -	{
  -	public:
  +	/**
  +	 * Map of keyword names to token values.
  +	 */
  +	static const KeywordsMapType&		s_keywords;
   
  -		StaticInitializer();
  +	static const FunctionNameMapType&	s_functions;
   
  -		~StaticInitializer()
  -		{
  -		}
  -	};
  +	static const AxisNamesMapType&		s_axisNames;
   
  -	friend class StaticInitializer;
  +	static const NodeTypesMapType&		s_nodeTypes;
   };
   
   
  
  
  
  1.1                  xml-xalan/c/src/XPath/XPathInit.cpp
  
  Index: XPathInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "XPathInit.hpp"
  
  
  
  #include "XPath.hpp"
  #include "XPathEnvSupportDefault.hpp"
  #include "XPathProcessorImpl.hpp"
  
  
  
  unsigned long	XPathInit::s_initCounter = 0;
  
  
  
  XPathInit::XPathInit() :
  	m_platformSupportInit(),
  	m_domSupportInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  XPathInit::~XPathInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  XPathInit::initialize()
  {
  	XPath::initialize();
  
  	XPathProcessorImpl::initialize();
  
  	XPathEnvSupportDefault::initialize();
  }
  
  
  
  void
  XPathInit::terminate()
  {
  	XPath::terminate();
  
  	XPathProcessorImpl::terminate();
  
  	XPathEnvSupportDefault::terminate();
  }
  
  
  
  1.1                  xml-xalan/c/src/XPath/XPathInit.hpp
  
  Index: XPathInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(XPATHINIT_INCLUDE_GUARD_1357924680)
  #define XPATHINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XPath/XPathDefinitions.hpp>
  
  
  
  #include <PlatformSupport/PlatformSupportInit.hpp>
  
  
  
  #include <DOMSupport/DOMSupportInit.hpp>
  
  
  
  class XALAN_XPATH_EXPORT XPathInit
  {
  public:
  
  	explicit
  	XPathInit();
  
  	~XPathInit();
  
  private:
  
  	// Not implemented...
  	XPathInit(const XPathInit&);
  
  	XPathInit&
  	operator=(const XPathInit&);
  
  	
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	const PlatformSupportInit	m_platformSupportInit;
  
  	const DOMSupportInit		m_domSupportInit;
  
  	static unsigned long		s_initCounter;
  };
  
  
  
  #endif	// !defined(XPATHINIT_INCLUDE_GUARD_1357924680)
  
  
  
  1.9       +746 -182  xml-xalan/c/src/XSLT/Constants.cpp
  
  Index: Constants.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/Constants.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Constants.cpp	2000/05/24 19:36:34	1.8
  +++ Constants.cpp	2000/08/31 19:43:08	1.9
  @@ -64,185 +64,749 @@
   #include <PlatformSupport/DOMStringHelper.hpp>
   
   
  -const XalanDOMString		Constants::ATTRNAME_AMOUNT(XALAN_STATIC_UCODE_STRING("amount"));
  -const XalanDOMString		Constants::ATTRNAME_ANCESTOR(XALAN_STATIC_UCODE_STRING("ancestor"));
  -const XalanDOMString		Constants::ATTRNAME_ARCHIVE(XALAN_STATIC_UCODE_STRING("archive"));
  -const XalanDOMString		Constants::ATTRNAME_ATTRIBUTE(XALAN_STATIC_UCODE_STRING("attribute"));
  -const XalanDOMString		Constants::ATTRNAME_ATTRIBUTE_SET(XALAN_STATIC_UCODE_STRING("attribute-set"));
  -const XalanDOMString		Constants::ATTRNAME_CASEORDER(XALAN_STATIC_UCODE_STRING("case-order"));
  -const XalanDOMString		Constants::ATTRNAME_CLASS(XALAN_STATIC_UCODE_STRING("class"));
  -const XalanDOMString		Constants::ATTRNAME_CLASSID(XALAN_STATIC_UCODE_STRING("classid"));
  -const XalanDOMString		Constants::ATTRNAME_CODEBASE(XALAN_STATIC_UCODE_STRING("codebase"));
  -const XalanDOMString		Constants::ATTRNAME_CODETYPE(XALAN_STATIC_UCODE_STRING("type"));
  -const XalanDOMString		Constants::ATTRNAME_CONDITION(XALAN_STATIC_UCODE_STRING("condition"));
  -const XalanDOMString		Constants::ATTRNAME_COPYTYPE(XALAN_STATIC_UCODE_STRING("copy-type"));
  -const XalanDOMString		Constants::ATTRNAME_COUNT(XALAN_STATIC_UCODE_STRING("count"));
  -const XalanDOMString		Constants::ATTRNAME_DATATYPE(XALAN_STATIC_UCODE_STRING("data-type"));
  -const XalanDOMString		Constants::ATTRNAME_DECIMALSEPARATOR(XALAN_STATIC_UCODE_STRING("decimal-separator"));
  -const XalanDOMString		Constants::ATTRNAME_DEFAULT(XALAN_STATIC_UCODE_STRING("default"));
  -const XalanDOMString		Constants::ATTRNAME_DEFAULTSPACE(XALAN_STATIC_UCODE_STRING("default-space"));
  -const XalanDOMString		Constants::ATTRNAME_DEPTH(XALAN_STATIC_UCODE_STRING("with-children"));
  -const XalanDOMString		Constants::ATTRNAME_DIGIT(XALAN_STATIC_UCODE_STRING("digit"));
  -const XalanDOMString		Constants::ATTRNAME_DIGITGROUPSEP(XALAN_STATIC_UCODE_STRING("digit-group-sep"));
  -const XalanDOMString		Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING (XALAN_STATIC_UCODE_STRING("disable-output-escaping"));
  -const XalanDOMString		Constants::ATTRNAME_ELEMENT(XALAN_STATIC_UCODE_STRING("element"));
  -const XalanDOMString		Constants::ATTRNAME_ELEMENTS(XALAN_STATIC_UCODE_STRING("elements"));
  -const XalanDOMString		Constants::ATTRNAME_EXCLUDE_RESULT_PREFIXES(XALAN_STATIC_UCODE_STRING("exclude-result-prefixes"));
  -const XalanDOMString		Constants::ATTRNAME_EXPR(XALAN_STATIC_UCODE_STRING("expr"));
  -const XalanDOMString		Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES(XALAN_STATIC_UCODE_STRING("extension-element-prefixes"));
  -const XalanDOMString		Constants::ATTRNAME_FORMAT(XALAN_STATIC_UCODE_STRING("format"));
  -const XalanDOMString		Constants::ATTRNAME_FROM(XALAN_STATIC_UCODE_STRING("from"));
  -const XalanDOMString		Constants::ATTRNAME_GROUPINGSEPARATOR(XALAN_STATIC_UCODE_STRING("grouping-separator"));
  -const XalanDOMString		Constants::ATTRNAME_GROUPINGSIZE(XALAN_STATIC_UCODE_STRING("grouping-size"));
  -const XalanDOMString		Constants::ATTRNAME_HREF(XALAN_STATIC_UCODE_STRING("href"));
  -const XalanDOMString		Constants::ATTRNAME_ID(XALAN_STATIC_UCODE_STRING("id"));
  -const XalanDOMString		Constants::ATTRNAME_IMPORTANCE(XALAN_STATIC_UCODE_STRING("importance"));
  -const XalanDOMString		Constants::ATTRNAME_INDENTRESULT(XALAN_STATIC_UCODE_STRING("indent-result"));
  -const XalanDOMString		Constants::ATTRNAME_INFINITY(XALAN_STATIC_UCODE_STRING("infinity"));
  -const XalanDOMString		Constants::ATTRNAME_LANG(XALAN_STATIC_UCODE_STRING("lang"));
  -const XalanDOMString		Constants::ATTRNAME_LETTERVALUE(XALAN_STATIC_UCODE_STRING("letter-value"));
  -const XalanDOMString		Constants::ATTRNAME_LEVEL(XALAN_STATIC_UCODE_STRING("level"));
  -const XalanDOMString		Constants::ATTRNAME_MATCH(XALAN_STATIC_UCODE_STRING("match"));
  -const XalanDOMString		Constants::ATTRNAME_METHOD(XALAN_STATIC_UCODE_STRING("calls"));
  -const XalanDOMString		Constants::ATTRNAME_MINUSSIGN(XALAN_STATIC_UCODE_STRING("minus-sign"));
  -const XalanDOMString		Constants::ATTRNAME_MODE(XALAN_STATIC_UCODE_STRING("mode"));
  -const XalanDOMString		Constants::ATTRNAME_NAME(XALAN_STATIC_UCODE_STRING("name"));
  -const XalanDOMString		Constants::ATTRNAME_NAMESPACE(XALAN_STATIC_UCODE_STRING("namespace"));
  -const XalanDOMString		Constants::ATTRNAME_NAN(XALAN_STATIC_UCODE_STRING("NaN"));
  -const XalanDOMString		Constants::ATTRNAME_NDIGITSPERGROUP(XALAN_STATIC_UCODE_STRING("n-digits-per-group"));
  -const XalanDOMString		Constants::ATTRNAME_NS(XALAN_STATIC_UCODE_STRING("ns"));
  -const XalanDOMString		Constants::ATTRNAME_ONLY(XALAN_STATIC_UCODE_STRING("only"));
  -const XalanDOMString		Constants::ATTRNAME_ORDER(XALAN_STATIC_UCODE_STRING("order"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS (XALAN_STATIC_UCODE_STRING("cdata-section-elements"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC(XALAN_STATIC_UCODE_STRING("doctype-public"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM(XALAN_STATIC_UCODE_STRING("doctype-system"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_ENCODING(XALAN_STATIC_UCODE_STRING("encoding"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_INDENT(XALAN_STATIC_UCODE_STRING("indent"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_MEDIATYPE(XALAN_STATIC_UCODE_STRING("media-type"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_METHOD(XALAN_STATIC_UCODE_STRING("method"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_OMITXMLDECL(XALAN_STATIC_UCODE_STRING("omit-xml-declaration"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_STANDALONE (XALAN_STATIC_UCODE_STRING("standalone"));
  -const XalanDOMString		Constants::ATTRNAME_OUTPUT_VERSION(XALAN_STATIC_UCODE_STRING("version"));
  -const XalanDOMString		Constants::ATTRNAME_PATTERNSEPARATOR(XALAN_STATIC_UCODE_STRING("pattern-separator"));
  -const XalanDOMString		Constants::ATTRNAME_PERCENT(XALAN_STATIC_UCODE_STRING("percent"));
  -const XalanDOMString		Constants::ATTRNAME_PERMILLE(XALAN_STATIC_UCODE_STRING("per-mille"));
  -const XalanDOMString		Constants::ATTRNAME_PRIORITY(XALAN_STATIC_UCODE_STRING("priority"));
  -const XalanDOMString		Constants::ATTRNAME_REFID(XALAN_STATIC_UCODE_STRING("refID"));
  -const XalanDOMString		Constants::ATTRNAME_RESULTNS(XALAN_STATIC_UCODE_STRING("result-ns"));
  -const XalanDOMString		Constants::ATTRNAME_RESULT_PREFIX(XALAN_STATIC_UCODE_STRING("result-prefix"));
  -const XalanDOMString		Constants::ATTRNAME_SELECT(XALAN_STATIC_UCODE_STRING("select"));
  -const XalanDOMString		Constants::ATTRNAME_SEQUENCESRC(XALAN_STATIC_UCODE_STRING("sequence-src"));
  -const XalanDOMString		Constants::ATTRNAME_STYLE(XALAN_STATIC_UCODE_STRING("style"));
  -const XalanDOMString		Constants::ATTRNAME_STYLESHEET_PREFIX(XALAN_STATIC_UCODE_STRING("stylesheet-prefix"));
  -const XalanDOMString		Constants::ATTRNAME_TERMINATE(XALAN_STATIC_UCODE_STRING("terminate"));
  -const XalanDOMString		Constants::ATTRNAME_TEST(XALAN_STATIC_UCODE_STRING("test"));
  -const XalanDOMString		Constants::ATTRNAME_TOSTRING(XALAN_STATIC_UCODE_STRING("to-string"));
  -const XalanDOMString		Constants::ATTRNAME_TYPE(XALAN_STATIC_UCODE_STRING("type"));
  -const XalanDOMString		Constants::ATTRNAME_USE(XALAN_STATIC_UCODE_STRING("use"));
  -const XalanDOMString		Constants::ATTRNAME_USEATTRIBUTESETS(XALAN_STATIC_UCODE_STRING("use-attribute-sets"));
  -const XalanDOMString		Constants::ATTRNAME_VALUE(XALAN_STATIC_UCODE_STRING("value"));
  -const XalanDOMString		Constants::ATTRNAME_VERSION(XALAN_STATIC_UCODE_STRING("version"));
  -const XalanDOMString		Constants::ATTRNAME_XMLNS(XALAN_STATIC_UCODE_STRING("xmlns:"));
  -const XalanDOMString		Constants::ATTRNAME_XMLNSDEF(XALAN_STATIC_UCODE_STRING("xmlns"));
  -const XalanDOMString		Constants::ATTRNAME_XMLSPACE(XALAN_STATIC_UCODE_STRING("xml:space"));
  -const XalanDOMString		Constants::ATTRNAME_ZERODIGIT(XALAN_STATIC_UCODE_STRING("zero-digit"));
  -
  -const XalanDOMString		Constants::ATTRVAL_ALPHABETIC(XALAN_STATIC_UCODE_STRING("alphabetic"));
  -const XalanDOMString		Constants::ATTRVAL_ANCESTOR(XALAN_STATIC_UCODE_STRING("ancestor"));
  -const XalanDOMString		Constants::ATTRVAL_ANY(XALAN_STATIC_UCODE_STRING("any"));
  -const XalanDOMString		Constants::ATTRVAL_CASEORDER_LOWER(XALAN_STATIC_UCODE_STRING("lower-first"));
  -const XalanDOMString		Constants::ATTRVAL_CASEORDER_UPPER(XALAN_STATIC_UCODE_STRING("upper-first"));
  -const XalanDOMString		Constants::ATTRVAL_DATATYPE_NUMBER(XALAN_STATIC_UCODE_STRING("number"));
  -const XalanDOMString		Constants::ATTRVAL_DATATYPE_TEXT(XALAN_STATIC_UCODE_STRING("text"));
  -const XalanDOMString		Constants::ATTRVAL_DEFAULT_PREFIX(XALAN_STATIC_UCODE_STRING("#default"));
  -const XalanDOMString		Constants::ATTRVAL_ID(XALAN_STATIC_UCODE_STRING("id"));
  -const XalanDOMString		Constants::ATTRVAL_INFINITY(XALAN_STATIC_UCODE_STRING("Infinity"));
  -const XalanDOMString		Constants::ATTRVAL_MULTI(XALAN_STATIC_UCODE_STRING("multiple"));
  -const XalanDOMString		Constants::ATTRVAL_NAN(XALAN_STATIC_UCODE_STRING("NaN"));
  -const XalanDOMString		Constants::ATTRVAL_NO(XALAN_STATIC_UCODE_STRING("no"));
  -const XalanDOMString		Constants::ATTRVAL_ORDER_ASCENDING(XALAN_STATIC_UCODE_STRING("ascending"));
  -const XalanDOMString		Constants::ATTRVAL_ORDER_DESCENDING(XALAN_STATIC_UCODE_STRING("descending"));
  -const XalanDOMString		Constants::ATTRVAL_OTHER(XALAN_STATIC_UCODE_STRING("other"));
  -const XalanDOMString		Constants::ATTRVAL_OUTPUT_METHOD_HTML(XALAN_STATIC_UCODE_STRING("html"));
  -const XalanDOMString		Constants::ATTRVAL_OUTPUT_METHOD_TEXT(XALAN_STATIC_UCODE_STRING("text"));
  -const XalanDOMString		Constants::ATTRVAL_OUTPUT_METHOD_XML(XALAN_STATIC_UCODE_STRING("xml"));
  -const XalanDOMString		Constants::ATTRVAL_PARENT(XALAN_STATIC_UCODE_STRING(".."));
  -const XalanDOMString		Constants::ATTRVAL_PRESERVE(XALAN_STATIC_UCODE_STRING("preserve"));
  -const XalanDOMString		Constants::ATTRVAL_SINGLE(XALAN_STATIC_UCODE_STRING("single"));
  -const XalanDOMString		Constants::ATTRVAL_STRIP(XALAN_STATIC_UCODE_STRING("strip"));
  -const XalanDOMString		Constants::ATTRVAL_THIS(XALAN_STATIC_UCODE_STRING("."));
  -const XalanDOMString		Constants::ATTRVAL_YES(XALAN_STATIC_UCODE_STRING("yes"));
  -const XalanDOMString		Constants::DEFAULT_DECIMAL_FORMAT(XALAN_STATIC_UCODE_STRING("#default"));
  -const XalanDOMString		Constants::ELEMNAME_ANCHOR_STRING(XALAN_STATIC_UCODE_STRING("anchor"));
  -const XalanDOMString		Constants::ELEMNAME_ANY_STRING(XALAN_STATIC_UCODE_STRING("any"));
  -const XalanDOMString		Constants::ELEMNAME_APPLY_IMPORTS_STRING(XALAN_STATIC_UCODE_STRING("apply-imports"));
  -const XalanDOMString		Constants::ELEMNAME_APPLY_TEMPLATES_STRING(XALAN_STATIC_UCODE_STRING("apply-templates"));
  -const XalanDOMString		Constants::ELEMNAME_ARG_STRING(XALAN_STATIC_UCODE_STRING("arg"));
  -const XalanDOMString		Constants::ELEMNAME_ATTRIBUTESET_STRING(XALAN_STATIC_UCODE_STRING("attribute-set"));
  -const XalanDOMString		Constants::ELEMNAME_ATTRIBUTE_STRING(XALAN_STATIC_UCODE_STRING("attribute"));
  -const XalanDOMString		Constants::ELEMNAME_CALLTEMPLATEARG_STRING(XALAN_STATIC_UCODE_STRING("invoke-arg"));
  -const XalanDOMString		Constants::ELEMNAME_CALLTEMPLATE_STRING(XALAN_STATIC_UCODE_STRING("call-template"));
  -const XalanDOMString		Constants::ELEMNAME_CALL_STRING(XALAN_STATIC_UCODE_STRING("call"));
  -const XalanDOMString		Constants::ELEMNAME_CHILDREN_STRING(XALAN_STATIC_UCODE_STRING("children"));
  -const XalanDOMString		Constants::ELEMNAME_CHOOSE_STRING(XALAN_STATIC_UCODE_STRING("choose"));
  -const XalanDOMString		Constants::ELEMNAME_COMMENT_STRING(XALAN_STATIC_UCODE_STRING("comment"));
  -const XalanDOMString		Constants::ELEMNAME_COMPONENT_STRING(XALAN_STATIC_UCODE_STRING("component"));
  -const XalanDOMString		Constants::ELEMNAME_CONSTRUCT_STRING(XALAN_STATIC_UCODE_STRING("construct"));
  -const XalanDOMString		Constants::ELEMNAME_CONTENTS_STRING(XALAN_STATIC_UCODE_STRING("contents"));
  -const XalanDOMString		Constants::ELEMNAME_COPY_OF_STRING(XALAN_STATIC_UCODE_STRING("copy-of"));
  -const XalanDOMString		Constants::ELEMNAME_COPY_STRING(XALAN_STATIC_UCODE_STRING("copy"));
  -const XalanDOMString		Constants::ELEMNAME_COUNTERINCREMENT_STRING(XALAN_STATIC_UCODE_STRING("counter-increment"));
  -const XalanDOMString		Constants::ELEMNAME_COUNTERRESET_STRING(XALAN_STATIC_UCODE_STRING("counter-reset"));
  -const XalanDOMString		Constants::ELEMNAME_COUNTERSCOPE_STRING(XALAN_STATIC_UCODE_STRING("counter-scope"));
  -const XalanDOMString		Constants::ELEMNAME_COUNTERS_STRING(XALAN_STATIC_UCODE_STRING("counters"));
  -const XalanDOMString		Constants::ELEMNAME_COUNTER_STRING(XALAN_STATIC_UCODE_STRING("counter"));
  -const XalanDOMString		Constants::ELEMNAME_DECIMALFORMAT_STRING(XALAN_STATIC_UCODE_STRING("decimal-format"));
  -const XalanDOMString		Constants::ELEMNAME_DISPLAYIF_STRING(XALAN_STATIC_UCODE_STRING("display-if"));
  -const XalanDOMString		Constants::ELEMNAME_ELEMENT_STRING(XALAN_STATIC_UCODE_STRING("element"));
  -const XalanDOMString		Constants::ELEMNAME_EMPTY_STRING(XALAN_STATIC_UCODE_STRING("empty"));
  -const XalanDOMString		Constants::ELEMNAME_EVAL_STRING(XALAN_STATIC_UCODE_STRING("eval"));
  -const XalanDOMString		Constants::ELEMNAME_EXPECTEDCHILDREN_STRING(XALAN_STATIC_UCODE_STRING("expectedchildren"));
  -const XalanDOMString		Constants::ELEMNAME_EXTENSIONHANDLER_STRING(XALAN_STATIC_UCODE_STRING("code-dispatcher"));
  -const XalanDOMString		Constants::ELEMNAME_EXTENSION_STRING(XALAN_STATIC_UCODE_STRING("functions"));
  -const XalanDOMString		Constants::ELEMNAME_FALLBACK_STRING(XALAN_STATIC_UCODE_STRING("fallback"));
  -const XalanDOMString		Constants::ELEMNAME_FOREACH_STRING(XALAN_STATIC_UCODE_STRING("for-each"));
  -const XalanDOMString		Constants::ELEMNAME_HTML_STRING(XALAN_STATIC_UCODE_STRING("HTML"));
  -const XalanDOMString		Constants::ELEMNAME_IF_STRING(XALAN_STATIC_UCODE_STRING("if"));
  -const XalanDOMString		Constants::ELEMNAME_IMPORT_STRING(XALAN_STATIC_UCODE_STRING("import"));
  -const XalanDOMString		Constants::ELEMNAME_INCLUDE_STRING(XALAN_STATIC_UCODE_STRING("include"));
  -const XalanDOMString		Constants::ELEMNAME_KEY_STRING(XALAN_STATIC_UCODE_STRING("key"));
  -const XalanDOMString		Constants::ELEMNAME_LOCALE_STRING(XALAN_STATIC_UCODE_STRING("locale"));
  -const XalanDOMString		Constants::ELEMNAME_MESSAGE_STRING(XALAN_STATIC_UCODE_STRING("message"));
  -const XalanDOMString		Constants::ELEMNAME_NSALIAS_STRING(XALAN_STATIC_UCODE_STRING("namespace-alias"));
  -const XalanDOMString		Constants::ELEMNAME_NUMBER_STRING(XALAN_STATIC_UCODE_STRING("number"));
  -const XalanDOMString		Constants::ELEMNAME_OTHERWISE_STRING(XALAN_STATIC_UCODE_STRING("otherwise"));
  -const XalanDOMString		Constants::ELEMNAME_OUTPUT_STRING(XALAN_STATIC_UCODE_STRING("output"));
  -const XalanDOMString		Constants::ELEMNAME_PARAMVARIABLE_STRING(XALAN_STATIC_UCODE_STRING("param"));
  -const XalanDOMString		Constants::ELEMNAME_PI_OLD_STRING(XALAN_STATIC_UCODE_STRING("pi"));
  -const XalanDOMString		Constants::ELEMNAME_PI_STRING(XALAN_STATIC_UCODE_STRING("processing-instruction"));
  -const XalanDOMString		Constants::ELEMNAME_PRESERVESPACE_STRING(XALAN_STATIC_UCODE_STRING("preserve-space"));
  -const XalanDOMString		Constants::ELEMNAME_ROOT_STRING(XALAN_STATIC_UCODE_STRING("root"));
  -const XalanDOMString		Constants::ELEMNAME_SCRIPT_STRING(XALAN_STATIC_UCODE_STRING("script"));
  -const XalanDOMString		Constants::ELEMNAME_SORT_STRING(XALAN_STATIC_UCODE_STRING("sort"));
  -const XalanDOMString		Constants::ELEMNAME_STRIPSPACE_STRING(XALAN_STATIC_UCODE_STRING("strip-space"));
  -const XalanDOMString		Constants::ELEMNAME_STYLESHEET_STRING(XALAN_STATIC_UCODE_STRING("stylesheet"));
  -const XalanDOMString		Constants::ELEMNAME_TARGETATTRIBUTE_STRING(XALAN_STATIC_UCODE_STRING("target-attribute"));
  -const XalanDOMString		Constants::ELEMNAME_TARGETCOMMENT_STRING(XALAN_STATIC_UCODE_STRING("target-comment"));
  -const XalanDOMString		Constants::ELEMNAME_TARGETELEMENT_STRING(XALAN_STATIC_UCODE_STRING("target-element"));
  -const XalanDOMString		Constants::ELEMNAME_TARGETPI_STRING(XALAN_STATIC_UCODE_STRING("target-pi"));
  -const XalanDOMString		Constants::ELEMNAME_TARGETTEXT_STRING(XALAN_STATIC_UCODE_STRING("target-text"));
  -const XalanDOMString		Constants::ELEMNAME_TEMPLATE_STRING(XALAN_STATIC_UCODE_STRING("template"));
  -const XalanDOMString		Constants::ELEMNAME_TEXT_STRING(XALAN_STATIC_UCODE_STRING("text"));
  -const XalanDOMString		Constants::ELEMNAME_TRANSFORM_STRING(XALAN_STATIC_UCODE_STRING("transform"));
  -const XalanDOMString		Constants::ELEMNAME_URL_STRING(XALAN_STATIC_UCODE_STRING("uri"));
  -const XalanDOMString		Constants::ELEMNAME_USE_STRING(XALAN_STATIC_UCODE_STRING("use"));
  -const XalanDOMString		Constants::ELEMNAME_VALUEOF_STRING(XALAN_STATIC_UCODE_STRING("value-of"));
  -const XalanDOMString		Constants::ELEMNAME_VARIABLE_STRING(XALAN_STATIC_UCODE_STRING("variable"));
  -const XalanDOMString		Constants::ELEMNAME_WHEN_STRING(XALAN_STATIC_UCODE_STRING("when"));
  -const XalanDOMString		Constants::ELEMNAME_WITHPARAM_STRING(XALAN_STATIC_UCODE_STRING("with-param"));
  -const XalanDOMString		Constants::PSEUDONAME_ANY(XALAN_STATIC_UCODE_STRING("*"));
  -const XalanDOMString		Constants::PSEUDONAME_COMMENT(XALAN_STATIC_UCODE_STRING("#comment"));
  -const XalanDOMString		Constants::PSEUDONAME_OTHER(XALAN_STATIC_UCODE_STRING("*"));
  -const XalanDOMString		Constants::PSEUDONAME_PI(XALAN_STATIC_UCODE_STRING("#pi"));
  -const XalanDOMString		Constants::PSEUDONAME_ROOT(XALAN_STATIC_UCODE_STRING("/"));
  -const XalanDOMString		Constants::PSEUDONAME_TEXT(XALAN_STATIC_UCODE_STRING("#text"));
  +
  +static XalanDOMString		ATTRNAME_AMOUNT;
  +static XalanDOMString		ATTRNAME_ANCESTOR;
  +static XalanDOMString		ATTRNAME_ARCHIVE;
  +static XalanDOMString		ATTRNAME_ATTRIBUTE;
  +static XalanDOMString		ATTRNAME_ATTRIBUTE_SET;
  +static XalanDOMString		ATTRNAME_CASEORDER;
  +static XalanDOMString		ATTRNAME_CLASS;
  +static XalanDOMString		ATTRNAME_CLASSID;
  +static XalanDOMString		ATTRNAME_CODEBASE;
  +static XalanDOMString		ATTRNAME_CODETYPE;
  +static XalanDOMString		ATTRNAME_CONDITION;
  +static XalanDOMString		ATTRNAME_COPYTYPE;
  +static XalanDOMString		ATTRNAME_COUNT;
  +static XalanDOMString		ATTRNAME_DATATYPE;
  +static XalanDOMString		ATTRNAME_DECIMALSEPARATOR;
  +static XalanDOMString		ATTRNAME_DEFAULT;
  +static XalanDOMString		ATTRNAME_DEFAULTSPACE;
  +static XalanDOMString		ATTRNAME_DEPTH;
  +static XalanDOMString		ATTRNAME_DIGIT;
  +static XalanDOMString		ATTRNAME_DIGITGROUPSEP;
  +static XalanDOMString		ATTRNAME_DISABLE_OUTPUT_ESCAPING;
  +static XalanDOMString		ATTRNAME_ELEMENT;
  +static XalanDOMString		ATTRNAME_ELEMENTS;
  +static XalanDOMString		ATTRNAME_EXCLUDE_RESULT_PREFIXES;
  +static XalanDOMString		ATTRNAME_EXPR;
  +static XalanDOMString		ATTRNAME_EXTENSIONELEMENTPREFIXES;
  +static XalanDOMString		ATTRNAME_FORMAT;
  +static XalanDOMString		ATTRNAME_FROM;
  +static XalanDOMString		ATTRNAME_GROUPINGSEPARATOR;
  +static XalanDOMString		ATTRNAME_GROUPINGSIZE;
  +static XalanDOMString		ATTRNAME_HREF;
  +static XalanDOMString		ATTRNAME_ID;
  +static XalanDOMString		ATTRNAME_IMPORTANCE;
  +static XalanDOMString		ATTRNAME_INDENTRESULT;
  +static XalanDOMString		ATTRNAME_INFINITY;
  +static XalanDOMString		ATTRNAME_LANG;
  +static XalanDOMString		ATTRNAME_LETTERVALUE;
  +static XalanDOMString		ATTRNAME_LEVEL;
  +static XalanDOMString		ATTRNAME_MATCH;
  +static XalanDOMString		ATTRNAME_METHOD;
  +static XalanDOMString		ATTRNAME_MINUSSIGN;
  +static XalanDOMString		ATTRNAME_MODE;
  +static XalanDOMString		ATTRNAME_NAME;
  +static XalanDOMString		ATTRNAME_NAMESPACE;
  +static XalanDOMString		ATTRNAME_NAN;
  +static XalanDOMString		ATTRNAME_NDIGITSPERGROUP;
  +static XalanDOMString		ATTRNAME_NS;
  +static XalanDOMString		ATTRNAME_ONLY;
  +static XalanDOMString		ATTRNAME_ORDER;
  +static XalanDOMString		ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  +static XalanDOMString		ATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  +static XalanDOMString		ATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  +static XalanDOMString		ATTRNAME_OUTPUT_ENCODING;
  +static XalanDOMString		ATTRNAME_OUTPUT_INDENT;
  +static XalanDOMString		ATTRNAME_OUTPUT_MEDIATYPE;
  +static XalanDOMString		ATTRNAME_OUTPUT_METHOD;
  +static XalanDOMString		ATTRNAME_OUTPUT_OMITXMLDECL;
  +static XalanDOMString		ATTRNAME_OUTPUT_STANDALONE;
  +static XalanDOMString		ATTRNAME_OUTPUT_VERSION;
  +static XalanDOMString		ATTRNAME_PATTERNSEPARATOR;
  +static XalanDOMString		ATTRNAME_PERCENT;
  +static XalanDOMString		ATTRNAME_PERMILLE;
  +static XalanDOMString		ATTRNAME_PRIORITY;
  +static XalanDOMString		ATTRNAME_REFID;
  +static XalanDOMString		ATTRNAME_RESULTNS;
  +static XalanDOMString		ATTRNAME_RESULT_PREFIX;
  +static XalanDOMString		ATTRNAME_SELECT;
  +static XalanDOMString		ATTRNAME_SEQUENCESRC;
  +static XalanDOMString		ATTRNAME_STYLE;
  +static XalanDOMString		ATTRNAME_STYLESHEET_PREFIX;
  +static XalanDOMString		ATTRNAME_TERMINATE;
  +static XalanDOMString		ATTRNAME_TEST;
  +static XalanDOMString		ATTRNAME_TOSTRING;
  +static XalanDOMString		ATTRNAME_TYPE;
  +static XalanDOMString		ATTRNAME_USE;
  +static XalanDOMString		ATTRNAME_USEATTRIBUTESETS;
  +static XalanDOMString		ATTRNAME_VALUE;
  +static XalanDOMString		ATTRNAME_VERSION;
  +static XalanDOMString		ATTRNAME_XMLNS;
  +static XalanDOMString		ATTRNAME_XMLNSDEF;
  +static XalanDOMString		ATTRNAME_XMLSPACE;
  +static XalanDOMString		ATTRNAME_ZERODIGIT;
  +
  +static XalanDOMString		ATTRVAL_ALPHABETIC;
  +static XalanDOMString		ATTRVAL_ANCESTOR;
  +static XalanDOMString		ATTRVAL_ANY;
  +static XalanDOMString		ATTRVAL_CASEORDER_LOWER;
  +static XalanDOMString		ATTRVAL_CASEORDER_UPPER;
  +static XalanDOMString		ATTRVAL_DATATYPE_NUMBER;
  +static XalanDOMString		ATTRVAL_DATATYPE_TEXT;
  +static XalanDOMString		ATTRVAL_DEFAULT_PREFIX;
  +static XalanDOMString		ATTRVAL_ID;
  +static XalanDOMString		ATTRVAL_INFINITY;
  +static XalanDOMString		ATTRVAL_MULTI;
  +static XalanDOMString		ATTRVAL_NAN;
  +static XalanDOMString		ATTRVAL_NO;
  +static XalanDOMString		ATTRVAL_ORDER_ASCENDING;
  +static XalanDOMString		ATTRVAL_ORDER_DESCENDING;
  +static XalanDOMString		ATTRVAL_OTHER;
  +static XalanDOMString		ATTRVAL_OUTPUT_METHOD_HTML;
  +static XalanDOMString		ATTRVAL_OUTPUT_METHOD_TEXT;
  +static XalanDOMString		ATTRVAL_OUTPUT_METHOD_XML;
  +static XalanDOMString		ATTRVAL_PARENT;
  +static XalanDOMString		ATTRVAL_PRESERVE;
  +static XalanDOMString		ATTRVAL_SINGLE;
  +static XalanDOMString		ATTRVAL_STRIP;
  +static XalanDOMString		ATTRVAL_THIS;
  +static XalanDOMString		ATTRVAL_YES;
  +static XalanDOMString		DEFAULT_DECIMAL_FORMAT;
  +static XalanDOMString		ELEMNAME_ANCHOR_STRING;
  +static XalanDOMString		ELEMNAME_ANY_STRING;
  +static XalanDOMString		ELEMNAME_APPLY_IMPORTS_STRING;
  +static XalanDOMString		ELEMNAME_APPLY_TEMPLATES_STRING;
  +static XalanDOMString		ELEMNAME_ARG_STRING;
  +static XalanDOMString		ELEMNAME_ATTRIBUTESET_STRING;
  +static XalanDOMString		ELEMNAME_ATTRIBUTE_STRING;
  +static XalanDOMString		ELEMNAME_CALLTEMPLATEARG_STRING;
  +static XalanDOMString		ELEMNAME_CALLTEMPLATE_STRING;
  +static XalanDOMString		ELEMNAME_CALL_STRING;
  +static XalanDOMString		ELEMNAME_CHILDREN_STRING;
  +static XalanDOMString		ELEMNAME_CHOOSE_STRING;
  +static XalanDOMString		ELEMNAME_COMMENT_STRING;
  +static XalanDOMString		ELEMNAME_COMPONENT_STRING;
  +static XalanDOMString		ELEMNAME_CONSTRUCT_STRING;
  +static XalanDOMString		ELEMNAME_CONTENTS_STRING;
  +static XalanDOMString		ELEMNAME_COPY_OF_STRING;
  +static XalanDOMString		ELEMNAME_COPY_STRING;
  +static XalanDOMString		ELEMNAME_COUNTERINCREMENT_STRING;
  +static XalanDOMString		ELEMNAME_COUNTERRESET_STRING;
  +static XalanDOMString		ELEMNAME_COUNTERSCOPE_STRING;
  +static XalanDOMString		ELEMNAME_COUNTERS_STRING;
  +static XalanDOMString		ELEMNAME_COUNTER_STRING;
  +static XalanDOMString		ELEMNAME_DECIMALFORMAT_STRING;
  +static XalanDOMString		ELEMNAME_DISPLAYIF_STRING;
  +static XalanDOMString		ELEMNAME_ELEMENT_STRING;
  +static XalanDOMString		ELEMNAME_EMPTY_STRING;
  +static XalanDOMString		ELEMNAME_EVAL_STRING;
  +static XalanDOMString		ELEMNAME_EXPECTEDCHILDREN_STRING;
  +static XalanDOMString		ELEMNAME_EXTENSIONHANDLER_STRING;
  +static XalanDOMString		ELEMNAME_EXTENSION_STRING;
  +static XalanDOMString		ELEMNAME_FALLBACK_STRING;
  +static XalanDOMString		ELEMNAME_FOREACH_STRING;
  +static XalanDOMString		ELEMNAME_HTML_STRING;
  +static XalanDOMString		ELEMNAME_IF_STRING;
  +static XalanDOMString		ELEMNAME_IMPORT_STRING;
  +static XalanDOMString		ELEMNAME_INCLUDE_STRING;
  +static XalanDOMString		ELEMNAME_KEY_STRING;
  +static XalanDOMString		ELEMNAME_LOCALE_STRING;
  +static XalanDOMString		ELEMNAME_MESSAGE_STRING;
  +static XalanDOMString		ELEMNAME_NSALIAS_STRING;
  +static XalanDOMString		ELEMNAME_NUMBER_STRING;
  +static XalanDOMString		ELEMNAME_OTHERWISE_STRING;
  +static XalanDOMString		ELEMNAME_OUTPUT_STRING;
  +static XalanDOMString		ELEMNAME_PARAMVARIABLE_STRING;
  +static XalanDOMString		ELEMNAME_PI_OLD_STRING;
  +static XalanDOMString		ELEMNAME_PI_STRING;
  +static XalanDOMString		ELEMNAME_PRESERVESPACE_STRING;
  +static XalanDOMString		ELEMNAME_ROOT_STRING;
  +static XalanDOMString		ELEMNAME_SCRIPT_STRING;
  +static XalanDOMString		ELEMNAME_SORT_STRING;
  +static XalanDOMString		ELEMNAME_STRIPSPACE_STRING;
  +static XalanDOMString		ELEMNAME_STYLESHEET_STRING;
  +static XalanDOMString		ELEMNAME_TARGETATTRIBUTE_STRING;
  +static XalanDOMString		ELEMNAME_TARGETCOMMENT_STRING;
  +static XalanDOMString		ELEMNAME_TARGETELEMENT_STRING;
  +static XalanDOMString		ELEMNAME_TARGETPI_STRING;
  +static XalanDOMString		ELEMNAME_TARGETTEXT_STRING;
  +static XalanDOMString		ELEMNAME_TEMPLATE_STRING;
  +static XalanDOMString		ELEMNAME_TEXT_STRING;
  +static XalanDOMString		ELEMNAME_TRANSFORM_STRING;
  +static XalanDOMString		ELEMNAME_URL_STRING;
  +static XalanDOMString		ELEMNAME_USE_STRING;
  +static XalanDOMString		ELEMNAME_VALUEOF_STRING;
  +static XalanDOMString		ELEMNAME_VARIABLE_STRING;
  +static XalanDOMString		ELEMNAME_WHEN_STRING;
  +static XalanDOMString		ELEMNAME_WITHPARAM_STRING;
  +static XalanDOMString		PSEUDONAME_ANY;
  +static XalanDOMString		PSEUDONAME_COMMENT;
  +static XalanDOMString		PSEUDONAME_OTHER;
  +static XalanDOMString		PSEUDONAME_PI;
  +static XalanDOMString		PSEUDONAME_ROOT;
  +static XalanDOMString		PSEUDONAME_TEXT;
  +
  +
  +
  +const XalanDOMString&		Constants::ATTRNAME_AMOUNT = ::ATTRNAME_AMOUNT;
  +const XalanDOMString&		Constants::ATTRNAME_ANCESTOR = ::ATTRNAME_ANCESTOR;
  +const XalanDOMString&		Constants::ATTRNAME_ARCHIVE = ::ATTRNAME_ARCHIVE;
  +const XalanDOMString&		Constants::ATTRNAME_ATTRIBUTE = ::ATTRNAME_ATTRIBUTE;
  +const XalanDOMString&		Constants::ATTRNAME_ATTRIBUTE_SET = ::ATTRNAME_ATTRIBUTE_SET;
  +const XalanDOMString&		Constants::ATTRNAME_CASEORDER = ::ATTRNAME_CASEORDER;
  +const XalanDOMString&		Constants::ATTRNAME_CLASS = ::ATTRNAME_CLASS;
  +const XalanDOMString&		Constants::ATTRNAME_CLASSID = ::ATTRNAME_CLASSID;
  +const XalanDOMString&		Constants::ATTRNAME_CODEBASE = ::ATTRNAME_CODEBASE;
  +const XalanDOMString&		Constants::ATTRNAME_CODETYPE = ::ATTRNAME_CODETYPE;
  +const XalanDOMString&		Constants::ATTRNAME_CONDITION = ::ATTRNAME_CONDITION;
  +const XalanDOMString&		Constants::ATTRNAME_COPYTYPE = ::ATTRNAME_COPYTYPE;
  +const XalanDOMString&		Constants::ATTRNAME_COUNT = ::ATTRNAME_COUNT;
  +const XalanDOMString&		Constants::ATTRNAME_DATATYPE = ::ATTRNAME_DATATYPE;
  +const XalanDOMString&		Constants::ATTRNAME_DECIMALSEPARATOR = ::ATTRNAME_DECIMALSEPARATOR;
  +const XalanDOMString&		Constants::ATTRNAME_DEFAULT = ::ATTRNAME_DEFAULT;
  +const XalanDOMString&		Constants::ATTRNAME_DEFAULTSPACE = ::ATTRNAME_DEFAULTSPACE;
  +const XalanDOMString&		Constants::ATTRNAME_DEPTH = ::ATTRNAME_DEPTH;
  +const XalanDOMString&		Constants::ATTRNAME_DIGIT = ::ATTRNAME_DIGIT;
  +const XalanDOMString&		Constants::ATTRNAME_DIGITGROUPSEP = ::ATTRNAME_DIGITGROUPSEP;
  +const XalanDOMString&		Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING  = ::ATTRNAME_DISABLE_OUTPUT_ESCAPING;
  +const XalanDOMString&		Constants::ATTRNAME_ELEMENT = ::ATTRNAME_ELEMENT;
  +const XalanDOMString&		Constants::ATTRNAME_ELEMENTS = ::ATTRNAME_ELEMENTS;
  +const XalanDOMString&		Constants::ATTRNAME_EXCLUDE_RESULT_PREFIXES = ::ATTRNAME_EXCLUDE_RESULT_PREFIXES;
  +const XalanDOMString&		Constants::ATTRNAME_EXPR = ::ATTRNAME_EXPR;
  +const XalanDOMString&		Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES = ::ATTRNAME_EXTENSIONELEMENTPREFIXES;
  +const XalanDOMString&		Constants::ATTRNAME_FORMAT = ::ATTRNAME_FORMAT;
  +const XalanDOMString&		Constants::ATTRNAME_FROM = ::ATTRNAME_FROM;
  +const XalanDOMString&		Constants::ATTRNAME_GROUPINGSEPARATOR = ::ATTRNAME_GROUPINGSEPARATOR;
  +const XalanDOMString&		Constants::ATTRNAME_GROUPINGSIZE = ::ATTRNAME_GROUPINGSIZE;
  +const XalanDOMString&		Constants::ATTRNAME_HREF = ::ATTRNAME_HREF;
  +const XalanDOMString&		Constants::ATTRNAME_ID = ::ATTRNAME_ID;
  +const XalanDOMString&		Constants::ATTRNAME_IMPORTANCE = ::ATTRNAME_IMPORTANCE;
  +const XalanDOMString&		Constants::ATTRNAME_INDENTRESULT = ::ATTRNAME_INDENTRESULT;
  +const XalanDOMString&		Constants::ATTRNAME_INFINITY = ::ATTRNAME_INFINITY;
  +const XalanDOMString&		Constants::ATTRNAME_LANG = ::ATTRNAME_LANG;
  +const XalanDOMString&		Constants::ATTRNAME_LETTERVALUE = ::ATTRNAME_LETTERVALUE;
  +const XalanDOMString&		Constants::ATTRNAME_LEVEL = ::ATTRNAME_LEVEL;
  +const XalanDOMString&		Constants::ATTRNAME_MATCH = ::ATTRNAME_MATCH;
  +const XalanDOMString&		Constants::ATTRNAME_METHOD = ::ATTRNAME_METHOD;
  +const XalanDOMString&		Constants::ATTRNAME_MINUSSIGN = ::ATTRNAME_MINUSSIGN;
  +const XalanDOMString&		Constants::ATTRNAME_MODE = ::ATTRNAME_MODE;
  +const XalanDOMString&		Constants::ATTRNAME_NAME = ::ATTRNAME_NAME;
  +const XalanDOMString&		Constants::ATTRNAME_NAMESPACE = ::ATTRNAME_NAMESPACE;
  +const XalanDOMString&		Constants::ATTRNAME_NAN = ::ATTRNAME_NAN;
  +const XalanDOMString&		Constants::ATTRNAME_NDIGITSPERGROUP = ::ATTRNAME_NDIGITSPERGROUP;
  +const XalanDOMString&		Constants::ATTRNAME_NS = ::ATTRNAME_NS;
  +const XalanDOMString&		Constants::ATTRNAME_ONLY = ::ATTRNAME_ONLY;
  +const XalanDOMString&		Constants::ATTRNAME_ORDER = ::ATTRNAME_ORDER;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS  = ::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC = ::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM = ::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_ENCODING = ::ATTRNAME_OUTPUT_ENCODING;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_INDENT = ::ATTRNAME_OUTPUT_INDENT;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_MEDIATYPE = ::ATTRNAME_OUTPUT_MEDIATYPE;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_METHOD = ::ATTRNAME_OUTPUT_METHOD;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_OMITXMLDECL = ::ATTRNAME_OUTPUT_OMITXMLDECL;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_STANDALONE  = ::ATTRNAME_OUTPUT_STANDALONE;
  +const XalanDOMString&		Constants::ATTRNAME_OUTPUT_VERSION = ::ATTRNAME_OUTPUT_VERSION;
  +const XalanDOMString&		Constants::ATTRNAME_PATTERNSEPARATOR = ::ATTRNAME_PATTERNSEPARATOR;
  +const XalanDOMString&		Constants::ATTRNAME_PERCENT = ::ATTRNAME_PERCENT;
  +const XalanDOMString&		Constants::ATTRNAME_PERMILLE = ::ATTRNAME_PERMILLE;
  +const XalanDOMString&		Constants::ATTRNAME_PRIORITY = ::ATTRNAME_PRIORITY;
  +const XalanDOMString&		Constants::ATTRNAME_REFID = ::ATTRNAME_REFID;
  +const XalanDOMString&		Constants::ATTRNAME_RESULTNS = ::ATTRNAME_RESULTNS;
  +const XalanDOMString&		Constants::ATTRNAME_RESULT_PREFIX = ::ATTRNAME_RESULT_PREFIX;
  +const XalanDOMString&		Constants::ATTRNAME_SELECT = ::ATTRNAME_SELECT;
  +const XalanDOMString&		Constants::ATTRNAME_SEQUENCESRC = ::ATTRNAME_SEQUENCESRC;
  +const XalanDOMString&		Constants::ATTRNAME_STYLE = ::ATTRNAME_STYLE;
  +const XalanDOMString&		Constants::ATTRNAME_STYLESHEET_PREFIX = ::ATTRNAME_STYLESHEET_PREFIX;
  +const XalanDOMString&		Constants::ATTRNAME_TERMINATE = ::ATTRNAME_TERMINATE;
  +const XalanDOMString&		Constants::ATTRNAME_TEST = ::ATTRNAME_TEST;
  +const XalanDOMString&		Constants::ATTRNAME_TOSTRING = ::ATTRNAME_TOSTRING;
  +const XalanDOMString&		Constants::ATTRNAME_TYPE = ::ATTRNAME_TYPE;
  +const XalanDOMString&		Constants::ATTRNAME_USE = ::ATTRNAME_USE;
  +const XalanDOMString&		Constants::ATTRNAME_USEATTRIBUTESETS = ::ATTRNAME_USEATTRIBUTESETS;
  +const XalanDOMString&		Constants::ATTRNAME_VALUE = ::ATTRNAME_VALUE;
  +const XalanDOMString&		Constants::ATTRNAME_VERSION = ::ATTRNAME_VERSION;
  +const XalanDOMString&		Constants::ATTRNAME_XMLNS = ::ATTRNAME_XMLNS;
  +const XalanDOMString&		Constants::ATTRNAME_XMLNSDEF = ::ATTRNAME_XMLNSDEF;
  +const XalanDOMString&		Constants::ATTRNAME_XMLSPACE = ::ATTRNAME_XMLSPACE;
  +const XalanDOMString&		Constants::ATTRNAME_ZERODIGIT = ::ATTRNAME_ZERODIGIT;
  +const XalanDOMString&		Constants::ATTRVAL_ALPHABETIC = ::ATTRVAL_ALPHABETIC;
  +const XalanDOMString&		Constants::ATTRVAL_ANCESTOR = ::ATTRVAL_ANCESTOR;
  +const XalanDOMString&		Constants::ATTRVAL_ANY = ::ATTRVAL_ANY;
  +const XalanDOMString&		Constants::ATTRVAL_CASEORDER_LOWER = ::ATTRVAL_CASEORDER_LOWER;
  +const XalanDOMString&		Constants::ATTRVAL_CASEORDER_UPPER = ::ATTRVAL_CASEORDER_UPPER;
  +const XalanDOMString&		Constants::ATTRVAL_DATATYPE_NUMBER = ::ATTRVAL_DATATYPE_NUMBER;
  +const XalanDOMString&		Constants::ATTRVAL_DATATYPE_TEXT = ::ATTRVAL_DATATYPE_TEXT;
  +const XalanDOMString&		Constants::ATTRVAL_DEFAULT_PREFIX = ::ATTRVAL_DEFAULT_PREFIX;
  +const XalanDOMString&		Constants::ATTRVAL_ID = ::ATTRVAL_ID;
  +const XalanDOMString&		Constants::ATTRVAL_INFINITY = ::ATTRVAL_INFINITY;
  +const XalanDOMString&		Constants::ATTRVAL_MULTI = ::ATTRVAL_MULTI;
  +const XalanDOMString&		Constants::ATTRVAL_NAN = ::ATTRVAL_NAN;
  +const XalanDOMString&		Constants::ATTRVAL_NO = ::ATTRVAL_NO;
  +const XalanDOMString&		Constants::ATTRVAL_ORDER_ASCENDING = ::ATTRVAL_ORDER_ASCENDING;
  +const XalanDOMString&		Constants::ATTRVAL_ORDER_DESCENDING = ::ATTRVAL_ORDER_DESCENDING;
  +const XalanDOMString&		Constants::ATTRVAL_OTHER = ::ATTRVAL_OTHER;
  +const XalanDOMString&		Constants::ATTRVAL_OUTPUT_METHOD_HTML = ::ATTRVAL_OUTPUT_METHOD_HTML;
  +const XalanDOMString&		Constants::ATTRVAL_OUTPUT_METHOD_TEXT = ::ATTRVAL_OUTPUT_METHOD_TEXT;
  +const XalanDOMString&		Constants::ATTRVAL_OUTPUT_METHOD_XML = ::ATTRVAL_OUTPUT_METHOD_XML;
  +const XalanDOMString&		Constants::ATTRVAL_PARENT = ::ATTRVAL_PARENT;
  +const XalanDOMString&		Constants::ATTRVAL_PRESERVE = ::ATTRVAL_PRESERVE;
  +const XalanDOMString&		Constants::ATTRVAL_SINGLE = ::ATTRVAL_SINGLE;
  +const XalanDOMString&		Constants::ATTRVAL_STRIP = ::ATTRVAL_STRIP;
  +const XalanDOMString&		Constants::ATTRVAL_THIS = ::ATTRVAL_THIS;
  +const XalanDOMString&		Constants::ATTRVAL_YES = ::ATTRVAL_YES;
  +const XalanDOMString&		Constants::DEFAULT_DECIMAL_FORMAT = ::DEFAULT_DECIMAL_FORMAT;
  +const XalanDOMString&		Constants::ELEMNAME_ANCHOR_STRING = ::ELEMNAME_ANCHOR_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ANY_STRING = ::ELEMNAME_ANY_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_APPLY_IMPORTS_STRING = ::ELEMNAME_APPLY_IMPORTS_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_APPLY_TEMPLATES_STRING = ::ELEMNAME_APPLY_TEMPLATES_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ARG_STRING = ::ELEMNAME_ARG_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ATTRIBUTESET_STRING = ::ELEMNAME_ATTRIBUTESET_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ATTRIBUTE_STRING = ::ELEMNAME_ATTRIBUTE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CALLTEMPLATEARG_STRING = ::ELEMNAME_CALLTEMPLATEARG_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CALLTEMPLATE_STRING = ::ELEMNAME_CALLTEMPLATE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CALL_STRING = ::ELEMNAME_CALL_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CHILDREN_STRING = ::ELEMNAME_CHILDREN_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CHOOSE_STRING = ::ELEMNAME_CHOOSE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COMMENT_STRING = ::ELEMNAME_COMMENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COMPONENT_STRING = ::ELEMNAME_COMPONENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CONSTRUCT_STRING = ::ELEMNAME_CONSTRUCT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_CONTENTS_STRING = ::ELEMNAME_CONTENTS_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COPY_OF_STRING = ::ELEMNAME_COPY_OF_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COPY_STRING = ::ELEMNAME_COPY_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COUNTERINCREMENT_STRING = ::ELEMNAME_COUNTERINCREMENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COUNTERRESET_STRING = ::ELEMNAME_COUNTERRESET_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COUNTERSCOPE_STRING = ::ELEMNAME_COUNTERSCOPE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COUNTERS_STRING = ::ELEMNAME_COUNTERS_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_COUNTER_STRING = ::ELEMNAME_COUNTER_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_DECIMALFORMAT_STRING = ::ELEMNAME_DECIMALFORMAT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_DISPLAYIF_STRING = ::ELEMNAME_DISPLAYIF_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ELEMENT_STRING = ::ELEMNAME_ELEMENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_EMPTY_STRING = ::ELEMNAME_EMPTY_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_EVAL_STRING = ::ELEMNAME_EVAL_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_EXPECTEDCHILDREN_STRING = ::ELEMNAME_EXPECTEDCHILDREN_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_EXTENSIONHANDLER_STRING = ::ELEMNAME_EXTENSIONHANDLER_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_EXTENSION_STRING = ::ELEMNAME_EXTENSION_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_FALLBACK_STRING = ::ELEMNAME_FALLBACK_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_FOREACH_STRING = ::ELEMNAME_FOREACH_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_HTML_STRING = ::ELEMNAME_HTML_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_IF_STRING = ::ELEMNAME_IF_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_IMPORT_STRING = ::ELEMNAME_IMPORT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_INCLUDE_STRING = ::ELEMNAME_INCLUDE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_KEY_STRING = ::ELEMNAME_KEY_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_LOCALE_STRING = ::ELEMNAME_LOCALE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_MESSAGE_STRING = ::ELEMNAME_MESSAGE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_NSALIAS_STRING = ::ELEMNAME_NSALIAS_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_NUMBER_STRING = ::ELEMNAME_NUMBER_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_OTHERWISE_STRING = ::ELEMNAME_OTHERWISE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_OUTPUT_STRING = ::ELEMNAME_OUTPUT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_PARAMVARIABLE_STRING = ::ELEMNAME_PARAMVARIABLE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_PI_OLD_STRING = ::ELEMNAME_PI_OLD_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_PI_STRING = ::ELEMNAME_PI_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_PRESERVESPACE_STRING = ::ELEMNAME_PRESERVESPACE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_ROOT_STRING = ::ELEMNAME_ROOT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_SCRIPT_STRING = ::ELEMNAME_SCRIPT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_SORT_STRING = ::ELEMNAME_SORT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_STRIPSPACE_STRING = ::ELEMNAME_STRIPSPACE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_STYLESHEET_STRING = ::ELEMNAME_STYLESHEET_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TARGETATTRIBUTE_STRING = ::ELEMNAME_TARGETATTRIBUTE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TARGETCOMMENT_STRING = ::ELEMNAME_TARGETCOMMENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TARGETELEMENT_STRING = ::ELEMNAME_TARGETELEMENT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TARGETPI_STRING = ::ELEMNAME_TARGETPI_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TARGETTEXT_STRING = ::ELEMNAME_TARGETTEXT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TEMPLATE_STRING = ::ELEMNAME_TEMPLATE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TEXT_STRING = ::ELEMNAME_TEXT_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_TRANSFORM_STRING = ::ELEMNAME_TRANSFORM_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_URL_STRING = ::ELEMNAME_URL_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_USE_STRING = ::ELEMNAME_USE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_VALUEOF_STRING = ::ELEMNAME_VALUEOF_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_VARIABLE_STRING = ::ELEMNAME_VARIABLE_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_WHEN_STRING = ::ELEMNAME_WHEN_STRING;
  +const XalanDOMString&		Constants::ELEMNAME_WITHPARAM_STRING = ::ELEMNAME_WITHPARAM_STRING;
  +const XalanDOMString&		Constants::PSEUDONAME_ANY = ::PSEUDONAME_ANY;
  +const XalanDOMString&		Constants::PSEUDONAME_COMMENT = ::PSEUDONAME_COMMENT;
  +const XalanDOMString&		Constants::PSEUDONAME_OTHER = ::PSEUDONAME_OTHER;
  +const XalanDOMString&		Constants::PSEUDONAME_PI = ::PSEUDONAME_PI;
  +const XalanDOMString&		Constants::PSEUDONAME_ROOT = ::PSEUDONAME_ROOT;
  +const XalanDOMString&		Constants::PSEUDONAME_TEXT = ::PSEUDONAME_TEXT;
  +
  +
  +
  +void
  +Constants::initialize()
  +{
  +	::ATTRNAME_AMOUNT = XALAN_STATIC_UCODE_STRING("amount");
  +	::ATTRNAME_ANCESTOR = XALAN_STATIC_UCODE_STRING("ancestor");
  +	::ATTRNAME_ARCHIVE = XALAN_STATIC_UCODE_STRING("archive");
  +	::ATTRNAME_ATTRIBUTE = XALAN_STATIC_UCODE_STRING("attribute");
  +	::ATTRNAME_ATTRIBUTE_SET = XALAN_STATIC_UCODE_STRING("attribute-set");
  +	::ATTRNAME_CASEORDER = XALAN_STATIC_UCODE_STRING("case-order");
  +	::ATTRNAME_CLASS = XALAN_STATIC_UCODE_STRING("class");
  +	::ATTRNAME_CLASSID = XALAN_STATIC_UCODE_STRING("classid");
  +	::ATTRNAME_CODEBASE = XALAN_STATIC_UCODE_STRING("codebase");
  +	::ATTRNAME_CODETYPE = XALAN_STATIC_UCODE_STRING("type");
  +	::ATTRNAME_CONDITION = XALAN_STATIC_UCODE_STRING("condition");
  +	::ATTRNAME_COPYTYPE = XALAN_STATIC_UCODE_STRING("copy-type");
  +	::ATTRNAME_COUNT = XALAN_STATIC_UCODE_STRING("count");
  +	::ATTRNAME_DATATYPE = XALAN_STATIC_UCODE_STRING("data-type");
  +	::ATTRNAME_DECIMALSEPARATOR = XALAN_STATIC_UCODE_STRING("decimal-separator");
  +	::ATTRNAME_DEFAULT = XALAN_STATIC_UCODE_STRING("default");
  +	::ATTRNAME_DEFAULTSPACE = XALAN_STATIC_UCODE_STRING("default-space");
  +	::ATTRNAME_DEPTH = XALAN_STATIC_UCODE_STRING("with-children");
  +	::ATTRNAME_DIGIT = XALAN_STATIC_UCODE_STRING("digit");
  +	::ATTRNAME_DIGITGROUPSEP = XALAN_STATIC_UCODE_STRING("digit-group-sep");
  +	::ATTRNAME_DISABLE_OUTPUT_ESCAPING  = XALAN_STATIC_UCODE_STRING("disable-output-escaping");
  +	::ATTRNAME_ELEMENT = XALAN_STATIC_UCODE_STRING("element");
  +	::ATTRNAME_ELEMENTS = XALAN_STATIC_UCODE_STRING("elements");
  +	::ATTRNAME_EXCLUDE_RESULT_PREFIXES = XALAN_STATIC_UCODE_STRING("exclude-result-prefixes");
  +	::ATTRNAME_EXPR = XALAN_STATIC_UCODE_STRING("expr");
  +	::ATTRNAME_EXTENSIONELEMENTPREFIXES = XALAN_STATIC_UCODE_STRING("extension-element-prefixes");
  +	::ATTRNAME_FORMAT = XALAN_STATIC_UCODE_STRING("format");
  +	::ATTRNAME_FROM = XALAN_STATIC_UCODE_STRING("from");
  +	::ATTRNAME_GROUPINGSEPARATOR = XALAN_STATIC_UCODE_STRING("grouping-separator");
  +	::ATTRNAME_GROUPINGSIZE = XALAN_STATIC_UCODE_STRING("grouping-size");
  +	::ATTRNAME_HREF = XALAN_STATIC_UCODE_STRING("href");
  +	::ATTRNAME_ID = XALAN_STATIC_UCODE_STRING("id");
  +	::ATTRNAME_IMPORTANCE = XALAN_STATIC_UCODE_STRING("importance");
  +	::ATTRNAME_INDENTRESULT = XALAN_STATIC_UCODE_STRING("indent-result");
  +	::ATTRNAME_INFINITY = XALAN_STATIC_UCODE_STRING("infinity");
  +	::ATTRNAME_LANG = XALAN_STATIC_UCODE_STRING("lang");
  +	::ATTRNAME_LETTERVALUE = XALAN_STATIC_UCODE_STRING("letter-value");
  +	::ATTRNAME_LEVEL = XALAN_STATIC_UCODE_STRING("level");
  +	::ATTRNAME_MATCH = XALAN_STATIC_UCODE_STRING("match");
  +	::ATTRNAME_METHOD = XALAN_STATIC_UCODE_STRING("calls");
  +	::ATTRNAME_MINUSSIGN = XALAN_STATIC_UCODE_STRING("minus-sign");
  +	::ATTRNAME_MODE = XALAN_STATIC_UCODE_STRING("mode");
  +	::ATTRNAME_NAME = XALAN_STATIC_UCODE_STRING("name");
  +	::ATTRNAME_NAMESPACE = XALAN_STATIC_UCODE_STRING("namespace");
  +	::ATTRNAME_NAN = XALAN_STATIC_UCODE_STRING("NaN");
  +	::ATTRNAME_NDIGITSPERGROUP = XALAN_STATIC_UCODE_STRING("n-digits-per-group");
  +	::ATTRNAME_NS = XALAN_STATIC_UCODE_STRING("ns");
  +	::ATTRNAME_ONLY = XALAN_STATIC_UCODE_STRING("only");
  +	::ATTRNAME_ORDER = XALAN_STATIC_UCODE_STRING("order");
  +	::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS  = XALAN_STATIC_UCODE_STRING("cdata-section-elements");
  +	::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC = XALAN_STATIC_UCODE_STRING("doctype-public");
  +	::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM = XALAN_STATIC_UCODE_STRING("doctype-system");
  +	::ATTRNAME_OUTPUT_ENCODING = XALAN_STATIC_UCODE_STRING("encoding");
  +	::ATTRNAME_OUTPUT_INDENT = XALAN_STATIC_UCODE_STRING("indent");
  +	::ATTRNAME_OUTPUT_MEDIATYPE = XALAN_STATIC_UCODE_STRING("media-type");
  +	::ATTRNAME_OUTPUT_METHOD = XALAN_STATIC_UCODE_STRING("method");
  +	::ATTRNAME_OUTPUT_OMITXMLDECL = XALAN_STATIC_UCODE_STRING("omit-xml-declaration");
  +	::ATTRNAME_OUTPUT_STANDALONE  = XALAN_STATIC_UCODE_STRING("standalone");
  +	::ATTRNAME_OUTPUT_VERSION = XALAN_STATIC_UCODE_STRING("version");
  +	::ATTRNAME_PATTERNSEPARATOR = XALAN_STATIC_UCODE_STRING("pattern-separator");
  +	::ATTRNAME_PERCENT = XALAN_STATIC_UCODE_STRING("percent");
  +	::ATTRNAME_PERMILLE = XALAN_STATIC_UCODE_STRING("per-mille");
  +	::ATTRNAME_PRIORITY = XALAN_STATIC_UCODE_STRING("priority");
  +	::ATTRNAME_REFID = XALAN_STATIC_UCODE_STRING("refID");
  +	::ATTRNAME_RESULTNS = XALAN_STATIC_UCODE_STRING("result-ns");
  +	::ATTRNAME_RESULT_PREFIX = XALAN_STATIC_UCODE_STRING("result-prefix");
  +	::ATTRNAME_SELECT = XALAN_STATIC_UCODE_STRING("select");
  +	::ATTRNAME_SEQUENCESRC = XALAN_STATIC_UCODE_STRING("sequence-src");
  +	::ATTRNAME_STYLE = XALAN_STATIC_UCODE_STRING("style");
  +	::ATTRNAME_STYLESHEET_PREFIX = XALAN_STATIC_UCODE_STRING("stylesheet-prefix");
  +	::ATTRNAME_TERMINATE = XALAN_STATIC_UCODE_STRING("terminate");
  +	::ATTRNAME_TEST = XALAN_STATIC_UCODE_STRING("test");
  +	::ATTRNAME_TOSTRING = XALAN_STATIC_UCODE_STRING("to-string");
  +	::ATTRNAME_TYPE = XALAN_STATIC_UCODE_STRING("type");
  +	::ATTRNAME_USE = XALAN_STATIC_UCODE_STRING("use");
  +	::ATTRNAME_USEATTRIBUTESETS = XALAN_STATIC_UCODE_STRING("use-attribute-sets");
  +	::ATTRNAME_VALUE = XALAN_STATIC_UCODE_STRING("value");
  +	::ATTRNAME_VERSION = XALAN_STATIC_UCODE_STRING("version");
  +	::ATTRNAME_XMLNS = XALAN_STATIC_UCODE_STRING("xmlns:");
  +	::ATTRNAME_XMLNSDEF = XALAN_STATIC_UCODE_STRING("xmlns");
  +	::ATTRNAME_XMLSPACE = XALAN_STATIC_UCODE_STRING("xml:space");
  +	::ATTRNAME_ZERODIGIT = XALAN_STATIC_UCODE_STRING("zero-digit");
  +
  +	::ATTRVAL_ALPHABETIC = XALAN_STATIC_UCODE_STRING("alphabetic");
  +	::ATTRVAL_ANCESTOR = XALAN_STATIC_UCODE_STRING("ancestor");
  +	::ATTRVAL_ANY = XALAN_STATIC_UCODE_STRING("any");
  +	::ATTRVAL_CASEORDER_LOWER = XALAN_STATIC_UCODE_STRING("lower-first");
  +	::ATTRVAL_CASEORDER_UPPER = XALAN_STATIC_UCODE_STRING("upper-first");
  +	::ATTRVAL_DATATYPE_NUMBER = XALAN_STATIC_UCODE_STRING("number");
  +	::ATTRVAL_DATATYPE_TEXT = XALAN_STATIC_UCODE_STRING("text");
  +	::ATTRVAL_DEFAULT_PREFIX = XALAN_STATIC_UCODE_STRING("#default");
  +	::ATTRVAL_ID = XALAN_STATIC_UCODE_STRING("id");
  +	::ATTRVAL_INFINITY = XALAN_STATIC_UCODE_STRING("Infinity");
  +	::ATTRVAL_MULTI = XALAN_STATIC_UCODE_STRING("multiple");
  +	::ATTRVAL_NAN = XALAN_STATIC_UCODE_STRING("NaN");
  +	::ATTRVAL_NO = XALAN_STATIC_UCODE_STRING("no");
  +	::ATTRVAL_ORDER_ASCENDING = XALAN_STATIC_UCODE_STRING("ascending");
  +	::ATTRVAL_ORDER_DESCENDING = XALAN_STATIC_UCODE_STRING("descending");
  +	::ATTRVAL_OTHER = XALAN_STATIC_UCODE_STRING("other");
  +	::ATTRVAL_OUTPUT_METHOD_HTML = XALAN_STATIC_UCODE_STRING("html");
  +	::ATTRVAL_OUTPUT_METHOD_TEXT = XALAN_STATIC_UCODE_STRING("text");
  +	::ATTRVAL_OUTPUT_METHOD_XML = XALAN_STATIC_UCODE_STRING("xml");
  +	::ATTRVAL_PARENT = XALAN_STATIC_UCODE_STRING("..");
  +	::ATTRVAL_PRESERVE = XALAN_STATIC_UCODE_STRING("preserve");
  +	::ATTRVAL_SINGLE = XALAN_STATIC_UCODE_STRING("single");
  +	::ATTRVAL_STRIP = XALAN_STATIC_UCODE_STRING("strip");
  +	::ATTRVAL_THIS = XALAN_STATIC_UCODE_STRING(".");
  +	::ATTRVAL_YES = XALAN_STATIC_UCODE_STRING("yes");
  +	::DEFAULT_DECIMAL_FORMAT = XALAN_STATIC_UCODE_STRING("#default");
  +	::ELEMNAME_ANCHOR_STRING = XALAN_STATIC_UCODE_STRING("anchor");
  +	::ELEMNAME_ANY_STRING = XALAN_STATIC_UCODE_STRING("any");
  +	::ELEMNAME_APPLY_IMPORTS_STRING = XALAN_STATIC_UCODE_STRING("apply-imports");
  +	::ELEMNAME_APPLY_TEMPLATES_STRING = XALAN_STATIC_UCODE_STRING("apply-templates");
  +	::ELEMNAME_ARG_STRING = XALAN_STATIC_UCODE_STRING("arg");
  +	::ELEMNAME_ATTRIBUTESET_STRING = XALAN_STATIC_UCODE_STRING("attribute-set");
  +	::ELEMNAME_ATTRIBUTE_STRING = XALAN_STATIC_UCODE_STRING("attribute");
  +	::ELEMNAME_CALLTEMPLATEARG_STRING = XALAN_STATIC_UCODE_STRING("invoke-arg");
  +	::ELEMNAME_CALLTEMPLATE_STRING = XALAN_STATIC_UCODE_STRING("call-template");
  +	::ELEMNAME_CALL_STRING = XALAN_STATIC_UCODE_STRING("call");
  +	::ELEMNAME_CHILDREN_STRING = XALAN_STATIC_UCODE_STRING("children");
  +	::ELEMNAME_CHOOSE_STRING = XALAN_STATIC_UCODE_STRING("choose");
  +	::ELEMNAME_COMMENT_STRING = XALAN_STATIC_UCODE_STRING("comment");
  +	::ELEMNAME_COMPONENT_STRING = XALAN_STATIC_UCODE_STRING("component");
  +	::ELEMNAME_CONSTRUCT_STRING = XALAN_STATIC_UCODE_STRING("construct");
  +	::ELEMNAME_CONTENTS_STRING = XALAN_STATIC_UCODE_STRING("contents");
  +	::ELEMNAME_COPY_OF_STRING = XALAN_STATIC_UCODE_STRING("copy-of");
  +	::ELEMNAME_COPY_STRING = XALAN_STATIC_UCODE_STRING("copy");
  +	::ELEMNAME_COUNTERINCREMENT_STRING = XALAN_STATIC_UCODE_STRING("counter-increment");
  +	::ELEMNAME_COUNTERRESET_STRING = XALAN_STATIC_UCODE_STRING("counter-reset");
  +	::ELEMNAME_COUNTERSCOPE_STRING = XALAN_STATIC_UCODE_STRING("counter-scope");
  +	::ELEMNAME_COUNTERS_STRING = XALAN_STATIC_UCODE_STRING("counters");
  +	::ELEMNAME_COUNTER_STRING = XALAN_STATIC_UCODE_STRING("counter");
  +	::ELEMNAME_DECIMALFORMAT_STRING = XALAN_STATIC_UCODE_STRING("decimal-format");
  +	::ELEMNAME_DISPLAYIF_STRING = XALAN_STATIC_UCODE_STRING("display-if");
  +	::ELEMNAME_ELEMENT_STRING = XALAN_STATIC_UCODE_STRING("element");
  +	::ELEMNAME_EMPTY_STRING = XALAN_STATIC_UCODE_STRING("empty");
  +	::ELEMNAME_EVAL_STRING = XALAN_STATIC_UCODE_STRING("eval");
  +	::ELEMNAME_EXPECTEDCHILDREN_STRING = XALAN_STATIC_UCODE_STRING("expectedchildren");
  +	::ELEMNAME_EXTENSIONHANDLER_STRING = XALAN_STATIC_UCODE_STRING("code-dispatcher");
  +	::ELEMNAME_EXTENSION_STRING = XALAN_STATIC_UCODE_STRING("functions");
  +	::ELEMNAME_FALLBACK_STRING = XALAN_STATIC_UCODE_STRING("fallback");
  +	::ELEMNAME_FOREACH_STRING = XALAN_STATIC_UCODE_STRING("for-each");
  +	::ELEMNAME_HTML_STRING = XALAN_STATIC_UCODE_STRING("HTML");
  +	::ELEMNAME_IF_STRING = XALAN_STATIC_UCODE_STRING("if");
  +	::ELEMNAME_IMPORT_STRING = XALAN_STATIC_UCODE_STRING("import");
  +	::ELEMNAME_INCLUDE_STRING = XALAN_STATIC_UCODE_STRING("include");
  +	::ELEMNAME_KEY_STRING = XALAN_STATIC_UCODE_STRING("key");
  +	::ELEMNAME_LOCALE_STRING = XALAN_STATIC_UCODE_STRING("locale");
  +	::ELEMNAME_MESSAGE_STRING = XALAN_STATIC_UCODE_STRING("message");
  +	::ELEMNAME_NSALIAS_STRING = XALAN_STATIC_UCODE_STRING("namespace-alias");
  +	::ELEMNAME_NUMBER_STRING = XALAN_STATIC_UCODE_STRING("number");
  +	::ELEMNAME_OTHERWISE_STRING = XALAN_STATIC_UCODE_STRING("otherwise");
  +	::ELEMNAME_OUTPUT_STRING = XALAN_STATIC_UCODE_STRING("output");
  +	::ELEMNAME_PARAMVARIABLE_STRING = XALAN_STATIC_UCODE_STRING("param");
  +	::ELEMNAME_PI_OLD_STRING = XALAN_STATIC_UCODE_STRING("pi");
  +	::ELEMNAME_PI_STRING = XALAN_STATIC_UCODE_STRING("processing-instruction");
  +	::ELEMNAME_PRESERVESPACE_STRING = XALAN_STATIC_UCODE_STRING("preserve-space");
  +	::ELEMNAME_ROOT_STRING = XALAN_STATIC_UCODE_STRING("root");
  +	::ELEMNAME_SCRIPT_STRING = XALAN_STATIC_UCODE_STRING("script");
  +	::ELEMNAME_SORT_STRING = XALAN_STATIC_UCODE_STRING("sort");
  +	::ELEMNAME_STRIPSPACE_STRING = XALAN_STATIC_UCODE_STRING("strip-space");
  +	::ELEMNAME_STYLESHEET_STRING = XALAN_STATIC_UCODE_STRING("stylesheet");
  +	::ELEMNAME_TARGETATTRIBUTE_STRING = XALAN_STATIC_UCODE_STRING("target-attribute");
  +	::ELEMNAME_TARGETCOMMENT_STRING = XALAN_STATIC_UCODE_STRING("target-comment");
  +	::ELEMNAME_TARGETELEMENT_STRING = XALAN_STATIC_UCODE_STRING("target-element");
  +	::ELEMNAME_TARGETPI_STRING = XALAN_STATIC_UCODE_STRING("target-pi");
  +	::ELEMNAME_TARGETTEXT_STRING = XALAN_STATIC_UCODE_STRING("target-text");
  +	::ELEMNAME_TEMPLATE_STRING = XALAN_STATIC_UCODE_STRING("template");
  +	::ELEMNAME_TEXT_STRING = XALAN_STATIC_UCODE_STRING("text");
  +	::ELEMNAME_TRANSFORM_STRING = XALAN_STATIC_UCODE_STRING("transform");
  +	::ELEMNAME_URL_STRING = XALAN_STATIC_UCODE_STRING("uri");
  +	::ELEMNAME_USE_STRING = XALAN_STATIC_UCODE_STRING("use");
  +	::ELEMNAME_VALUEOF_STRING = XALAN_STATIC_UCODE_STRING("value-of");
  +	::ELEMNAME_VARIABLE_STRING = XALAN_STATIC_UCODE_STRING("variable");
  +	::ELEMNAME_WHEN_STRING = XALAN_STATIC_UCODE_STRING("when");
  +	::ELEMNAME_WITHPARAM_STRING = XALAN_STATIC_UCODE_STRING("with-param");
  +	::PSEUDONAME_ANY = XALAN_STATIC_UCODE_STRING("*");
  +	::PSEUDONAME_COMMENT = XALAN_STATIC_UCODE_STRING("#comment");
  +	::PSEUDONAME_OTHER = XALAN_STATIC_UCODE_STRING("*");
  +	::PSEUDONAME_PI = XALAN_STATIC_UCODE_STRING("#pi");
  +	::PSEUDONAME_ROOT = XALAN_STATIC_UCODE_STRING("/");
  +	::PSEUDONAME_TEXT = XALAN_STATIC_UCODE_STRING("#text");
  +}
  +
  +
  +
  +
  +void
  +Constants::terminate()
  +{
  +	clear(::ATTRNAME_AMOUNT);
  +	clear(::ATTRNAME_ANCESTOR);
  +	clear(::ATTRNAME_ARCHIVE);
  +	clear(::ATTRNAME_ATTRIBUTE);
  +	clear(::ATTRNAME_ATTRIBUTE_SET);
  +	clear(::ATTRNAME_CASEORDER);
  +	clear(::ATTRNAME_CLASS);
  +	clear(::ATTRNAME_CLASSID);
  +	clear(::ATTRNAME_CODEBASE);
  +	clear(::ATTRNAME_CODETYPE);
  +	clear(::ATTRNAME_CONDITION);
  +	clear(::ATTRNAME_COPYTYPE);
  +	clear(::ATTRNAME_COUNT);
  +	clear(::ATTRNAME_DATATYPE);
  +	clear(::ATTRNAME_DECIMALSEPARATOR);
  +	clear(::ATTRNAME_DEFAULT);
  +	clear(::ATTRNAME_DEFAULTSPACE);
  +	clear(::ATTRNAME_DEPTH);
  +	clear(::ATTRNAME_DIGIT);
  +	clear(::ATTRNAME_DIGITGROUPSEP);
  +	clear(::ATTRNAME_DISABLE_OUTPUT_ESCAPING);
  +	clear(::ATTRNAME_ELEMENT);
  +	clear(::ATTRNAME_ELEMENTS);
  +	clear(::ATTRNAME_EXCLUDE_RESULT_PREFIXES);
  +	clear(::ATTRNAME_EXPR);
  +	clear(::ATTRNAME_EXTENSIONELEMENTPREFIXES);
  +	clear(::ATTRNAME_FORMAT);
  +	clear(::ATTRNAME_FROM);
  +	clear(::ATTRNAME_GROUPINGSEPARATOR);
  +	clear(::ATTRNAME_GROUPINGSIZE);
  +	clear(::ATTRNAME_HREF);
  +	clear(::ATTRNAME_ID);
  +	clear(::ATTRNAME_IMPORTANCE);
  +	clear(::ATTRNAME_INDENTRESULT);
  +	clear(::ATTRNAME_INFINITY);
  +	clear(::ATTRNAME_LANG);
  +	clear(::ATTRNAME_LETTERVALUE);
  +	clear(::ATTRNAME_LEVEL);
  +	clear(::ATTRNAME_MATCH);
  +	clear(::ATTRNAME_METHOD);
  +	clear(::ATTRNAME_MINUSSIGN);
  +	clear(::ATTRNAME_MODE);
  +	clear(::ATTRNAME_NAME);
  +	clear(::ATTRNAME_NAMESPACE);
  +	clear(::ATTRNAME_NAN);
  +	clear(::ATTRNAME_NDIGITSPERGROUP);
  +	clear(::ATTRNAME_NS);
  +	clear(::ATTRNAME_ONLY);
  +	clear(::ATTRNAME_ORDER);
  +	clear(::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS);
  +	clear(::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC);
  +	clear(::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM);
  +	clear(::ATTRNAME_OUTPUT_ENCODING);
  +	clear(::ATTRNAME_OUTPUT_INDENT);
  +	clear(::ATTRNAME_OUTPUT_MEDIATYPE);
  +	clear(::ATTRNAME_OUTPUT_METHOD);
  +	clear(::ATTRNAME_OUTPUT_OMITXMLDECL);
  +	clear(::ATTRNAME_OUTPUT_STANDALONE);
  +	clear(::ATTRNAME_OUTPUT_VERSION);
  +	clear(::ATTRNAME_PATTERNSEPARATOR);
  +	clear(::ATTRNAME_PERCENT);
  +	clear(::ATTRNAME_PERMILLE);
  +	clear(::ATTRNAME_PRIORITY);
  +	clear(::ATTRNAME_REFID);
  +	clear(::ATTRNAME_RESULTNS);
  +	clear(::ATTRNAME_RESULT_PREFIX);
  +	clear(::ATTRNAME_SELECT);
  +	clear(::ATTRNAME_SEQUENCESRC);
  +	clear(::ATTRNAME_STYLE);
  +	clear(::ATTRNAME_STYLESHEET_PREFIX);
  +	clear(::ATTRNAME_TERMINATE);
  +	clear(::ATTRNAME_TEST);
  +	clear(::ATTRNAME_TOSTRING);
  +	clear(::ATTRNAME_TYPE);
  +	clear(::ATTRNAME_USE);
  +	clear(::ATTRNAME_USEATTRIBUTESETS);
  +	clear(::ATTRNAME_VALUE);
  +	clear(::ATTRNAME_VERSION);
  +	clear(::ATTRNAME_XMLNS);
  +	clear(::ATTRNAME_XMLNSDEF);
  +	clear(::ATTRNAME_XMLSPACE);
  +	clear(::ATTRNAME_ZERODIGIT);
  +
  +	clear(::ATTRVAL_ALPHABETIC);
  +	clear(::ATTRVAL_ANCESTOR);
  +	clear(::ATTRVAL_ANY);
  +	clear(::ATTRVAL_CASEORDER_LOWER);
  +	clear(::ATTRVAL_CASEORDER_UPPER);
  +	clear(::ATTRVAL_DATATYPE_NUMBER);
  +	clear(::ATTRVAL_DATATYPE_TEXT);
  +	clear(::ATTRVAL_DEFAULT_PREFIX);
  +	clear(::ATTRVAL_ID);
  +	clear(::ATTRVAL_INFINITY);
  +	clear(::ATTRVAL_MULTI);
  +	clear(::ATTRVAL_NAN);
  +	clear(::ATTRVAL_NO);
  +	clear(::ATTRVAL_ORDER_ASCENDING);
  +	clear(::ATTRVAL_ORDER_DESCENDING);
  +	clear(::ATTRVAL_OTHER);
  +	clear(::ATTRVAL_OUTPUT_METHOD_HTML);
  +	clear(::ATTRVAL_OUTPUT_METHOD_TEXT);
  +	clear(::ATTRVAL_OUTPUT_METHOD_XML);
  +	clear(::ATTRVAL_PARENT);
  +	clear(::ATTRVAL_PRESERVE);
  +	clear(::ATTRVAL_SINGLE);
  +	clear(::ATTRVAL_STRIP);
  +	clear(::ATTRVAL_THIS);
  +	clear(::ATTRVAL_YES);
  +	clear(::DEFAULT_DECIMAL_FORMAT);
  +	clear(::ELEMNAME_ANCHOR_STRING);
  +	clear(::ELEMNAME_ANY_STRING);
  +	clear(::ELEMNAME_APPLY_IMPORTS_STRING);
  +	clear(::ELEMNAME_APPLY_TEMPLATES_STRING);
  +	clear(::ELEMNAME_ARG_STRING);
  +	clear(::ELEMNAME_ATTRIBUTESET_STRING);
  +	clear(::ELEMNAME_ATTRIBUTE_STRING);
  +	clear(::ELEMNAME_CALLTEMPLATEARG_STRING);
  +	clear(::ELEMNAME_CALLTEMPLATE_STRING);
  +	clear(::ELEMNAME_CALL_STRING);
  +	clear(::ELEMNAME_CHILDREN_STRING);
  +	clear(::ELEMNAME_CHOOSE_STRING);
  +	clear(::ELEMNAME_COMMENT_STRING);
  +	clear(::ELEMNAME_COMPONENT_STRING);
  +	clear(::ELEMNAME_CONSTRUCT_STRING);
  +	clear(::ELEMNAME_CONTENTS_STRING);
  +	clear(::ELEMNAME_COPY_OF_STRING);
  +	clear(::ELEMNAME_COPY_STRING);
  +	clear(::ELEMNAME_COUNTERINCREMENT_STRING);
  +	clear(::ELEMNAME_COUNTERRESET_STRING);
  +	clear(::ELEMNAME_COUNTERSCOPE_STRING);
  +	clear(::ELEMNAME_COUNTERS_STRING);
  +	clear(::ELEMNAME_COUNTER_STRING);
  +	clear(::ELEMNAME_DECIMALFORMAT_STRING);
  +	clear(::ELEMNAME_DISPLAYIF_STRING);
  +	clear(::ELEMNAME_ELEMENT_STRING);
  +	clear(::ELEMNAME_EMPTY_STRING);
  +	clear(::ELEMNAME_EVAL_STRING);
  +	clear(::ELEMNAME_EXPECTEDCHILDREN_STRING);
  +	clear(::ELEMNAME_EXTENSIONHANDLER_STRING);
  +	clear(::ELEMNAME_EXTENSION_STRING);
  +	clear(::ELEMNAME_FALLBACK_STRING);
  +	clear(::ELEMNAME_FOREACH_STRING);
  +	clear(::ELEMNAME_HTML_STRING);
  +	clear(::ELEMNAME_IF_STRING);
  +	clear(::ELEMNAME_IMPORT_STRING);
  +	clear(::ELEMNAME_INCLUDE_STRING);
  +	clear(::ELEMNAME_KEY_STRING);
  +	clear(::ELEMNAME_LOCALE_STRING);
  +	clear(::ELEMNAME_MESSAGE_STRING);
  +	clear(::ELEMNAME_NSALIAS_STRING);
  +	clear(::ELEMNAME_NUMBER_STRING);
  +	clear(::ELEMNAME_OTHERWISE_STRING);
  +	clear(::ELEMNAME_OUTPUT_STRING);
  +	clear(::ELEMNAME_PARAMVARIABLE_STRING);
  +	clear(::ELEMNAME_PI_OLD_STRING);
  +	clear(::ELEMNAME_PI_STRING);
  +	clear(::ELEMNAME_PRESERVESPACE_STRING);
  +	clear(::ELEMNAME_ROOT_STRING);
  +	clear(::ELEMNAME_SCRIPT_STRING);
  +	clear(::ELEMNAME_SORT_STRING);
  +	clear(::ELEMNAME_STRIPSPACE_STRING);
  +	clear(::ELEMNAME_STYLESHEET_STRING);
  +	clear(::ELEMNAME_TARGETATTRIBUTE_STRING);
  +	clear(::ELEMNAME_TARGETCOMMENT_STRING);
  +	clear(::ELEMNAME_TARGETELEMENT_STRING);
  +	clear(::ELEMNAME_TARGETPI_STRING);
  +	clear(::ELEMNAME_TARGETTEXT_STRING);
  +	clear(::ELEMNAME_TEMPLATE_STRING);
  +	clear(::ELEMNAME_TEXT_STRING);
  +	clear(::ELEMNAME_TRANSFORM_STRING);
  +	clear(::ELEMNAME_URL_STRING);
  +	clear(::ELEMNAME_USE_STRING);
  +	clear(::ELEMNAME_VALUEOF_STRING);
  +	clear(::ELEMNAME_VARIABLE_STRING);
  +	clear(::ELEMNAME_WHEN_STRING);
  +	clear(::ELEMNAME_WITHPARAM_STRING);
  +	clear(::PSEUDONAME_ANY);
  +	clear(::PSEUDONAME_COMMENT);
  +	clear(::PSEUDONAME_OTHER);
  +	clear(::PSEUDONAME_PI);
  +	clear(::PSEUDONAME_ROOT);
  +	clear(::PSEUDONAME_TEXT);
  +}
  
  
  
  1.11      +196 -183  xml-xalan/c/src/XSLT/Constants.hpp
  
  Index: Constants.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/Constants.hpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Constants.hpp	2000/05/24 19:36:34	1.10
  +++ Constants.hpp	2000/08/31 19:43:09	1.11
  @@ -78,6 +78,19 @@
   public:
   
   	/**
  +	 * Perform initialization of statics -- must be called before any
  +	 * processing occurs.  See class XSLTInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform termination of statics.  See class XSLTInit.
  +	 */
  +	static void
  +	terminate();
  +
  +	/**
   	 * IDs for XSL element types. These are associated 
   	 * with the string literals in the XSLTProcessor class.
   	 * Don't change the numbers.
  @@ -178,206 +191,206 @@
   	 */
   
   	// Result tree counting
  -	static const XalanDOMString	ELEMNAME_ANCHOR_STRING;
  -	static const XalanDOMString	ELEMNAME_ANY_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_APPLY_IMPORTS_STRING;
  -	static const XalanDOMString	ELEMNAME_APPLY_TEMPLATES_STRING;
  -	static const XalanDOMString	ELEMNAME_ARG_STRING;
  -	static const XalanDOMString	ELEMNAME_ATTRIBUTESET_STRING;
  -	static const XalanDOMString	ELEMNAME_ATTRIBUTE_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_CALLTEMPLATEARG_STRING;
  -	static const XalanDOMString	ELEMNAME_CALLTEMPLATE_STRING;
  -	static const XalanDOMString	ELEMNAME_CALL_STRING;
  -	static const XalanDOMString	ELEMNAME_CHILDREN_STRING;
  -	static const XalanDOMString	ELEMNAME_CHOOSE_STRING;
  -	static const XalanDOMString	ELEMNAME_COMMENT_STRING;
  -	static const XalanDOMString	ELEMNAME_CONSTRUCT_STRING; // my own
  -	static const XalanDOMString	ELEMNAME_CONTENTS_STRING;
  -	static const XalanDOMString	ELEMNAME_COPY_OF_STRING;
  -	static const XalanDOMString	ELEMNAME_COPY_STRING;
  -	static const XalanDOMString	ELEMNAME_COUNTERINCREMENT_STRING;
  -	static const XalanDOMString	ELEMNAME_COUNTERRESET_STRING;
  -	static const XalanDOMString	ELEMNAME_COUNTERSCOPE_STRING;
  -	static const XalanDOMString	ELEMNAME_COUNTERS_STRING;
  -	static const XalanDOMString	ELEMNAME_COUNTER_STRING;
  -	static const XalanDOMString	ELEMNAME_DECIMALFORMAT_STRING;
  -	static const XalanDOMString	ELEMNAME_DISPLAYIF_STRING; // my own
  -	static const XalanDOMString	ELEMNAME_ELEMENT_STRING;  // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_EMPTY_STRING;
  -	static const XalanDOMString	ELEMNAME_EVAL_STRING;
  -	static const XalanDOMString	ELEMNAME_EXPECTEDCHILDREN_STRING;
  -	static const XalanDOMString	ELEMNAME_EXTENSIONHANDLER_STRING;
  -	static const XalanDOMString	ELEMNAME_EXTENSION_STRING;
  -	static const XalanDOMString	ELEMNAME_FALLBACK_STRING;
  -	static const XalanDOMString	ELEMNAME_FOREACH_STRING;
  -	static const XalanDOMString	ELEMNAME_HTML_STRING;
  -	static const XalanDOMString	ELEMNAME_IF_STRING;
  -	static const XalanDOMString	ELEMNAME_IMPORT_STRING;
  -	static const XalanDOMString	ELEMNAME_INCLUDE_STRING;
  -	static const XalanDOMString	ELEMNAME_KEY_STRING;
  -	static const XalanDOMString	ELEMNAME_LOCALE_STRING;
  -	static const XalanDOMString	ELEMNAME_MESSAGE_STRING;
  -	static const XalanDOMString	ELEMNAME_NSALIAS_STRING;
  -	static const XalanDOMString	ELEMNAME_NUMBER_STRING;
  -	static const XalanDOMString	ELEMNAME_OTHERWISE_STRING;
  -	static const XalanDOMString	ELEMNAME_PRESERVESPACE_STRING;
  -	static const XalanDOMString	ELEMNAME_ROOT_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_SORT_STRING;
  -	static const XalanDOMString	ELEMNAME_STRIPSPACE_STRING;
  -	static const XalanDOMString	ELEMNAME_STYLESHEET_STRING;
  -	static const XalanDOMString	ELEMNAME_TARGETATTRIBUTE_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_TARGETCOMMENT_STRING;
  -	static const XalanDOMString	ELEMNAME_TARGETELEMENT_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_TARGETPI_STRING;
  -	static const XalanDOMString	ELEMNAME_TARGETTEXT_STRING;
  -	static const XalanDOMString	ELEMNAME_TEMPLATE_STRING;
  -	static const XalanDOMString	ELEMNAME_TEXT_STRING;
  -	static const XalanDOMString	ELEMNAME_TRANSFORM_STRING;
  -	static const XalanDOMString	ELEMNAME_URL_STRING; // pattern-by-example support
  -	static const XalanDOMString	ELEMNAME_USE_STRING;
  -	static const XalanDOMString	ELEMNAME_VALUEOF_STRING;
  -	static const XalanDOMString	ELEMNAME_VARIABLE_STRING;
  -	static const XalanDOMString	ELEMNAME_WHEN_STRING;
  -	static const XalanDOMString	ELEMNAME_COMPONENT_STRING;
  -	static const XalanDOMString	ELEMNAME_OUTPUT_STRING;
  -	static const XalanDOMString	ELEMNAME_PARAMVARIABLE_STRING;
  -	static const XalanDOMString	ELEMNAME_PI_OLD_STRING;
  -	static const XalanDOMString	ELEMNAME_PI_STRING;
  -	static const XalanDOMString	ELEMNAME_SCRIPT_STRING;
  -	static const XalanDOMString	ELEMNAME_WITHPARAM_STRING;
  +	static const XalanDOMString&	ELEMNAME_ANCHOR_STRING;
  +	static const XalanDOMString&	ELEMNAME_ANY_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_APPLY_IMPORTS_STRING;
  +	static const XalanDOMString&	ELEMNAME_APPLY_TEMPLATES_STRING;
  +	static const XalanDOMString&	ELEMNAME_ARG_STRING;
  +	static const XalanDOMString&	ELEMNAME_ATTRIBUTESET_STRING;
  +	static const XalanDOMString&	ELEMNAME_ATTRIBUTE_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_CALLTEMPLATEARG_STRING;
  +	static const XalanDOMString&	ELEMNAME_CALLTEMPLATE_STRING;
  +	static const XalanDOMString&	ELEMNAME_CALL_STRING;
  +	static const XalanDOMString&	ELEMNAME_CHILDREN_STRING;
  +	static const XalanDOMString&	ELEMNAME_CHOOSE_STRING;
  +	static const XalanDOMString&	ELEMNAME_COMMENT_STRING;
  +	static const XalanDOMString&	ELEMNAME_CONSTRUCT_STRING; // my own
  +	static const XalanDOMString&	ELEMNAME_CONTENTS_STRING;
  +	static const XalanDOMString&	ELEMNAME_COPY_OF_STRING;
  +	static const XalanDOMString&	ELEMNAME_COPY_STRING;
  +	static const XalanDOMString&	ELEMNAME_COUNTERINCREMENT_STRING;
  +	static const XalanDOMString&	ELEMNAME_COUNTERRESET_STRING;
  +	static const XalanDOMString&	ELEMNAME_COUNTERSCOPE_STRING;
  +	static const XalanDOMString&	ELEMNAME_COUNTERS_STRING;
  +	static const XalanDOMString&	ELEMNAME_COUNTER_STRING;
  +	static const XalanDOMString&	ELEMNAME_DECIMALFORMAT_STRING;
  +	static const XalanDOMString&	ELEMNAME_DISPLAYIF_STRING; // my own
  +	static const XalanDOMString&	ELEMNAME_ELEMENT_STRING;  // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_EMPTY_STRING;
  +	static const XalanDOMString&	ELEMNAME_EVAL_STRING;
  +	static const XalanDOMString&	ELEMNAME_EXPECTEDCHILDREN_STRING;
  +	static const XalanDOMString&	ELEMNAME_EXTENSIONHANDLER_STRING;
  +	static const XalanDOMString&	ELEMNAME_EXTENSION_STRING;
  +	static const XalanDOMString&	ELEMNAME_FALLBACK_STRING;
  +	static const XalanDOMString&	ELEMNAME_FOREACH_STRING;
  +	static const XalanDOMString&	ELEMNAME_HTML_STRING;
  +	static const XalanDOMString&	ELEMNAME_IF_STRING;
  +	static const XalanDOMString&	ELEMNAME_IMPORT_STRING;
  +	static const XalanDOMString&	ELEMNAME_INCLUDE_STRING;
  +	static const XalanDOMString&	ELEMNAME_KEY_STRING;
  +	static const XalanDOMString&	ELEMNAME_LOCALE_STRING;
  +	static const XalanDOMString&	ELEMNAME_MESSAGE_STRING;
  +	static const XalanDOMString&	ELEMNAME_NSALIAS_STRING;
  +	static const XalanDOMString&	ELEMNAME_NUMBER_STRING;
  +	static const XalanDOMString&	ELEMNAME_OTHERWISE_STRING;
  +	static const XalanDOMString&	ELEMNAME_PRESERVESPACE_STRING;
  +	static const XalanDOMString&	ELEMNAME_ROOT_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_SORT_STRING;
  +	static const XalanDOMString&	ELEMNAME_STRIPSPACE_STRING;
  +	static const XalanDOMString&	ELEMNAME_STYLESHEET_STRING;
  +	static const XalanDOMString&	ELEMNAME_TARGETATTRIBUTE_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_TARGETCOMMENT_STRING;
  +	static const XalanDOMString&	ELEMNAME_TARGETELEMENT_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_TARGETPI_STRING;
  +	static const XalanDOMString&	ELEMNAME_TARGETTEXT_STRING;
  +	static const XalanDOMString&	ELEMNAME_TEMPLATE_STRING;
  +	static const XalanDOMString&	ELEMNAME_TEXT_STRING;
  +	static const XalanDOMString&	ELEMNAME_TRANSFORM_STRING;
  +	static const XalanDOMString&	ELEMNAME_URL_STRING; // pattern-by-example support
  +	static const XalanDOMString&	ELEMNAME_USE_STRING;
  +	static const XalanDOMString&	ELEMNAME_VALUEOF_STRING;
  +	static const XalanDOMString&	ELEMNAME_VARIABLE_STRING;
  +	static const XalanDOMString&	ELEMNAME_WHEN_STRING;
  +	static const XalanDOMString&	ELEMNAME_COMPONENT_STRING;
  +	static const XalanDOMString&	ELEMNAME_OUTPUT_STRING;
  +	static const XalanDOMString&	ELEMNAME_PARAMVARIABLE_STRING;
  +	static const XalanDOMString&	ELEMNAME_PI_OLD_STRING;
  +	static const XalanDOMString&	ELEMNAME_PI_STRING;
  +	static const XalanDOMString&	ELEMNAME_SCRIPT_STRING;
  +	static const XalanDOMString&	ELEMNAME_WITHPARAM_STRING;
     
   	/*---------------------------------------------
   	 * Literals for XSL attribute names.
   	 */
  -	static const XalanDOMString	ATTRNAME_AMOUNT;
  -	static const XalanDOMString	ATTRNAME_ANCESTOR;
  -	static const XalanDOMString	ATTRNAME_ATTRIBUTE;
  -	static const XalanDOMString	ATTRNAME_ATTRIBUTE_SET;
  -	static const XalanDOMString	ATTRNAME_CASEORDER;
  -	static const XalanDOMString	ATTRNAME_CLASS;
  -	static const XalanDOMString	ATTRNAME_CONDITION;
  -	static const XalanDOMString	ATTRNAME_COPYTYPE;
  -	static const XalanDOMString	ATTRNAME_COUNT;
  -	static const XalanDOMString	ATTRNAME_DATATYPE;
  -	static const XalanDOMString	ATTRNAME_DECIMALSEPARATOR;
  -	static const XalanDOMString	ATTRNAME_DEFAULT;
  -	static const XalanDOMString	ATTRNAME_DEFAULTSPACE;
  -	static const XalanDOMString	ATTRNAME_DEPTH;
  -	static const XalanDOMString	ATTRNAME_DIGIT;
  -	static const XalanDOMString	ATTRNAME_DIGITGROUPSEP;
  -	static const XalanDOMString	ATTRNAME_ELEMENT;
  -	static const XalanDOMString	ATTRNAME_ELEMENTS;
  -	static const XalanDOMString	ATTRNAME_EXCLUDE_RESULT_PREFIXES;
  -	static const XalanDOMString	ATTRNAME_EXPR;
  -	static const XalanDOMString	ATTRNAME_EXTENSIONELEMENTPREFIXES;
  -	static const XalanDOMString	ATTRNAME_FORMAT;
  -	static const XalanDOMString	ATTRNAME_FROM;
  -	static const XalanDOMString	ATTRNAME_GROUPINGSEPARATOR;
  -	static const XalanDOMString	ATTRNAME_GROUPINGSIZE;
  -	static const XalanDOMString	ATTRNAME_HREF;
  -	static const XalanDOMString	ATTRNAME_ID;
  -	static const XalanDOMString	ATTRNAME_IMPORTANCE;
  -	static const XalanDOMString	ATTRNAME_INDENTRESULT;
  -	static const XalanDOMString	ATTRNAME_INFINITY;
  -	static const XalanDOMString	ATTRNAME_LANG;
  -	static const XalanDOMString	ATTRNAME_LETTERVALUE;
  -	static const XalanDOMString	ATTRNAME_LEVEL;
  -	static const XalanDOMString	ATTRNAME_MATCH;
  -	static const XalanDOMString	ATTRNAME_MINUSSIGN;
  -	static const XalanDOMString	ATTRNAME_MODE;
  -	static const XalanDOMString	ATTRNAME_NAME;
  -	static const XalanDOMString	ATTRNAME_NAMESPACE;
  -	static const XalanDOMString	ATTRNAME_NAN;
  -	static const XalanDOMString	ATTRNAME_NDIGITSPERGROUP;
  -	static const XalanDOMString	ATTRNAME_ONLY;
  -	static const XalanDOMString	ATTRNAME_ORDER;
  -	static const XalanDOMString	ATTRNAME_PATTERNSEPARATOR;
  -	static const XalanDOMString	ATTRNAME_PERCENT;
  -	static const XalanDOMString	ATTRNAME_PERMILLE;
  -	static const XalanDOMString	ATTRNAME_PRIORITY;
  -	static const XalanDOMString	ATTRNAME_REFID;
  -	static const XalanDOMString	ATTRNAME_RESULTNS;
  -	static const XalanDOMString	ATTRNAME_RESULT_PREFIX;
  -	static const XalanDOMString	ATTRNAME_SELECT;
  -	static const XalanDOMString	ATTRNAME_SEQUENCESRC;
  -	static const XalanDOMString	ATTRNAME_STYLE;
  -	static const XalanDOMString	ATTRNAME_TERMINATE;
  -	static const XalanDOMString	ATTRNAME_TEST;
  -	static const XalanDOMString	ATTRNAME_TOSTRING;
  -	static const XalanDOMString	ATTRNAME_TYPE;
  -	static const XalanDOMString	ATTRNAME_USE;
  -	static const XalanDOMString	ATTRNAME_USEATTRIBUTESETS;
  -	static const XalanDOMString	ATTRNAME_VALUE;
  -	static const XalanDOMString	ATTRNAME_VERSION;
  -	static const XalanDOMString	ATTRNAME_XMLNS;
  -	static const XalanDOMString	ATTRNAME_XMLNSDEF;
  -	static const XalanDOMString	ATTRNAME_XMLSPACE;
  -	static const XalanDOMString	ATTRNAME_ZERODIGIT;
  -	static const XalanDOMString	ATTRNAME_STYLESHEET_PREFIX;
  +	static const XalanDOMString&	ATTRNAME_AMOUNT;
  +	static const XalanDOMString&	ATTRNAME_ANCESTOR;
  +	static const XalanDOMString&	ATTRNAME_ATTRIBUTE;
  +	static const XalanDOMString&	ATTRNAME_ATTRIBUTE_SET;
  +	static const XalanDOMString&	ATTRNAME_CASEORDER;
  +	static const XalanDOMString&	ATTRNAME_CLASS;
  +	static const XalanDOMString&	ATTRNAME_CONDITION;
  +	static const XalanDOMString&	ATTRNAME_COPYTYPE;
  +	static const XalanDOMString&	ATTRNAME_COUNT;
  +	static const XalanDOMString&	ATTRNAME_DATATYPE;
  +	static const XalanDOMString&	ATTRNAME_DECIMALSEPARATOR;
  +	static const XalanDOMString&	ATTRNAME_DEFAULT;
  +	static const XalanDOMString&	ATTRNAME_DEFAULTSPACE;
  +	static const XalanDOMString&	ATTRNAME_DEPTH;
  +	static const XalanDOMString&	ATTRNAME_DIGIT;
  +	static const XalanDOMString&	ATTRNAME_DIGITGROUPSEP;
  +	static const XalanDOMString&	ATTRNAME_ELEMENT;
  +	static const XalanDOMString&	ATTRNAME_ELEMENTS;
  +	static const XalanDOMString&	ATTRNAME_EXCLUDE_RESULT_PREFIXES;
  +	static const XalanDOMString&	ATTRNAME_EXPR;
  +	static const XalanDOMString&	ATTRNAME_EXTENSIONELEMENTPREFIXES;
  +	static const XalanDOMString&	ATTRNAME_FORMAT;
  +	static const XalanDOMString&	ATTRNAME_FROM;
  +	static const XalanDOMString&	ATTRNAME_GROUPINGSEPARATOR;
  +	static const XalanDOMString&	ATTRNAME_GROUPINGSIZE;
  +	static const XalanDOMString&	ATTRNAME_HREF;
  +	static const XalanDOMString&	ATTRNAME_ID;
  +	static const XalanDOMString&	ATTRNAME_IMPORTANCE;
  +	static const XalanDOMString&	ATTRNAME_INDENTRESULT;
  +	static const XalanDOMString&	ATTRNAME_INFINITY;
  +	static const XalanDOMString&	ATTRNAME_LANG;
  +	static const XalanDOMString&	ATTRNAME_LETTERVALUE;
  +	static const XalanDOMString&	ATTRNAME_LEVEL;
  +	static const XalanDOMString&	ATTRNAME_MATCH;
  +	static const XalanDOMString&	ATTRNAME_MINUSSIGN;
  +	static const XalanDOMString&	ATTRNAME_MODE;
  +	static const XalanDOMString&	ATTRNAME_NAME;
  +	static const XalanDOMString&	ATTRNAME_NAMESPACE;
  +	static const XalanDOMString&	ATTRNAME_NAN;
  +	static const XalanDOMString&	ATTRNAME_NDIGITSPERGROUP;
  +	static const XalanDOMString&	ATTRNAME_ONLY;
  +	static const XalanDOMString&	ATTRNAME_ORDER;
  +	static const XalanDOMString&	ATTRNAME_PATTERNSEPARATOR;
  +	static const XalanDOMString&	ATTRNAME_PERCENT;
  +	static const XalanDOMString&	ATTRNAME_PERMILLE;
  +	static const XalanDOMString&	ATTRNAME_PRIORITY;
  +	static const XalanDOMString&	ATTRNAME_REFID;
  +	static const XalanDOMString&	ATTRNAME_RESULTNS;
  +	static const XalanDOMString&	ATTRNAME_RESULT_PREFIX;
  +	static const XalanDOMString&	ATTRNAME_SELECT;
  +	static const XalanDOMString&	ATTRNAME_SEQUENCESRC;
  +	static const XalanDOMString&	ATTRNAME_STYLE;
  +	static const XalanDOMString&	ATTRNAME_TERMINATE;
  +	static const XalanDOMString&	ATTRNAME_TEST;
  +	static const XalanDOMString&	ATTRNAME_TOSTRING;
  +	static const XalanDOMString&	ATTRNAME_TYPE;
  +	static const XalanDOMString&	ATTRNAME_USE;
  +	static const XalanDOMString&	ATTRNAME_USEATTRIBUTESETS;
  +	static const XalanDOMString&	ATTRNAME_VALUE;
  +	static const XalanDOMString&	ATTRNAME_VERSION;
  +	static const XalanDOMString&	ATTRNAME_XMLNS;
  +	static const XalanDOMString&	ATTRNAME_XMLNSDEF;
  +	static const XalanDOMString&	ATTRNAME_XMLSPACE;
  +	static const XalanDOMString&	ATTRNAME_ZERODIGIT;
  +	static const XalanDOMString&	ATTRNAME_STYLESHEET_PREFIX;
    
   	  // Atributes on the functions element
  -	static const XalanDOMString	ATTRNAME_NS;
  -	static const XalanDOMString	ATTRNAME_CLASSID;
  -	static const XalanDOMString	ATTRNAME_ARCHIVE;
  -	static const XalanDOMString	ATTRNAME_CODETYPE;
  -	static const XalanDOMString	ATTRNAME_CODEBASE;
  -	static const XalanDOMString	ATTRNAME_METHOD;
  +	static const XalanDOMString&	ATTRNAME_NS;
  +	static const XalanDOMString&	ATTRNAME_CLASSID;
  +	static const XalanDOMString&	ATTRNAME_ARCHIVE;
  +	static const XalanDOMString&	ATTRNAME_CODETYPE;
  +	static const XalanDOMString&	ATTRNAME_CODEBASE;
  +	static const XalanDOMString&	ATTRNAME_METHOD;
     
   	  // For space-att
  -	static const XalanDOMString	ATTRVAL_PRESERVE;
  -	static const XalanDOMString	ATTRVAL_STRIP;
  +	static const XalanDOMString&	ATTRVAL_PRESERVE;
  +	static const XalanDOMString&	ATTRVAL_STRIP;
     
   	  // For indent-result
  -	static const XalanDOMString	ATTRVAL_YES;
  -	static const XalanDOMString	ATTRVAL_NO;
  +	static const XalanDOMString&	ATTRVAL_YES;
  +	static const XalanDOMString&	ATTRVAL_NO;
     
   	  // For letter-value attribute (part of conversion attributes).
  -	static const XalanDOMString	ATTRVAL_ALPHABETIC;
  -	static const XalanDOMString	ATTRVAL_OTHER;
  +	static const XalanDOMString&	ATTRVAL_ALPHABETIC;
  +	static const XalanDOMString&	ATTRVAL_OTHER;
     
   	  // For level attribute in xsl:number.
  -	static const XalanDOMString	ATTRVAL_SINGLE;
  -	static const XalanDOMString	ATTRVAL_MULTI;
  -	static const XalanDOMString	ATTRVAL_ANY;
  +	static const XalanDOMString&	ATTRVAL_SINGLE;
  +	static const XalanDOMString&	ATTRVAL_MULTI;
  +	static const XalanDOMString&	ATTRVAL_ANY;
   
   	// Output stuff
  -	static const XalanDOMString	ATTRNAME_OUTPUT_METHOD;
  -	static const XalanDOMString	ATTRNAME_DISABLE_OUTPUT_ESCAPING;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_ENCODING;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_INDENT;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_MEDIATYPE;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_STANDALONE;
  -	static const XalanDOMString	ATTRNAME_OUTPUT_VERSION;
  -//	static const XalanDOMString	ATTRNAME_OUTPUT_XMLDECL;
  -   static const XalanDOMString	ATTRNAME_OUTPUT_OMITXMLDECL;
  -
  -	static const XalanDOMString	ATTRVAL_OUTPUT_METHOD_HTML;
  -	static const XalanDOMString	ATTRVAL_OUTPUT_METHOD_XML;
  -	static const XalanDOMString	ATTRVAL_OUTPUT_METHOD_TEXT;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_METHOD;
  +	static const XalanDOMString&	ATTRNAME_DISABLE_OUTPUT_ESCAPING;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_ENCODING;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_INDENT;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_MEDIATYPE;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_STANDALONE;
  +	static const XalanDOMString&	ATTRNAME_OUTPUT_VERSION;
  +//	static const XalanDOMString&	ATTRNAME_OUTPUT_XMLDECL;
  +   static const XalanDOMString&	ATTRNAME_OUTPUT_OMITXMLDECL;
  +
  +	static const XalanDOMString&	ATTRVAL_OUTPUT_METHOD_HTML;
  +	static const XalanDOMString&	ATTRVAL_OUTPUT_METHOD_XML;
  +	static const XalanDOMString&	ATTRVAL_OUTPUT_METHOD_TEXT;
   
   	// some stuff for my patterns-by-example
  -	static const XalanDOMString	ATTRVAL_THIS;
  -	static const XalanDOMString	ATTRVAL_PARENT;
  -	static const XalanDOMString	ATTRVAL_ANCESTOR;
  -	static const XalanDOMString	ATTRVAL_ID;
  +	static const XalanDOMString&	ATTRVAL_THIS;
  +	static const XalanDOMString&	ATTRVAL_PARENT;
  +	static const XalanDOMString&	ATTRVAL_ANCESTOR;
  +	static const XalanDOMString&	ATTRVAL_ID;
   
     // Stuff for sorting
  -	static const XalanDOMString	ATTRVAL_DATATYPE_TEXT;
  -	static const XalanDOMString	ATTRVAL_DATATYPE_NUMBER;
  -	static const XalanDOMString	ATTRVAL_ORDER_ASCENDING;
  -	static const XalanDOMString	ATTRVAL_ORDER_DESCENDING;
  -	static const XalanDOMString	ATTRVAL_CASEORDER_UPPER;
  -	static const XalanDOMString	ATTRVAL_CASEORDER_LOWER;
  +	static const XalanDOMString&	ATTRVAL_DATATYPE_TEXT;
  +	static const XalanDOMString&	ATTRVAL_DATATYPE_NUMBER;
  +	static const XalanDOMString&	ATTRVAL_ORDER_ASCENDING;
  +	static const XalanDOMString&	ATTRVAL_ORDER_DESCENDING;
  +	static const XalanDOMString&	ATTRVAL_CASEORDER_UPPER;
  +	static const XalanDOMString&	ATTRVAL_CASEORDER_LOWER;
   
   	// Stuff for xsl:decimal-format...
  -	static const XalanDOMString	ATTRVAL_INFINITY;
  -	static const XalanDOMString	ATTRVAL_NAN;
  +	static const XalanDOMString&	ATTRVAL_INFINITY;
  +	static const XalanDOMString&	ATTRVAL_NAN;
   
   	// Name of default for xsl:decimal-format element
  -	static const XalanDOMString DEFAULT_DECIMAL_FORMAT;
  +	static const XalanDOMString& DEFAULT_DECIMAL_FORMAT;
   
   
   	enum eNumberLevel
  @@ -393,7 +406,7 @@
   	};
   
   	// For Stylesheet-prefix and result-prefix in xsl:namespace-alias 
  -	static const XalanDOMString	ATTRVAL_DEFAULT_PREFIX;
  +	static const XalanDOMString&	ATTRVAL_DEFAULT_PREFIX;
   
   	enum eAttributeName
   	{
  @@ -471,12 +484,12 @@
   
   	// These are used mainly for keys in the pattern lookup table,
   	// for those nodes that don't have unique lookup values
  -	static const XalanDOMString	PSEUDONAME_ANY;
  -	static const XalanDOMString	PSEUDONAME_ROOT;
  -	static const XalanDOMString	PSEUDONAME_TEXT;
  -	static const XalanDOMString	PSEUDONAME_COMMENT;
  -	static const XalanDOMString	PSEUDONAME_PI;
  -	static const XalanDOMString	PSEUDONAME_OTHER;
  +	static const XalanDOMString&	PSEUDONAME_ANY;
  +	static const XalanDOMString&	PSEUDONAME_ROOT;
  +	static const XalanDOMString&	PSEUDONAME_TEXT;
  +	static const XalanDOMString&	PSEUDONAME_COMMENT;
  +	static const XalanDOMString&	PSEUDONAME_PI;
  +	static const XalanDOMString&	PSEUDONAME_OTHER;
   
   };
   
  
  
  
  1.22      +59 -32    xml-xalan/c/src/XSLT/ElemNumber.cpp
  
  Index: ElemNumber.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemNumber.cpp,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ElemNumber.cpp	2000/08/22 20:21:19	1.21
  +++ ElemNumber.cpp	2000/08/31 19:43:09	1.22
  @@ -85,38 +85,11 @@
   
   
   #if !defined(XALAN_NO_NAMESPACES)
  -	using std::vector;
  +using std::vector;
   #endif
   
   
   
  -const XalanDOMString	ElemNumber::s_alphaCountTable(XALAN_STATIC_UCODE_STRING("ZABCDEFGHIJKLMNOPQRSTUVWXY"));
  -
  -const XalanDOMChar	elalphaCountTable[] =
  -{
  -	0x03c9, 0x03b1,0x03b2,0x03b3,0x03b4,0x03b5,0x03b6,0x03b7,0x03b8,0x03b9,0x03ba,
  -	0x03bb,0x03bc,0x03bd,0x03be,0x03bf,0x03c0,0x03c1,0x03c2,0x03c3,0x03c4,
  -	0x03c5,0x03c6,0x03c7,0x03c8,0
  -};
  -
  -
  -const XalanDOMString	s_elalphaCountTable = elalphaCountTable;
  -
  -
  -
  -const DecimalToRoman	ElemNumber::s_romanConvertTable[] = 
  -{
  -	DecimalToRoman(1000, XALAN_STATIC_UCODE_STRING("M"), 900, XALAN_STATIC_UCODE_STRING("CM")),
  -	DecimalToRoman(500, XALAN_STATIC_UCODE_STRING("D"), 400, XALAN_STATIC_UCODE_STRING("CD")),
  -	DecimalToRoman(100L, XALAN_STATIC_UCODE_STRING("C"), 90L, XALAN_STATIC_UCODE_STRING("XC")),
  -	DecimalToRoman(50L, XALAN_STATIC_UCODE_STRING("L"), 40L, XALAN_STATIC_UCODE_STRING("XL")),
  -	DecimalToRoman(10L, XALAN_STATIC_UCODE_STRING("X"), 9L, XALAN_STATIC_UCODE_STRING("IX")),
  -	DecimalToRoman(5L, XALAN_STATIC_UCODE_STRING("V"), 4L, XALAN_STATIC_UCODE_STRING("IV")),
  -	DecimalToRoman(1L, XALAN_STATIC_UCODE_STRING("I"), 1L, XALAN_STATIC_UCODE_STRING("I"))
  -};
  -
  -
  -
   ElemNumber::ElemNumber(
   			StylesheetConstructionContext&	constructionContext,
   			Stylesheet&						stylesheetTree,
  @@ -695,10 +668,6 @@
   
   	NumberFormatStringTokenizer		formatTokenizer(formatValue);
   
  -#if ! defined(__GNUC__)
  -//	std::locale		loc = getLocale(executionContext, contextNode);
  -#endif
  -
   	typedef vector<XalanDOMString>		StringVectorType;
   	typedef StringVectorType::iterator	StringVectorTypeIterator;
   
  @@ -1200,4 +1169,62 @@
   {
   	const int size = m_countNodes.getLength();
   	return (size > 0) ? m_countNodes.item(size-1) : 0;
  +}
  +
  +
  +
  +const XalanDOMChar	elalphaCountTable[] =
  +{
  +	0x03c9, 0x03b1,0x03b2,0x03b3,0x03b4,0x03b5,0x03b6,0x03b7,0x03b8,0x03b9,0x03ba,
  +	0x03bb,0x03bc,0x03bd,0x03be,0x03bf,0x03c0,0x03c1,0x03c2,0x03c3,0x03c4,
  +	0x03c5,0x03c6,0x03c7,0x03c8,0
  +};
  +
  +
  +
  +static XalanDOMString							s_elalphaCountTable;
  +
  +static XalanDOMString							s_alphaCountTable;
  +
  +static ElemNumber::DecimalToRomanVectorType		s_romanConvertTable;
  +
  +
  +
  +const XalanDOMString&	ElemNumber::s_elalphaCountTable = ::s_elalphaCountTable;
  +
  +const XalanDOMString&	ElemNumber::s_alphaCountTable = ::s_alphaCountTable;
  +
  +const ElemNumber::DecimalToRomanVectorType&		ElemNumber::s_romanConvertTable =
  +				::s_romanConvertTable;
  +
  +
  +
  +void
  +ElemNumber::initialize()
  +{
  +	::s_alphaCountTable = XALAN_STATIC_UCODE_STRING("ZABCDEFGHIJKLMNOPQRSTUVWXY");
  +
  +	::s_elalphaCountTable = elalphaCountTable;
  +
  +	::s_romanConvertTable.reserve(7);
  +
  +	::s_romanConvertTable.push_back(DecimalToRoman(1000, XALAN_STATIC_UCODE_STRING("M"), 900, XALAN_STATIC_UCODE_STRING("CM")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(500, XALAN_STATIC_UCODE_STRING("D"), 400, XALAN_STATIC_UCODE_STRING("CD")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(100L, XALAN_STATIC_UCODE_STRING("C"), 90L, XALAN_STATIC_UCODE_STRING("XC")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(50L, XALAN_STATIC_UCODE_STRING("L"), 40L, XALAN_STATIC_UCODE_STRING("XL")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(10L, XALAN_STATIC_UCODE_STRING("X"), 9L, XALAN_STATIC_UCODE_STRING("IX")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(5L, XALAN_STATIC_UCODE_STRING("V"), 4L, XALAN_STATIC_UCODE_STRING("IV")));
  +	::s_romanConvertTable.push_back(DecimalToRoman(1L, XALAN_STATIC_UCODE_STRING("I"), 1L, XALAN_STATIC_UCODE_STRING("I")));
  +}
  +
  +
  +
  +
  +void
  +ElemNumber::terminate()
  +{
  +	clear(::s_alphaCountTable);
  +	clear(::s_elalphaCountTable);;
  +
  +	DecimalToRomanVectorType().swap(::s_romanConvertTable);
   }
  
  
  
  1.17      +19 -3     xml-xalan/c/src/XSLT/ElemNumber.hpp
  
  Index: ElemNumber.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemNumber.hpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ElemNumber.hpp	2000/08/22 20:21:19	1.16
  +++ ElemNumber.hpp	2000/08/31 19:43:09	1.17
  @@ -58,7 +58,7 @@
   #define XALAN_ELEMNUMBER_HEADER_GUARD 
   
   /**
  - * $Id: ElemNumber.hpp,v 1.16 2000/08/22 20:21:19 dbertoni Exp $
  + * $Id: ElemNumber.hpp,v 1.17 2000/08/31 19:43:09 dbertoni Exp $
    * 
    * $State: Exp $
    * 
  @@ -100,12 +100,14 @@
   public:
   
   #if defined(XALAN_NO_NAMESPACES)
  +	typedef vector<DecimalToRoman>			DecimalToRomanVectorType;
   	typedef vector<int>						IntArrayType;
   	typedef vector<Counter>					CounterVectorType;
   	typedef map<const ElemNumber*,
   				CounterVectorType,
   				less<const ElemNumber*> >	ElemToCounterVectorMapType;
   #else
  +	typedef std::vector<DecimalToRoman>		DecimalToRomanVectorType;
   	typedef std::vector<int>				IntArrayType;
   	typedef std::vector<Counter>			CounterVectorType;
   	typedef std::map<const ElemNumber*,
  @@ -113,6 +115,18 @@
   #endif
   
   	/**
  +	 * Perform static initialization.  See class XSLTInit.
  +	 */
  +	static void
  +	initialize();
  +
  +	/**
  +	 * Perform static shut down.  See class XSLTInit.
  +	 */
  +	static void
  +	terminate();
  +
  +	/**
   	 * Construct an object corresponding to an "xsl:number" element
   	 * 
   	 * @param constructionContext context for construction of object
  @@ -338,14 +352,16 @@
   	* Chars for converting integers into alpha counts.
   	* @see XSLTEngineImpl#int2alphaCount
   	*/
  -	static const XalanDOMString		s_alphaCountTable;
  +	static const XalanDOMString&			s_alphaCountTable;
  +
  +	static const XalanDOMString&			s_elalphaCountTable;
   
   	/**
   	 * Table to help in converting decimals to roman numerals.
   	 * @see XSLTEngineImpl#DecimalToRoman
   	 * @see XSLTEngineImpl#long2roman
   	 */
  -	static const DecimalToRoman		s_romanConvertTable[];
  +	static const DecimalToRomanVectorType&	s_romanConvertTable;
   
   
   
  
  
  
  1.6       +1 -1      xml-xalan/c/src/XSLT/FunctionSystemProperty.cpp
  
  Index: FunctionSystemProperty.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionSystemProperty.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionSystemProperty.cpp	2000/05/15 15:57:09	1.5
  +++ FunctionSystemProperty.cpp	2000/08/31 19:43:10	1.6
  @@ -130,7 +130,7 @@
   			}
   			else if(equals(propName, XALAN_STATIC_UCODE_STRING("vendor")))
   			{
  -				result = XALAN_STATIC_UCODE_STRING("xml.apache.org");
  +				result = XALAN_STATIC_UCODE_STRING("Apache Software Foundation");
   			}
   			else if(equals(propName, XALAN_STATIC_UCODE_STRING("vendor-url")))
   			{
  
  
  
  1.33      +26 -1     xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- StylesheetExecutionContextDefault.cpp	2000/08/28 01:19:41	1.32
  +++ StylesheetExecutionContextDefault.cpp	2000/08/31 19:43:11	1.33
  @@ -1214,7 +1214,32 @@
   {
   	assert(m_collationCompareFunctor != 0);
   
  -	return (*m_collationCompareFunctor)(c_wstr(theLHS), c_wstr(theRHS));
  +	if (theLHS == 0)
  +	{
  +		if (theRHS == 0)
  +		{
  +			return 0;
  +		}
  +		else
  +		{
  +			return -1;
  +		}
  +	}
  +	else if (theRHS == 0)
  +	{
  +		if (theLHS == 0)
  +		{
  +			return 0;
  +		}
  +		else
  +		{
  +			return 1;
  +		}
  +	}
  +	else
  +	{
  +		return (*m_collationCompareFunctor)(c_wstr(theLHS), c_wstr(theRHS));
  +	}
   }
   
   
  
  
  
  1.61      +218 -178  xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- XSLTEngineImpl.cpp	2000/08/28 21:49:26	1.60
  +++ XSLTEngineImpl.cpp	2000/08/31 19:43:11	1.61
  @@ -146,33 +146,6 @@
   
   
   
  -const double			XSLTEngineImpl::s_XSLTVerSupported(1.0);
  -const XalanDOMString	XSLTEngineImpl::s_XSLNameSpaceURL(XALAN_STATIC_UCODE_STRING("http://www.w3.org/1999/XSL/Transform"));
  -const XalanDOMString	XSLTEngineImpl::s_XSLT4JNameSpaceURL(XALAN_STATIC_UCODE_STRING("http://xml.apache.org/xslt"));
  -
  -/**
  - * Control if the xsl:variable is resolved early or 
  - * late. Resolving the xsl:variable
  - * early is a drag because it means that the fragment 
  - * must be created into a DocumentFragment, and then 
  - * cloned each time to the result tree.  If we can resolve 
  - * late, that means we can evaluate directly into the 
  - * result tree.  Right now this must be kept on 'early' 
  - * because you would need to set the call stack back to 
  - * the point of xsl:invoke... which I can't quite work out 
  - * at the moment.  I don't think this is worth fixing 
  - * until NodeList variables are implemented.
  - */
  -const bool								XSLTEngineImpl::s_resolveContentsEarly = true;
  -
  -XSLTEngineImpl::AttributeKeysMapType	XSLTEngineImpl::s_attributeKeys;
  -
  -XSLTEngineImpl::ElementKeysMapType		XSLTEngineImpl::s_elementKeys;
  -
  -XSLTEngineImpl::ElementKeysMapType		XSLTEngineImpl::s_XSLT4JElementKeys;
  -
  -
  -
   //==========================================================
   // SECTION: Constructors
   //==========================================================
  @@ -223,28 +196,6 @@
   
   
   
  -void
  -XSLTEngineImpl::Initialize()
  -{
  -	InstallFunctions();
  -
  -	InitializeAttributeKeysTable();
  -	InitializeElementKeysTable();
  -	InitializeXSLT4JElementKeys();
  -}
  -
  -
  -
  -void
  -XSLTEngineImpl::Terminate()
  -{
  -	s_XSLT4JElementKeys.clear();
  -	s_elementKeys.clear();
  -	s_attributeKeys.clear();
  -}
  -
  -
  -
   /**
    * Reset the state.  This needs to be called after a process() call 
    * is invoked, if the processor is to be used again.
  @@ -3396,7 +3347,7 @@
   
   
   void
  -XSLTEngineImpl::InstallFunctions()
  +XSLTEngineImpl::installFunctions()
   {
   	XPath::installFunction(XALAN_STATIC_UCODE_STRING("current"), FunctionCurrent());
   	XPath::installFunction(XALAN_STATIC_UCODE_STRING("document"), FunctionDocument());
  @@ -3412,151 +3363,240 @@
   
   
   void
  -XSLTEngineImpl::InitializeAttributeKeysTable()
  +XSLTEngineImpl::uninstallFunctions()
   {
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_METHOD] = Constants::TATTRNAME_OUTPUT_METHOD;
  -	s_attributeKeys[Constants::ATTRNAME_AMOUNT] = Constants::TATTRNAME_AMOUNT;
  -	s_attributeKeys[Constants::ATTRNAME_ANCESTOR] = Constants::TATTRNAME_ANCESTOR;
  -	s_attributeKeys[Constants::ATTRNAME_ARCHIVE] = Constants::TATTRNAME_ARCHIVE;
  -	s_attributeKeys[Constants::ATTRNAME_ATTRIBUTE] = Constants::TATTRNAME_ATTRIBUTE;
  -	s_attributeKeys[Constants::ATTRNAME_ATTRIBUTE_SET] = Constants::TATTRNAME_ATTRIBUTE_SET;
  -	s_attributeKeys[Constants::ATTRNAME_CASEORDER] = Constants::TATTRNAME_CASEORDER;
  -	s_attributeKeys[Constants::ATTRNAME_CLASS] = Constants::TATTRNAME_CLASS;
  -	s_attributeKeys[Constants::ATTRNAME_CLASSID] = Constants::TATTRNAME_CLASSID;
  -	s_attributeKeys[Constants::ATTRNAME_CODEBASE] = Constants::TATTRNAME_CODEBASE;
  -	s_attributeKeys[Constants::ATTRNAME_CODETYPE] = Constants::TATTRNAME_CODETYPE;
  -	s_attributeKeys[Constants::ATTRNAME_CONDITION] = Constants::TATTRNAME_CONDITION;
  -	s_attributeKeys[Constants::ATTRNAME_COPYTYPE] = Constants::TATTRNAME_COPYTYPE;
  -	s_attributeKeys[Constants::ATTRNAME_COUNT] = Constants::TATTRNAME_COUNT;
  -	s_attributeKeys[Constants::ATTRNAME_DATATYPE] = Constants::TATTRNAME_DATATYPE;
  -	s_attributeKeys[Constants::ATTRNAME_DEFAULT] = Constants::TATTRNAME_DEFAULT;
  -	s_attributeKeys[Constants::ATTRNAME_DEFAULTSPACE] = Constants::TATTRNAME_DEFAULTSPACE;
  -	s_attributeKeys[Constants::ATTRNAME_DEPTH] = Constants::TATTRNAME_DEPTH;
  -	s_attributeKeys[Constants::ATTRNAME_DIGITGROUPSEP] = Constants::TATTRNAME_DIGITGROUPSEP;
  -	s_attributeKeys[Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING] = Constants::TATTRNAME_DISABLE_OUTPUT_ESCAPING;
  -	s_attributeKeys[Constants::ATTRNAME_ELEMENT] = Constants::TATTRNAME_ELEMENT;
  -	s_attributeKeys[Constants::ATTRNAME_ELEMENTS] = Constants::TATTRNAME_ELEMENTS;
  -	s_attributeKeys[Constants::ATTRNAME_EXPR] = Constants::TATTRNAME_EXPR;
  -	s_attributeKeys[Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES] = Constants::TATTRNAME_EXTENSIONELEMENTPREFIXES;
  -	s_attributeKeys[Constants::ATTRNAME_FORMAT] = Constants::TATTRNAME_FORMAT;
  -	s_attributeKeys[Constants::ATTRNAME_FROM] = Constants::TATTRNAME_FROM;
  -	s_attributeKeys[Constants::ATTRNAME_GROUPINGSEPARATOR] = Constants::TATTRNAME_GROUPINGSEPARATOR;
  -	s_attributeKeys[Constants::ATTRNAME_GROUPINGSIZE] = Constants::TATTRNAME_GROUPINGSIZE;
  -	s_attributeKeys[Constants::ATTRNAME_HREF] = Constants::TATTRNAME_HREF;
  -	s_attributeKeys[Constants::ATTRNAME_ID] = Constants::TATTRNAME_ID;
  -	s_attributeKeys[Constants::ATTRNAME_IMPORTANCE] = Constants::TATTRNAME_IMPORTANCE;
  -	s_attributeKeys[Constants::ATTRNAME_INDENTRESULT] = Constants::TATTRNAME_INDENTRESULT;
  -	s_attributeKeys[Constants::ATTRNAME_LANG] = Constants::TATTRNAME_LANG;
  -	s_attributeKeys[Constants::ATTRNAME_LETTERVALUE] = Constants::TATTRNAME_LETTERVALUE;
  -	s_attributeKeys[Constants::ATTRNAME_LEVEL] = Constants::TATTRNAME_LEVEL;
  -	s_attributeKeys[Constants::ATTRNAME_MATCH] = Constants::TATTRNAME_MATCH;
  -	s_attributeKeys[Constants::ATTRNAME_METHOD] = Constants::TATTRNAME_METHOD;
  -	s_attributeKeys[Constants::ATTRNAME_MODE] = Constants::TATTRNAME_MODE;
  -	s_attributeKeys[Constants::ATTRNAME_NAME] = Constants::TATTRNAME_NAME;
  -	s_attributeKeys[Constants::ATTRNAME_NAMESPACE] = Constants::TATTRNAME_NAMESPACE;
  -	s_attributeKeys[Constants::ATTRNAME_NDIGITSPERGROUP] = Constants::TATTRNAME_NDIGITSPERGROUP;
  -	s_attributeKeys[Constants::ATTRNAME_NS] = Constants::TATTRNAME_NS;
  -	s_attributeKeys[Constants::ATTRNAME_ONLY] = Constants::TATTRNAME_ONLY;
  -	s_attributeKeys[Constants::ATTRNAME_ORDER] = Constants::TATTRNAME_ORDER;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS] = Constants::TATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC] = Constants::TATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM] = Constants::TATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_ENCODING] = Constants::TATTRNAME_OUTPUT_ENCODING;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_INDENT] = Constants::TATTRNAME_OUTPUT_INDENT;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_MEDIATYPE] = Constants::TATTRNAME_OUTPUT_MEDIATYPE;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_STANDALONE] = Constants::TATTRNAME_OUTPUT_STANDALONE;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_VERSION] = Constants::TATTRNAME_OUTPUT_VERSION;
  -	s_attributeKeys[Constants::ATTRNAME_OUTPUT_OMITXMLDECL] = Constants::TATTRNAME_OUTPUT_OMITXMLDECL;
  -	s_attributeKeys[Constants::ATTRNAME_PRIORITY] = Constants::TATTRNAME_PRIORITY;
  -	s_attributeKeys[Constants::ATTRNAME_REFID] = Constants::TATTRNAME_REFID;
  -	s_attributeKeys[Constants::ATTRNAME_RESULTNS] = Constants::TATTRNAME_RESULTNS;
  -	s_attributeKeys[Constants::ATTRNAME_SELECT] = Constants::TATTRNAME_SELECT;
  -	s_attributeKeys[Constants::ATTRNAME_SEQUENCESRC] = Constants::TATTRNAME_SEQUENCESRC;
  -	s_attributeKeys[Constants::ATTRNAME_STYLE] = Constants::TATTRNAME_STYLE;
  -	s_attributeKeys[Constants::ATTRNAME_TEST] = Constants::TATTRNAME_TEST;
  -	s_attributeKeys[Constants::ATTRNAME_TOSTRING] = Constants::TATTRNAME_TOSTRING;
  -	s_attributeKeys[Constants::ATTRNAME_TYPE] = Constants::TATTRNAME_TYPE;
  -	s_attributeKeys[Constants::ATTRNAME_USE] = Constants::TATTRNAME_USE;
  -	s_attributeKeys[Constants::ATTRNAME_USEATTRIBUTESETS] = Constants::TATTRNAME_USEATTRIBUTESETS;
  -	s_attributeKeys[Constants::ATTRNAME_VALUE] = Constants::TATTRNAME_VALUE;
  -
  -	s_attributeKeys[Constants::ATTRNAME_XMLNSDEF] = Constants::TATTRNAME_XMLNSDEF;
  -	s_attributeKeys[Constants::ATTRNAME_XMLNS] = Constants::TATTRNAME_XMLNS;
  -	s_attributeKeys[Constants::ATTRNAME_XMLSPACE] = Constants::TATTRNAME_XMLSPACE;
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("current"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("document"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("element-available"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("function-available"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("format-number"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("generate-id"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("key"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("system-property"));
  +	XPath::uninstallFunction(XALAN_STATIC_UCODE_STRING("unparsed-entity-uri"));
  +}
  +
  +
  +
  +void
  +XSLTEngineImpl::initializeAttributeKeysTable(AttributeKeysMapType&	theAttributeKeys)
  +{
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_METHOD] = Constants::TATTRNAME_OUTPUT_METHOD;
  +	theAttributeKeys[Constants::ATTRNAME_AMOUNT] = Constants::TATTRNAME_AMOUNT;
  +	theAttributeKeys[Constants::ATTRNAME_ANCESTOR] = Constants::TATTRNAME_ANCESTOR;
  +	theAttributeKeys[Constants::ATTRNAME_ARCHIVE] = Constants::TATTRNAME_ARCHIVE;
  +	theAttributeKeys[Constants::ATTRNAME_ATTRIBUTE] = Constants::TATTRNAME_ATTRIBUTE;
  +	theAttributeKeys[Constants::ATTRNAME_ATTRIBUTE_SET] = Constants::TATTRNAME_ATTRIBUTE_SET;
  +	theAttributeKeys[Constants::ATTRNAME_CASEORDER] = Constants::TATTRNAME_CASEORDER;
  +	theAttributeKeys[Constants::ATTRNAME_CLASS] = Constants::TATTRNAME_CLASS;
  +	theAttributeKeys[Constants::ATTRNAME_CLASSID] = Constants::TATTRNAME_CLASSID;
  +	theAttributeKeys[Constants::ATTRNAME_CODEBASE] = Constants::TATTRNAME_CODEBASE;
  +	theAttributeKeys[Constants::ATTRNAME_CODETYPE] = Constants::TATTRNAME_CODETYPE;
  +	theAttributeKeys[Constants::ATTRNAME_CONDITION] = Constants::TATTRNAME_CONDITION;
  +	theAttributeKeys[Constants::ATTRNAME_COPYTYPE] = Constants::TATTRNAME_COPYTYPE;
  +	theAttributeKeys[Constants::ATTRNAME_COUNT] = Constants::TATTRNAME_COUNT;
  +	theAttributeKeys[Constants::ATTRNAME_DATATYPE] = Constants::TATTRNAME_DATATYPE;
  +	theAttributeKeys[Constants::ATTRNAME_DEFAULT] = Constants::TATTRNAME_DEFAULT;
  +	theAttributeKeys[Constants::ATTRNAME_DEFAULTSPACE] = Constants::TATTRNAME_DEFAULTSPACE;
  +	theAttributeKeys[Constants::ATTRNAME_DEPTH] = Constants::TATTRNAME_DEPTH;
  +	theAttributeKeys[Constants::ATTRNAME_DIGITGROUPSEP] = Constants::TATTRNAME_DIGITGROUPSEP;
  +	theAttributeKeys[Constants::ATTRNAME_DISABLE_OUTPUT_ESCAPING] = Constants::TATTRNAME_DISABLE_OUTPUT_ESCAPING;
  +	theAttributeKeys[Constants::ATTRNAME_ELEMENT] = Constants::TATTRNAME_ELEMENT;
  +	theAttributeKeys[Constants::ATTRNAME_ELEMENTS] = Constants::TATTRNAME_ELEMENTS;
  +	theAttributeKeys[Constants::ATTRNAME_EXPR] = Constants::TATTRNAME_EXPR;
  +	theAttributeKeys[Constants::ATTRNAME_EXTENSIONELEMENTPREFIXES] = Constants::TATTRNAME_EXTENSIONELEMENTPREFIXES;
  +	theAttributeKeys[Constants::ATTRNAME_FORMAT] = Constants::TATTRNAME_FORMAT;
  +	theAttributeKeys[Constants::ATTRNAME_FROM] = Constants::TATTRNAME_FROM;
  +	theAttributeKeys[Constants::ATTRNAME_GROUPINGSEPARATOR] = Constants::TATTRNAME_GROUPINGSEPARATOR;
  +	theAttributeKeys[Constants::ATTRNAME_GROUPINGSIZE] = Constants::TATTRNAME_GROUPINGSIZE;
  +	theAttributeKeys[Constants::ATTRNAME_HREF] = Constants::TATTRNAME_HREF;
  +	theAttributeKeys[Constants::ATTRNAME_ID] = Constants::TATTRNAME_ID;
  +	theAttributeKeys[Constants::ATTRNAME_IMPORTANCE] = Constants::TATTRNAME_IMPORTANCE;
  +	theAttributeKeys[Constants::ATTRNAME_INDENTRESULT] = Constants::TATTRNAME_INDENTRESULT;
  +	theAttributeKeys[Constants::ATTRNAME_LANG] = Constants::TATTRNAME_LANG;
  +	theAttributeKeys[Constants::ATTRNAME_LETTERVALUE] = Constants::TATTRNAME_LETTERVALUE;
  +	theAttributeKeys[Constants::ATTRNAME_LEVEL] = Constants::TATTRNAME_LEVEL;
  +	theAttributeKeys[Constants::ATTRNAME_MATCH] = Constants::TATTRNAME_MATCH;
  +	theAttributeKeys[Constants::ATTRNAME_METHOD] = Constants::TATTRNAME_METHOD;
  +	theAttributeKeys[Constants::ATTRNAME_MODE] = Constants::TATTRNAME_MODE;
  +	theAttributeKeys[Constants::ATTRNAME_NAME] = Constants::TATTRNAME_NAME;
  +	theAttributeKeys[Constants::ATTRNAME_NAMESPACE] = Constants::TATTRNAME_NAMESPACE;
  +	theAttributeKeys[Constants::ATTRNAME_NDIGITSPERGROUP] = Constants::TATTRNAME_NDIGITSPERGROUP;
  +	theAttributeKeys[Constants::ATTRNAME_NS] = Constants::TATTRNAME_NS;
  +	theAttributeKeys[Constants::ATTRNAME_ONLY] = Constants::TATTRNAME_ONLY;
  +	theAttributeKeys[Constants::ATTRNAME_ORDER] = Constants::TATTRNAME_ORDER;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS] = Constants::TATTRNAME_OUTPUT_CDATA_SECTION_ELEMENTS;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_DOCTYPE_PUBLIC] = Constants::TATTRNAME_OUTPUT_DOCTYPE_PUBLIC;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_DOCTYPE_SYSTEM] = Constants::TATTRNAME_OUTPUT_DOCTYPE_SYSTEM;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_ENCODING] = Constants::TATTRNAME_OUTPUT_ENCODING;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_INDENT] = Constants::TATTRNAME_OUTPUT_INDENT;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_MEDIATYPE] = Constants::TATTRNAME_OUTPUT_MEDIATYPE;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_STANDALONE] = Constants::TATTRNAME_OUTPUT_STANDALONE;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_VERSION] = Constants::TATTRNAME_OUTPUT_VERSION;
  +	theAttributeKeys[Constants::ATTRNAME_OUTPUT_OMITXMLDECL] = Constants::TATTRNAME_OUTPUT_OMITXMLDECL;
  +	theAttributeKeys[Constants::ATTRNAME_PRIORITY] = Constants::TATTRNAME_PRIORITY;
  +	theAttributeKeys[Constants::ATTRNAME_REFID] = Constants::TATTRNAME_REFID;
  +	theAttributeKeys[Constants::ATTRNAME_RESULTNS] = Constants::TATTRNAME_RESULTNS;
  +	theAttributeKeys[Constants::ATTRNAME_SELECT] = Constants::TATTRNAME_SELECT;
  +	theAttributeKeys[Constants::ATTRNAME_SEQUENCESRC] = Constants::TATTRNAME_SEQUENCESRC;
  +	theAttributeKeys[Constants::ATTRNAME_STYLE] = Constants::TATTRNAME_STYLE;
  +	theAttributeKeys[Constants::ATTRNAME_TEST] = Constants::TATTRNAME_TEST;
  +	theAttributeKeys[Constants::ATTRNAME_TOSTRING] = Constants::TATTRNAME_TOSTRING;
  +	theAttributeKeys[Constants::ATTRNAME_TYPE] = Constants::TATTRNAME_TYPE;
  +	theAttributeKeys[Constants::ATTRNAME_USE] = Constants::TATTRNAME_USE;
  +	theAttributeKeys[Constants::ATTRNAME_USEATTRIBUTESETS] = Constants::TATTRNAME_USEATTRIBUTESETS;
  +	theAttributeKeys[Constants::ATTRNAME_VALUE] = Constants::TATTRNAME_VALUE;
  +
  +	theAttributeKeys[Constants::ATTRNAME_XMLNSDEF] = Constants::TATTRNAME_XMLNSDEF;
  +	theAttributeKeys[Constants::ATTRNAME_XMLNS] = Constants::TATTRNAME_XMLNS;
  +	theAttributeKeys[Constants::ATTRNAME_XMLSPACE] = Constants::TATTRNAME_XMLSPACE;
   }
   
   
   
   void
  -XSLTEngineImpl::InitializeElementKeysTable()
  -{
  -	s_elementKeys[Constants::ELEMNAME_APPLY_TEMPLATES_STRING] = Constants::ELEMNAME_APPLY_TEMPLATES;
  -	s_elementKeys[Constants::ELEMNAME_WITHPARAM_STRING] = Constants::ELEMNAME_WITHPARAM;
  -	s_elementKeys[Constants::ELEMNAME_CONSTRUCT_STRING] = Constants::ELEMNAME_CONSTRUCT;
  -	s_elementKeys[Constants::ELEMNAME_CONTENTS_STRING] = Constants::ELEMNAME_CONTENTS;
  -	s_elementKeys[Constants::ELEMNAME_COPY_STRING] = Constants::ELEMNAME_COPY;
  -	s_elementKeys[Constants::ELEMNAME_COPY_OF_STRING] = Constants::ELEMNAME_COPY_OF;
  -
  -	s_elementKeys[Constants::ELEMNAME_ATTRIBUTESET_STRING] = Constants::ELEMNAME_DEFINEATTRIBUTESET;
  -
  -	s_elementKeys[Constants::ELEMNAME_USE_STRING] = Constants::ELEMNAME_USE;
  -
  -	s_elementKeys[Constants::ELEMNAME_VARIABLE_STRING] = Constants::ELEMNAME_VARIABLE;
  -	s_elementKeys[Constants::ELEMNAME_PARAMVARIABLE_STRING] = Constants::ELEMNAME_PARAMVARIABLE;
  -
  -	s_elementKeys[Constants::ELEMNAME_DISPLAYIF_STRING] = Constants::ELEMNAME_DISPLAYIF;
  -	s_elementKeys[Constants::ELEMNAME_EMPTY_STRING] = Constants::ELEMNAME_EMPTY;
  -	s_elementKeys[Constants::ELEMNAME_EVAL_STRING] = Constants::ELEMNAME_EVAL;
  -	s_elementKeys[Constants::ELEMNAME_CALLTEMPLATE_STRING] = Constants::ELEMNAME_CALLTEMPLATE;
  -	s_elementKeys[Constants::ELEMNAME_TEMPLATE_STRING] = Constants::ELEMNAME_TEMPLATE;
  -	s_elementKeys[Constants::ELEMNAME_STYLESHEET_STRING] = Constants::ELEMNAME_STYLESHEET;
  -	s_elementKeys[Constants::ELEMNAME_TRANSFORM_STRING] = Constants::ELEMNAME_STYLESHEET;
  -	s_elementKeys[Constants::ELEMNAME_IMPORT_STRING] = Constants::ELEMNAME_IMPORT;
  -	s_elementKeys[Constants::ELEMNAME_INCLUDE_STRING] = Constants::ELEMNAME_INCLUDE;
  -	s_elementKeys[Constants::ELEMNAME_FOREACH_STRING] = Constants::ELEMNAME_FOREACH;
  -	s_elementKeys[Constants::ELEMNAME_VALUEOF_STRING] = Constants::ELEMNAME_VALUEOF;
  -	s_elementKeys[Constants::ELEMNAME_KEY_STRING] = Constants::ELEMNAME_KEY;
  -	s_elementKeys[Constants::ELEMNAME_STRIPSPACE_STRING] = Constants::ELEMNAME_STRIPSPACE;
  -	s_elementKeys[Constants::ELEMNAME_PRESERVESPACE_STRING] = Constants::ELEMNAME_PRESERVESPACE;
  -	s_elementKeys[Constants::ELEMNAME_NUMBER_STRING] = Constants::ELEMNAME_NUMBER;
  -	s_elementKeys[Constants::ELEMNAME_IF_STRING] = Constants::ELEMNAME_IF;
  -	s_elementKeys[Constants::ELEMNAME_CHOOSE_STRING] = Constants::ELEMNAME_CHOOSE;
  -	s_elementKeys[Constants::ELEMNAME_WHEN_STRING] = Constants::ELEMNAME_WHEN;
  -	s_elementKeys[Constants::ELEMNAME_OTHERWISE_STRING] = Constants::ELEMNAME_OTHERWISE;
  -	s_elementKeys[Constants::ELEMNAME_TEXT_STRING] = Constants::ELEMNAME_TEXT;
  -	s_elementKeys[Constants::ELEMNAME_ELEMENT_STRING] = Constants::ELEMNAME_ELEMENT;
  -	s_elementKeys[Constants::ELEMNAME_ATTRIBUTE_STRING] = Constants::ELEMNAME_ATTRIBUTE;
  -	s_elementKeys[Constants::ELEMNAME_SORT_STRING] = Constants::ELEMNAME_SORT;
  -	s_elementKeys[Constants::ELEMNAME_PI_STRING] = Constants::ELEMNAME_PI;
  -	s_elementKeys[Constants::ELEMNAME_COMMENT_STRING] = Constants::ELEMNAME_COMMENT;
  +XSLTEngineImpl::initializeElementKeysTable(ElementKeysMapType&	theElementKeys)
  +{
  +	theElementKeys[Constants::ELEMNAME_APPLY_TEMPLATES_STRING] = Constants::ELEMNAME_APPLY_TEMPLATES;
  +	theElementKeys[Constants::ELEMNAME_WITHPARAM_STRING] = Constants::ELEMNAME_WITHPARAM;
  +	theElementKeys[Constants::ELEMNAME_CONSTRUCT_STRING] = Constants::ELEMNAME_CONSTRUCT;
  +	theElementKeys[Constants::ELEMNAME_CONTENTS_STRING] = Constants::ELEMNAME_CONTENTS;
  +	theElementKeys[Constants::ELEMNAME_COPY_STRING] = Constants::ELEMNAME_COPY;
  +	theElementKeys[Constants::ELEMNAME_COPY_OF_STRING] = Constants::ELEMNAME_COPY_OF;
  +
  +	theElementKeys[Constants::ELEMNAME_ATTRIBUTESET_STRING] = Constants::ELEMNAME_DEFINEATTRIBUTESET;
  +
  +	theElementKeys[Constants::ELEMNAME_USE_STRING] = Constants::ELEMNAME_USE;
  +
  +	theElementKeys[Constants::ELEMNAME_VARIABLE_STRING] = Constants::ELEMNAME_VARIABLE;
  +	theElementKeys[Constants::ELEMNAME_PARAMVARIABLE_STRING] = Constants::ELEMNAME_PARAMVARIABLE;
  +
  +	theElementKeys[Constants::ELEMNAME_DISPLAYIF_STRING] = Constants::ELEMNAME_DISPLAYIF;
  +	theElementKeys[Constants::ELEMNAME_EMPTY_STRING] = Constants::ELEMNAME_EMPTY;
  +	theElementKeys[Constants::ELEMNAME_EVAL_STRING] = Constants::ELEMNAME_EVAL;
  +	theElementKeys[Constants::ELEMNAME_CALLTEMPLATE_STRING] = Constants::ELEMNAME_CALLTEMPLATE;
  +	theElementKeys[Constants::ELEMNAME_TEMPLATE_STRING] = Constants::ELEMNAME_TEMPLATE;
  +	theElementKeys[Constants::ELEMNAME_STYLESHEET_STRING] = Constants::ELEMNAME_STYLESHEET;
  +	theElementKeys[Constants::ELEMNAME_TRANSFORM_STRING] = Constants::ELEMNAME_STYLESHEET;
  +	theElementKeys[Constants::ELEMNAME_IMPORT_STRING] = Constants::ELEMNAME_IMPORT;
  +	theElementKeys[Constants::ELEMNAME_INCLUDE_STRING] = Constants::ELEMNAME_INCLUDE;
  +	theElementKeys[Constants::ELEMNAME_FOREACH_STRING] = Constants::ELEMNAME_FOREACH;
  +	theElementKeys[Constants::ELEMNAME_VALUEOF_STRING] = Constants::ELEMNAME_VALUEOF;
  +	theElementKeys[Constants::ELEMNAME_KEY_STRING] = Constants::ELEMNAME_KEY;
  +	theElementKeys[Constants::ELEMNAME_STRIPSPACE_STRING] = Constants::ELEMNAME_STRIPSPACE;
  +	theElementKeys[Constants::ELEMNAME_PRESERVESPACE_STRING] = Constants::ELEMNAME_PRESERVESPACE;
  +	theElementKeys[Constants::ELEMNAME_NUMBER_STRING] = Constants::ELEMNAME_NUMBER;
  +	theElementKeys[Constants::ELEMNAME_IF_STRING] = Constants::ELEMNAME_IF;
  +	theElementKeys[Constants::ELEMNAME_CHOOSE_STRING] = Constants::ELEMNAME_CHOOSE;
  +	theElementKeys[Constants::ELEMNAME_WHEN_STRING] = Constants::ELEMNAME_WHEN;
  +	theElementKeys[Constants::ELEMNAME_OTHERWISE_STRING] = Constants::ELEMNAME_OTHERWISE;
  +	theElementKeys[Constants::ELEMNAME_TEXT_STRING] = Constants::ELEMNAME_TEXT;
  +	theElementKeys[Constants::ELEMNAME_ELEMENT_STRING] = Constants::ELEMNAME_ELEMENT;
  +	theElementKeys[Constants::ELEMNAME_ATTRIBUTE_STRING] = Constants::ELEMNAME_ATTRIBUTE;
  +	theElementKeys[Constants::ELEMNAME_SORT_STRING] = Constants::ELEMNAME_SORT;
  +	theElementKeys[Constants::ELEMNAME_PI_STRING] = Constants::ELEMNAME_PI;
  +	theElementKeys[Constants::ELEMNAME_COMMENT_STRING] = Constants::ELEMNAME_COMMENT;
      
  -	s_elementKeys[Constants::ELEMNAME_COUNTER_STRING] = Constants::ELEMNAME_COUNTER;
  -	s_elementKeys[Constants::ELEMNAME_COUNTERS_STRING] = Constants::ELEMNAME_COUNTERS;
  -	s_elementKeys[Constants::ELEMNAME_COUNTERINCREMENT_STRING] = Constants::ELEMNAME_COUNTERINCREMENT;
  -	s_elementKeys[Constants::ELEMNAME_COUNTERRESET_STRING] = Constants::ELEMNAME_COUNTERRESET;
  -	s_elementKeys[Constants::ELEMNAME_COUNTERSCOPE_STRING] = Constants::ELEMNAME_COUNTERSCOPE;
  +	theElementKeys[Constants::ELEMNAME_COUNTER_STRING] = Constants::ELEMNAME_COUNTER;
  +	theElementKeys[Constants::ELEMNAME_COUNTERS_STRING] = Constants::ELEMNAME_COUNTERS;
  +	theElementKeys[Constants::ELEMNAME_COUNTERINCREMENT_STRING] = Constants::ELEMNAME_COUNTERINCREMENT;
  +	theElementKeys[Constants::ELEMNAME_COUNTERRESET_STRING] = Constants::ELEMNAME_COUNTERRESET;
  +	theElementKeys[Constants::ELEMNAME_COUNTERSCOPE_STRING] = Constants::ELEMNAME_COUNTERSCOPE;
   	
  -	s_elementKeys[Constants::ELEMNAME_APPLY_IMPORTS_STRING] = Constants::ELEMNAME_APPLY_IMPORTS;
  +	theElementKeys[Constants::ELEMNAME_APPLY_IMPORTS_STRING] = Constants::ELEMNAME_APPLY_IMPORTS;
   	
  -	s_elementKeys[Constants::ELEMNAME_EXTENSION_STRING] = Constants::ELEMNAME_EXTENSION;
  -	s_elementKeys[Constants::ELEMNAME_MESSAGE_STRING] = Constants::ELEMNAME_MESSAGE;
  -	s_elementKeys[Constants::ELEMNAME_LOCALE_STRING] = Constants::ELEMNAME_LOCALE;
  -	s_elementKeys[Constants::ELEMNAME_FALLBACK_STRING] = Constants::ELEMNAME_FALLBACK;
  -	s_elementKeys[Constants::ELEMNAME_OUTPUT_STRING] = Constants::ELEMNAME_OUTPUT;
  +	theElementKeys[Constants::ELEMNAME_EXTENSION_STRING] = Constants::ELEMNAME_EXTENSION;
  +	theElementKeys[Constants::ELEMNAME_MESSAGE_STRING] = Constants::ELEMNAME_MESSAGE;
  +	theElementKeys[Constants::ELEMNAME_LOCALE_STRING] = Constants::ELEMNAME_LOCALE;
  +	theElementKeys[Constants::ELEMNAME_FALLBACK_STRING] = Constants::ELEMNAME_FALLBACK;
  +	theElementKeys[Constants::ELEMNAME_OUTPUT_STRING] = Constants::ELEMNAME_OUTPUT;
   
  -	s_elementKeys[Constants::ELEMNAME_DECIMALFORMAT_STRING] = Constants::ELEMNAME_DECIMALFORMAT;
  -	s_elementKeys[Constants::ELEMNAME_NSALIAS_STRING] = Constants::ELEMNAME_NSALIAS;
  +	theElementKeys[Constants::ELEMNAME_DECIMALFORMAT_STRING] = Constants::ELEMNAME_DECIMALFORMAT;
  +	theElementKeys[Constants::ELEMNAME_NSALIAS_STRING] = Constants::ELEMNAME_NSALIAS;
  +}
  +
  +
  +
  +void
  +XSLTEngineImpl::initializeXSLT4JElementKeys(ElementKeysMapType&		theElementKeys)
  +{
  +	theElementKeys[Constants::ELEMNAME_COMPONENT_STRING] = Constants::ELEMNAME_COMPONENT;
  +	theElementKeys[Constants::ELEMNAME_SCRIPT_STRING] = Constants::ELEMNAME_SCRIPT;
   }
   
   
   
  +static XalanDOMString							s_XSLNameSpaceURL;
  +
  +static XalanDOMString							s_XSLT4JNameSpaceURL;
  +
  +static XSLTEngineImpl::AttributeKeysMapType		s_attributeKeys;
  +
  +static XSLTEngineImpl::ElementKeysMapType		s_elementKeys;
  +
  +static XSLTEngineImpl::ElementKeysMapType		s_XSLT4JElementKeys;
  +
  +
  +
  +const double			XSLTEngineImpl::s_XSLTVerSupported(1.0);
  +
  +const XalanDOMString&	XSLTEngineImpl::s_XSLNameSpaceURL = ::s_XSLNameSpaceURL;
  +
  +const XalanDOMString&	XSLTEngineImpl::s_XSLT4JNameSpaceURL = ::s_XSLT4JNameSpaceURL;
  +
  +/**
  + * Control if the xsl:variable is resolved early or 
  + * late. Resolving the xsl:variable
  + * early is a drag because it means that the fragment 
  + * must be created into a DocumentFragment, and then 
  + * cloned each time to the result tree.  If we can resolve 
  + * late, that means we can evaluate directly into the 
  + * result tree.  Right now this must be kept on 'early' 
  + * because you would need to set the call stack back to 
  + * the point of xsl:invoke... which I can't quite work out 
  + * at the moment.  I don't think this is worth fixing 
  + * until NodeList variables are implemented.
  + */
  +const bool										XSLTEngineImpl::s_resolveContentsEarly = true;
  +
  +const XSLTEngineImpl::AttributeKeysMapType&		XSLTEngineImpl::s_attributeKeys = ::s_attributeKeys;
  +
  +const XSLTEngineImpl::ElementKeysMapType&		XSLTEngineImpl::s_elementKeys = ::s_elementKeys;
  +
  +const XSLTEngineImpl::ElementKeysMapType&		XSLTEngineImpl::s_XSLT4JElementKeys = ::s_XSLT4JElementKeys;
  +
  +
  +
   void
  -XSLTEngineImpl::InitializeXSLT4JElementKeys()
  +XSLTEngineImpl::initialize()
   {
  -	s_XSLT4JElementKeys[Constants::ELEMNAME_COMPONENT_STRING] = Constants::ELEMNAME_COMPONENT;
  -	s_XSLT4JElementKeys[Constants::ELEMNAME_SCRIPT_STRING] = Constants::ELEMNAME_SCRIPT;
  +	::s_XSLNameSpaceURL = XALAN_STATIC_UCODE_STRING("http://www.w3.org/1999/XSL/Transform");
  +
  +	::s_XSLT4JNameSpaceURL = XALAN_STATIC_UCODE_STRING("http://xml.apache.org/xslt");
  +
  +	installFunctions();
  +
  +	initializeAttributeKeysTable(::s_attributeKeys);
  +
  +	initializeElementKeysTable(::s_elementKeys);
  +
  +	initializeXSLT4JElementKeys(::s_XSLT4JElementKeys);
   }
   
   
  +
  +void
  +XSLTEngineImpl::terminate()
  +{
  +	ElementKeysMapType().swap(::s_XSLT4JElementKeys);
   
  -//////////////////////////////////////////////////////////////////////////////
  +	ElementKeysMapType().swap(::s_elementKeys);
  +
  +	AttributeKeysMapType().swap(::s_attributeKeys);
  +
  +	uninstallFunctions();
  +
  +	clear(::s_XSLT4JNameSpaceURL);
  +
  +	clear(::s_XSLNameSpaceURL);
  +}
  
  
  
  1.46      +21 -31    xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
  
  Index: XSLTEngineImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- XSLTEngineImpl.hpp	2000/08/28 01:19:41	1.45
  +++ XSLTEngineImpl.hpp	2000/08/31 19:43:11	1.46
  @@ -204,17 +204,16 @@
   
   	/**
   	 * Perform initialization of statics -- must be called before any
  -	 * processing occurs
  +	 * processing occurs.  See class XSLTInit.
   	 */
   	static void
  -	Initialize();
  +	initialize();
   
   	/**
  -	 * Perform termination of statics -- can be called to make memory
  -	 * leak detection easier.
  +	 * Perform termination of statics.  See class XSLTInit.
   	 */
   	static void
  -	Terminate();
  +	terminate();
   
   	// These methods are inherited from XSLTProcessor ...
   	
  @@ -1441,33 +1440,33 @@
   	/**
   	 * The namespace that we must match as a minimum for XSLT.
   	 */
  -	static const XalanDOMString		s_XSLNameSpaceURL;	//"http://www.w3.org/1999/XSL/Transform"
  +	static const XalanDOMString&		s_XSLNameSpaceURL;	//"http://www.w3.org/1999/XSL/Transform"
   
   	/**
   	 * The minimum version of XSLT supported.
   	 */
  -	static const double s_XSLTVerSupported; // 1.0
  +	static const double					s_XSLTVerSupported; // 1.0
   
   	/**
   	 * Special Xalan namespace for built-in extensions.
   	 */
  -	static const XalanDOMString s_XSLT4JNameSpaceURL; // "http://xml.apache.org/xslt"
  +	static const XalanDOMString&		s_XSLT4JNameSpaceURL; // "http://xml.apache.org/xslt"
   
   
   	/**
  -	 * Hash table that can look up XSLT4J extensions element IDs via name.
  +	 * Map that can look up XSLT4J extensions element IDs via name.
   	 */
  -	static ElementKeysMapType		s_XSLT4JElementKeys;
  +	static const ElementKeysMapType&	s_XSLT4JElementKeys;
   
   	/**
  -	 * Hash table of XSLT IDs for attribute names.
  +	 * Map of XSLT IDs for attribute names.
   	 */
  -	static AttributeKeysMapType s_attributeKeys;
  +	static const AttributeKeysMapType&	s_attributeKeys;
   
   	/**
  -	 * Hash table of XSLT element IDs for element names.
  +	 * Map of XSLT element IDs for element names.
   	 */
  -	static ElementKeysMapType	s_elementKeys;
  +	static const ElementKeysMapType&	s_elementKeys;
   
   	/**
   	 * If this is set to true, selects will be traced
  @@ -1485,7 +1484,7 @@
   	 */
   	PrintWriter*	m_diagnosticsPrintWriter;
   
  -  /* For diagnostics */
  +	/* For diagnostics */
   	mutable DurationsTableMapType	m_durationsTable;
   
   	/**
  @@ -1556,19 +1555,7 @@
   	 */
   	bool	m_stripWhiteSpace; // default default-space="preserve"
   
  -//	typedef std::set<XalanDOMString>		WhitespaceLookupTableType;
  -
   	/**
  -	 * A lookup table of all space preserving elements.
  -	 */
  -//	WhitespaceLookupTableType	m_whitespacePreservingElements;
  -
  -	/**
  -	 * A lookup table of all space stripping elements.
  -	 */
  -//	WhitespaceLookupTableType	m_whitespaceStrippingElements;
  -
  -	/**
   	 * Control if the xsl:variable is resolved early or 
   	 * late. Resolving the xsl:variable
   	 * early is a drag because it means that the fragment 
  @@ -1648,17 +1635,20 @@
   	StylesheetExecutionContext*		m_executionContext;
   
   
  +	static void
  +	installFunctions();
  +
   	static void
  -	InstallFunctions();
  +	uninstallFunctions();
   
   	static void
  -	InitializeAttributeKeysTable();
  +	initializeAttributeKeysTable(AttributeKeysMapType&	theAttributeKeys);
   
   	static void
  -	InitializeElementKeysTable();
  +	initializeElementKeysTable(ElementKeysMapType&	theElementKeys);
   
   	static void
  -	InitializeXSLT4JElementKeys();
  +	initializeXSLT4JElementKeys(ElementKeysMapType&		theElementKeys);
   };
   
   
  
  
  
  1.1                  xml-xalan/c/src/XSLT/XSLTInit.cpp
  
  Index: XSLTInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "XSLTInit.hpp"
  
  
  
  #include "Constants.hpp"
  #include "ElemNumber.hpp"
  #include "XSLTEngineImpl.hpp"
  
  
  
  unsigned long	XSLTInit::s_initCounter = 0;
  
  
  
  XSLTInit::XSLTInit() :
  	m_platformSupportInit(),
  	m_domSupportInit(),
  	m_xmlSupportInit(),
  	m_xpathInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  XSLTInit::~XSLTInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  XSLTInit::initialize()
  {
  	ElemNumber::initialize();
  
  	Constants::initialize();
  
  	XSLTEngineImpl::initialize();
  }
  
  
  
  void
  XSLTInit::terminate()
  {
  	XSLTEngineImpl::terminate();
  
  	Constants::terminate();
  
  	ElemNumber::terminate();
  }
  
  
  
  1.1                  xml-xalan/c/src/XSLT/XSLTInit.hpp
  
  Index: XSLTInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(XSLTINIT_INCLUDE_GUARD_1357924680)
  #define XSLTINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XSLT/XSLTDefinitions.hpp>
  
  
  
  #include <PlatformSupport/PlatformSupportInit.hpp>
  
  
  
  #include <DOMSupport/DOMSupportInit.hpp>
  
  
  
  #include <XMLSupport/XMLSupportInit.hpp>
  
  
  
  #include <XPath/XPathInit.hpp>
  
  
  
  class XALAN_XSLT_EXPORT XSLTInit
  {
  public:
  
  	explicit
  	XSLTInit();
  
  	~XSLTInit();
  
  private:
  
  	// Not implemented...
  	XSLTInit(const XSLTInit&);
  
  	XSLTInit&
  	operator=(const XSLTInit&);
  
  	
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	const PlatformSupportInit	m_platformSupportInit;
  
  	const DOMSupportInit		m_domSupportInit;
  
  	const XMLSupportInit		m_xmlSupportInit;
  
  	const XPathInit				m_xpathInit;
  
  	static unsigned long	s_initCounter;
  };
  
  
  
  #endif	// !defined(XSLTINIT_INCLUDE_GUARD_1357924680)
  
  
  
  1.1                  xml-xalan/c/src/XalanDOM/XalanDOMInit.cpp
  
  Index: XalanDOMInit.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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/>.
   */
  
  #include "XalanDOMInit.hpp"
  
  
  
  unsigned long	XalanDOMInit::s_initCounter = 0;
  
  
  
  XalanDOMInit::XalanDOMInit()
  {
  	++s_initCounter;
  
  	if (s_initCounter == 1)
  	{
  		initialize();
  	}
  }
  
  
  
  XalanDOMInit::~XalanDOMInit()
  {
  	--s_initCounter;
  
  	if (s_initCounter == 0)
  	{
  		terminate();
  	}
  }
  
  
  
  void
  XalanDOMInit::initialize()
  {
  }
  
  
  
  void
  XalanDOMInit::terminate()
  {
  }
  
  
  
  1.1                  xml-xalan/c/src/XalanDOM/XalanDOMInit.hpp
  
  Index: XalanDOMInit.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2000 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(XALANDOMINIT_INCLUDE_GUARD_1357924680)
  #define XALANDOMINIT_INCLUDE_GUARD_1357924680
  
  
  
  // Base include file.  Must be first.
  #include <XalanDOM/XalanDOMDefinitions.hpp>
  
  
  
  class XALAN_DOM_EXPORT XalanDOMInit
  {
  public:
  
  	explicit
  	XalanDOMInit();
  
  	~XalanDOMInit();
  
  private:
  
  	// Not implemented...
  	XalanDOMInit(const XalanDOMInit&);
  
  	XalanDOMInit&
  	operator=(const XalanDOMInit&);
  
  
  	static void
  	initialize();
  
  	static void
  	terminate();
  
  	static unsigned long	s_initCounter;
  };
  
  
  
  #endif	// !defined(XALANDOMINIT_INCLUDE_GUARD_1357924680)
  
  
  
  1.16      +3 -8      xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.cpp
  
  Index: XercesParserLiaison.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- XercesParserLiaison.cpp	2000/08/22 20:19:23	1.15
  +++ XercesParserLiaison.cpp	2000/08/31 19:43:19	1.16
  @@ -84,14 +84,9 @@
   
   
   
  -static const XalanDOMString		theParserName(XALAN_STATIC_UCODE_STRING("Xerces"));
  -static const XalanDOMString		theDefaultSpecialCharacters(XALAN_STATIC_UCODE_STRING("<>&\"\'\r\n"));
  -
  -
  -
   XercesParserLiaison::XercesParserLiaison(DOMSupport&	theSupport) :
   	m_DOMSupport(theSupport),
  -	m_specialCharacters(theDefaultSpecialCharacters),
  +	m_specialCharacters(XALAN_STATIC_UCODE_STRING("<>&\"\'\r\n")),
   	m_indent(-1),
   	m_shouldExpandEntityRefs(false),
   	m_useValidation(false),
  @@ -286,10 +281,10 @@
   
   
   
  -const XalanDOMString&
  +const XalanDOMString
   XercesParserLiaison::getParserDescription() const
   {
  -	return theParserName;
  +	return XALAN_STATIC_UCODE_STRING("Xerces");
   }
   
   
  
  
  
  1.14      +1 -1      xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.hpp
  
  Index: XercesParserLiaison.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XercesParserLiaison.hpp	2000/08/22 20:19:23	1.13
  +++ XercesParserLiaison.hpp	2000/08/31 19:43:20	1.14
  @@ -159,7 +159,7 @@
   	virtual void
   	setUseValidation(bool	b);
   
  -	virtual const XalanDOMString&
  +	virtual const XalanDOMString
   	getParserDescription() const;
   
   
  
  
  
  1.13      +2 -9      xml-xalan/c/src/XercesPlatformSupport/TextFileOutputStream.cpp
  
  Index: TextFileOutputStream.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesPlatformSupport/TextFileOutputStream.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- TextFileOutputStream.cpp	2000/08/22 20:20:15	1.12
  +++ TextFileOutputStream.cpp	2000/08/31 19:43:22	1.13
  @@ -126,11 +126,6 @@
   
   
   
  -static const DOMString	theOpenExceptionType(XALAN_STATIC_UCODE_STRING("TextFileOutputStreamOpenException"));
  -static const DOMString	theWriteExceptionType(XALAN_STATIC_UCODE_STRING("TextFileOutputStreamWriteException"));
  -
  -
  -
   static DOMString
   FormatMessageLocal(
   			const DOMString&	theMessage,
  @@ -164,7 +159,7 @@
   	XercesTextOutputStreamException(FormatMessageLocal("Error opening file: ",
   													 theFileName,
   													 theErrorCode),
  -								   theOpenExceptionType)
  +								   XALAN_STATIC_UCODE_STRING("TextFileOutputStreamOpenException"))
   {
   }
   
  @@ -176,15 +171,13 @@
   
   
   
  -
  -
   TextFileOutputStreamWriteException::TextFileOutputStreamWriteException(
   		const DOMString&	theFileName,
   		int					theErrorCode) :
   	XercesTextOutputStreamException(FormatMessageLocal("Error writing file: ",
   													 theFileName,
   													 theErrorCode),
  -								    theWriteExceptionType)
  +								    XALAN_STATIC_UCODE_STRING("TextFileOutputStreamWriteException"))
   {
   }
   
  
  
  
  1.7       +1 -5      xml-xalan/c/src/XercesPlatformSupport/XercesStdTextOutputStream.cpp
  
  Index: XercesStdTextOutputStream.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XercesPlatformSupport/XercesStdTextOutputStream.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XercesStdTextOutputStream.cpp	2000/06/28 17:52:36	1.6
  +++ XercesStdTextOutputStream.cpp	2000/08/31 19:43:22	1.7
  @@ -119,10 +119,6 @@
   
   
   
  -static const DOMString	theWriteExceptionType(XALAN_STATIC_UCODE_STRING("XercesStdTextOutputStreamWriteException"));
  -
  -
  -
   static DOMString
   FormatMessageLocal(
   			const DOMString&	theMessage,
  @@ -152,7 +148,7 @@
   		int					theErrorCode) :
   	XercesTextOutputStreamException(FormatMessageLocal("Error writing to standard stream!",
   													   theErrorCode),
  -								    theWriteExceptionType)
  +								    XALAN_STATIC_UCODE_STRING("XercesStdTextOutputStreamWriteException"))
   {
   }