From cab235b1d438a247c5fdb9822c4c5f26395df957 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Tue, 9 Apr 2002 15:44:00 +0000 Subject: [PATCH] Add lower case string support. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173617 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/util/TransService.hpp | 8 +++-- .../util/Transcoders/ICU/ICUTransService.cpp | 10 +++++++ .../util/Transcoders/ICU/ICUTransService.hpp | 8 +++-- .../Transcoders/Iconv/IconvTransService.cpp | 9 ++++++ .../Transcoders/Iconv/IconvTransService.hpp | 8 +++-- .../Iconv390/Iconv390TransService.cpp | 10 +++++++ .../Iconv390/Iconv390TransService.hpp | 8 +++-- .../Iconv400/Iconv400TransService.cpp | 5 ++++ .../Iconv400/Iconv400TransService.hpp | 1 + .../IconvFBSD/IconvFBSDTransService.cpp | 7 +++++ .../IconvFBSD/IconvFBSDTransService.hpp | 8 +++-- .../MacOSUnicodeConverter.cpp | 30 +++++++++++++++++++ .../MacOSUnicodeConverter.hpp | 2 +- .../Transcoders/Win32/Win32TransService.cpp | 4 +++ .../Transcoders/Win32/Win32TransService.hpp | 8 +++-- src/xercesc/util/XMLString.cpp | 2 +- 16 files changed, 114 insertions(+), 14 deletions(-) diff --git a/src/xercesc/util/TransService.hpp b/src/xercesc/util/TransService.hpp index dd4746e8d..5224f26c5 100644 --- a/src/xercesc/util/TransService.hpp +++ b/src/xercesc/util/TransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:13 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:13 peiyongz + * sane_include * * Revision 1.14 2001/11/01 23:37:07 jasons * 2001-11-01 Jason E. Stewart <jason@openinformatics.com> @@ -211,6 +214,7 @@ public : virtual bool supportsSrcOfs() const = 0; virtual void upperCase(XMLCh* const toUpperCase) const = 0; + virtual void lowerCase(XMLCh* const toLowerCase) const = 0; // ----------------------------------------------------------------------- // Allow users to add their own encodings to the intrinsinc mapping diff --git a/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp b/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp index 980b2fa86..79cff2921 100644 --- a/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp +++ b/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp @@ -301,6 +301,16 @@ void ICUTransService::upperCase(XMLCh* const toUpperCase) const } } +void ICUTransService::lowerCase(XMLCh* const toLowerCase) const +{ + XMLCh* outPtr = toLowerCase; + while (*outPtr) + { + *outPtr = XMLCh(Unicode::toLowerCase(UChar(*outPtr))); + outPtr++; + } +} + // --------------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp b/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp index 031fc63d2..89c086e3e 100644 --- a/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp +++ b/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:36 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:36 peiyongz + * sane_include * * Revision 1.10 2000/03/18 00:00:03 roddey * Initial updates for two way transcoding support @@ -142,6 +145,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp index 442b59936..5c71301ba 100644 --- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp +++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp @@ -227,6 +227,15 @@ void IconvTransService::upperCase(XMLCh* const toUpperCase) const } } +void IconvTransService::lowerCase(XMLCh* const toLowerCase) const +{ + XMLCh* outPtr = toLowerCase; + while (*outPtr) + { + *outPtr = towlower(*outPtr); + outPtr++; + } +} // --------------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp index 7ac9a3c2a..9121f8de2 100644 --- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp +++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:36 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:36 peiyongz + * sane_include * * Revision 1.8 2000/03/02 19:55:35 roddey * This checkin includes many changes done while waiting for the @@ -132,6 +135,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : // ----------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp b/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp index 038c0f6fb..d0491c152 100644 --- a/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp +++ b/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp @@ -334,6 +334,16 @@ void Iconv390TransService::upperCase(XMLCh* const toUpperCase) const } } +void Iconv390TransService::lowerCase(XMLCh* const toLowerCase) const +{ + XMLCh* outPtr = toLowerCase; + while (*outPtr != 0) { + if ((*outPtr >= 0x41) && (*outPtr <= 0x5A)) + *outPtr = *outPtr + 0x20; + outPtr++; + } +} + // --------------------------------------------------------------------------- unsigned int Iconv390LCPTranscoder::calcRequiredSize(const char* const srcText) { diff --git a/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp b/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp index 30675d327..f0b7839a4 100644 --- a/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp +++ b/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:36 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:36 peiyongz + * sane_include * * Revision 1.3 2000/03/02 19:55:36 roddey * This checkin includes many changes done while waiting for the @@ -125,6 +128,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : // ----------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp b/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp index 83bdecbc1..2b3b7e7b4 100644 --- a/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp +++ b/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp @@ -245,6 +245,11 @@ void Iconv400TransService::upperCase(XMLCh* const toUpperCase) const } } +void Iconv400TransService::lowerCase(XMLCh* const toLowerCase) const +{ + //TO DO +} + // --------------------------------------------------------------------------- // Iconv400TransService: The virtual transcoding service API // --------------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp b/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp index 95e4b2017..7c87baaa6 100644 --- a/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp +++ b/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp @@ -107,6 +107,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : diff --git a/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp b/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp index 39845b478..68056fb07 100644 --- a/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp +++ b/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * * Revision 1.2 2002/03/18 13:39:11 tng * [Bug 7162 ] IconvFreeBSDTransService.cpp needs an #include statement fixed to use xercesc. * @@ -830,6 +833,10 @@ void IconvFBSDTransService::upperCase(XMLCh* const toUpperCase) const } } +void IconvFBSDTransService::lowerCase(XMLCh* const toLowerCase) const +{ + //TO DO +} // --------------------------------------------------------------------------- // IconvFBSDLCPTranscoder: The virtual transcoder API diff --git a/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp b/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp index 7e3983a1b..550a81a15 100644 --- a/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp +++ b/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:36 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:36 peiyongz + * sane_include * * Revision 1.3 2002/01/14 19:45:15 tng * Support IconvFBSD in multi-threading environment with all the possible combinations of threading and transcoding options. By Max Gotlib. @@ -237,6 +240,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toUpperCase) const; protected : // ----------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp index 16d714be5..06ed803c2 100644 --- a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp +++ b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp @@ -492,6 +492,36 @@ void MacOSUnicodeConverter::upperCase(XMLCh* const toUpperCase) const #endif } +void MacOSUnicodeConverter::lowerCase(XMLCh* const toLowerCase) const +{ + // ะตะตะต TODO: Support CFString for this conversion +#if defined(XML_METROWERKS) + // Use this if there's a reasonable c library available. + // Metrowerks does this reasonably + wchar_t * p = (wchar_t*) toLowerCase; + wchar_t c; + + while ((c = *p) != 0) + *p++ = std::towlower(c); +#elif defined(XML_MACOSX) || true + // This might work, assuming we're on an ascii compiler. + // We'll use this under ProjectBuilder for now. + // Note that this only handles the ascii portion of the + // string, leaving all other characters in original case. + wchar_t * p = (wchar_t*)toLowerCase; + wchar_t c; + + while ((c = *p) != 0) + { + if (c >= 'A' && c <= 'Z') + c += 'a' - 'A'; + *p++ = c; + } +#else + #error Sorry, no support for lowerCase +#endif +} + void MacOSUnicodeConverter::ConvertWideToNarrow(const XMLCh* wide, char* narrow, std::size_t maxChars) diff --git a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp index 3d418f225..fe157e391 100644 --- a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp +++ b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp @@ -111,7 +111,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; - + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : // ----------------------------------------------------------------------- diff --git a/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp b/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp index d4f063cdd..b5556fb1f 100644 --- a/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp +++ b/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp @@ -489,6 +489,10 @@ void Win32TransService::upperCase(XMLCh* const toUpperCase) const _wcsupr(toUpperCase); } +void Win32TransService::lowerCase(XMLCh* const toLowerCase) const +{ + _wcslwr(toLowerCase); +} bool Win32TransService::isAlias(const HKEY encodingKey , char* const aliasBuf diff --git a/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp b/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp index 9d31d4946..788098f46 100644 --- a/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp +++ b/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp @@ -56,8 +56,11 @@ /* * $Log$ - * Revision 1.1 2002/02/01 22:22:37 peiyongz - * Initial revision + * Revision 1.2 2002/04/09 15:44:00 knoaman + * Add lower case string support. + * + * Revision 1.1.1.1 2002/02/01 22:22:37 peiyongz + * sane_include * * Revision 1.10 2000/05/09 00:22:45 andyh * Memory Cleanup. XMLPlatformUtils::Terminate() deletes all lazily @@ -154,6 +157,7 @@ public : virtual bool supportsSrcOfs() const; virtual void upperCase(XMLCh* const toUpperCase) const; + virtual void lowerCase(XMLCh* const toLowerCase) const; protected : diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp index 5bdeb4395..905fb1fa8 100644 --- a/src/xercesc/util/XMLString.cpp +++ b/src/xercesc/util/XMLString.cpp @@ -1459,7 +1459,7 @@ void XMLString::upperCase(XMLCh* const toUpperCase) void XMLString::lowerCase(XMLCh* const toLowerCase) { // Refer this one to the transcoding service - //XMLPlatformUtils::fgTransService->lowerCase(toLowerCase); + XMLPlatformUtils::fgTransService->lowerCase(toLowerCase); } -- GitLab