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/04/21 22:28:23 UTC

cvs commit: xml-xalan/c/src/PlatformSupport DOMStringHelper.cpp DOMStringHelper.hpp

dbertoni    00/04/21 13:28:23

  Modified:    c/src/PlatformSupport DOMStringHelper.cpp
                        DOMStringHelper.hpp
  Log:
  Added functions to compare according to collation sequence.
  
  Revision  Changes    Path
  1.17      +53 -3     xml-xalan/c/src/PlatformSupport/DOMStringHelper.cpp
  
  Index: DOMStringHelper.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/DOMStringHelper.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DOMStringHelper.cpp	2000/04/20 16:42:28	1.16
  +++ DOMStringHelper.cpp	2000/04/21 20:28:22	1.17
  @@ -706,8 +706,35 @@
   
   
   
  -XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int)
  -compare(
  +struct WideStringLexicalCompare
  +{
  +	int
  +	operator()(
  +			const XalanDOMChar*		theLHS,
  +			const XalanDOMChar*		theRHS) const
  +	{
  +		return compare(theLHS, theRHS);
  +	}
  +};
  +
  +
  +
  +struct WideStringCollationCompare
  +{
  +	int
  +	operator()(
  +			const XalanDOMChar*		theLHS,
  +			const XalanDOMChar*		theRHS) const
  +	{
  +		return collationCompare(theLHS, theRHS);
  +	}
  +};
  +
  +
  +
  +template<class CompareFunctionType>
  +DOMStringCompare(
  +			CompareFunctionType		theCompareFunction,
   			const XalanDOMString&	theLHS,
   			const XalanDOMString&	theRHS)
   {
  @@ -741,10 +768,33 @@
   	{
   		assert(c_wstr(theLHS) != 0 && c_wstr(theRHS) != 0);
   
  -		return compare(c_wstr(theLHS), c_wstr(theRHS));
  +		return theCompareFunction(c_wstr(theLHS), c_wstr(theRHS));
   	}
   }
   
  +
  +
  +XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int)
  +compare(
  +			const XalanDOMString&	theLHS,
  +			const XalanDOMString&	theRHS)
  +{
  +	return DOMStringCompare(WideStringLexicalCompare(),
  +							theLHS,
  +							theRHS);
  +}
  +
  +
  +
  +XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int)
  +collationCompare(
  +			const XalanDOMString&	theLHS,
  +			const XalanDOMString&	theRHS)
  +{
  +	return DOMStringCompare(WideStringCollationCompare(),
  +							theLHS,
  +							theRHS);
  +}
   
   
   
  
  
  
  1.14      +64 -11    xml-xalan/c/src/PlatformSupport/DOMStringHelper.hpp
  
  Index: DOMStringHelper.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/DOMStringHelper.hpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DOMStringHelper.hpp	2000/04/20 16:42:29	1.13
  +++ DOMStringHelper.hpp	2000/04/21 20:28:22	1.14
  @@ -810,18 +810,18 @@
   
   
   
  +#if defined(XALAN_FULL_WCHAR_SUPPORT)
  +
   /**
  - * Compare the contents of two strings for equality
  + * Compare the contents of two strings.
    * 
    * @param theLHS first string to compare
    * @param theRHS second string to compare
  - * @return Returns 0 for equal strings, less than 0 if theLHS is lexically
  - * less than theRHS, or greater than 0 if theRHS is lexically greater than
  - * theLHS.
  + * @return Returns 0 for equal strings, less than 0 if theLHS is less
  + * than theRHS, or greater than 0 if theRHS is greater than theLHS.
    * @see operator<
  + * @see collationCompare
    */
  -#if defined(XALAN_FULL_WCHAR_SUPPORT)
  -
   inline int
   compare(
   			const XalanDOMChar*		theLHS,
  @@ -841,18 +841,71 @@
   
   
   
  +#if defined(XALAN_FULL_WCHAR_SUPPORT)
  +
   /**
  - * Compare the contents of two strings for equality
  + * Compare the contents of two strings using the
  + * the collation settings of the current code page.
    * 
    * @param theLHS first string to compare
    * @param theRHS second string to compare
  - * @return Returns 0 for equal strings, less than 0 if theLHS is lexically
  - * less than theRHS, or greater than 0 if theRHS is lexically greater than
  - * theLHS.
  - * @see operator<
  + * @return Returns 0 for equal strings, less than 0 if theLHS is less
  + * than theRHS, or greater than 0 if theRHS is greater than theLHS.
  + * @see operator<()
  + * @see compare()
  + */
  +inline int
  +collationCompare(
  +			const XalanDOMChar*		theLHS,
  +			const XalanDOMChar*		theRHS)
  +{
  +	return wcscoll(theLHS, theRHS);
  +}
  +
  +#else
  +
  +// Can't really do it, so just call compare...
  +inline int
  +collationCompare(
  +			const XalanDOMChar*		theLHS,
  +			const XalanDOMChar*		theRHS)
  +{
  +	return compare(theLHS, theRHS);
  +}
  +
  +#endif
  +
  +
  +
  +/**
  + * Compare the contents of two strings.
  + * 
  + * @param theLHS first string to compare
  + * @param theRHS second string to compare
  + * @return Returns 0 for equal strings, less than 0 if theLHS is less
  + * than theRHS, or greater than 0 if theRHS is greater than theLHS.
  + * @see operator<()
  + * @see collationCompare()
    */
   XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int)
   compare(
  +			const XalanDOMString&	theLHS,
  +			const XalanDOMString&	theRHS);
  +
  +
  +/**
  + * Compare the contents of two strings using the
  + * the collation settings of the current code page.
  + * 
  + * @param theLHS first string to compare
  + * @param theRHS second string to compare
  + * @return Returns 0 for equal strings, less than 0 if theLHS is less
  + * than theRHS, or greater than 0 if theRHS is greater than theLHS.
  + * @see operator<()
  + * @see compare()
  + */
  +XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(int)
  +collationCompare(
   			const XalanDOMString&	theLHS,
   			const XalanDOMString&	theRHS);