You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2002/04/11 17:38:05 UTC
cvs commit: xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD IconvFBSDTransService.cpp IconvFBSDTransService.hpp
knoaman 02/04/11 08:38:05
Modified: c/src/xercesc/util/Transcoders/IconvFBSD
IconvFBSDTransService.cpp IconvFBSDTransService.hpp
Log:
String lower case support for FreeBSD by Max Gotlib
Revision Changes Path
1.4 +60 -4 xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp
Index: IconvFBSDTransService.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- IconvFBSDTransService.cpp 9 Apr 2002 15:44:00 -0000 1.3
+++ IconvFBSDTransService.cpp 11 Apr 2002 15:38:05 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log: IconvFBSDTransService.cpp,v $
+ * Revision 1.4 2002/04/11 15:38:05 knoaman
+ * String lower case support for FreeBSD by Max Gotlib
+ *
* Revision 1.3 2002/04/09 15:44:00 knoaman
* Add lower case string support.
*
@@ -103,6 +106,8 @@
static const IconvFBSDEncoding gIconvFBSDEncodings[] = {
{ "ucs-2-internal", 2, LITTLE_ENDIAN },
{ "ucs-4-internal", 4, LITTLE_ENDIAN },
+ { "UNICODELITTLE", 2, LITTLE_ENDIAN },
+ { "UNICODEBIG", 2, BIG_ENDIAN },
{ "iso-10646-ucs-2", 4, BIG_ENDIAN },
{ "iso-10646-ucs-4", 4, BIG_ENDIAN },
{ "iso-10646-utf-16", 2, BIG_ENDIAN },
@@ -277,12 +282,22 @@
{
if (ch <= 0x7F)
return toupper(ch);
- char buf[16];
+ unsigned char buf[16];
wchar_t wc = wchar_t(ch);
- wcstombs(buf, &wc, 16);
+ wcstombs((char*)buf, &wc, 16);
return toupper(*buf);
}
+static wint_t fbsd_towlower(wint_t ch)
+{
+ if (ch <= 0x7F)
+ return tolower(ch);
+ unsigned char buf[16];
+ wchar_t wc = wchar_t(ch);
+ wcstombs((char *)buf, &wc, 16);
+ return tolower(*buf);
+}
+
#else /* XML_USE_LIBICONV */
#if !defined(APP_NO_THREADS)
@@ -386,7 +401,39 @@
if (::iconv (fCDTo, (const char**) &ptr, &len,
&pTmpArr, &bLen) == (size_t) -1)
return 0;
- tmpArr[1] = toupper (*tmpArr);
+ tmpArr[1] = toupper (*((unsigned char *)tmpArr));
+ *tmpArr = tmpArr[1];
+ len = 1;
+ pTmpArr = wcbuf;
+ bLen = fUChSize;
+ ptr = tmpArr;
+ if (::iconv (fCDFrom, (const char **)&ptr, &len,
+ &pTmpArr, &bLen) == (size_t) -1)
+ return 0;
+ mbcToXMLCh (wcbuf, (XMLCh*) &ch);
+ return ch;
+}
+
+// Return lowercase equivalent for XMLCh
+XMLCh IconvFBSDCD::toLower (const XMLCh ch) const
+{
+ if (ch <= 0x7F)
+ return tolower(ch);
+
+ char wcbuf[fUChSize * 2];
+ xmlChToMbc (ch, wcbuf);
+
+ char tmpArr[4];
+ char* ptr = wcbuf;
+ size_t len = fUChSize;
+ char *pTmpArr = tmpArr;
+ size_t bLen = 2;
+
+ ICONV_LOCK;
+ if (::iconv (fCDTo, (const char**) &ptr, &len,
+ &pTmpArr, &bLen) == (size_t) -1)
+ return 0;
+ tmpArr[1] = tolower (*((unsigned char*)tmpArr));
*tmpArr = tmpArr[1];
len = 1;
pTmpArr = wcbuf;
@@ -835,7 +882,16 @@
void IconvFBSDTransService::lowerCase(XMLCh* const toLowerCase) const
{
- //TO DO
+ XMLCh* outPtr = toLowerCase;
+ while (*outPtr)
+ {
+#ifndef XML_USE_LIBICONV
+ *outPtr = fbsd_towlower(*outPtr);
+#else /* XML_USE_LIBICONV */
+ *outPtr = toLower(*outPtr);
+#endif /* !XML_USE_LIBICONV */
+ outPtr++;
+ }
}
// ---------------------------------------------------------------------------
1.3 +6 -0 xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp
Index: IconvFBSDTransService.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IconvFBSDTransService.hpp 9 Apr 2002 15:44:00 -0000 1.2
+++ IconvFBSDTransService.hpp 11 Apr 2002 15:38:05 -0000 1.3
@@ -56,6 +56,9 @@
/*
* $Log: IconvFBSDTransService.hpp,v $
+ * Revision 1.3 2002/04/11 15:38:05 knoaman
+ * String lower case support for FreeBSD by Max Gotlib
+ *
* Revision 1.2 2002/04/09 15:44:00 knoaman
* Add lower case string support.
*
@@ -110,6 +113,9 @@
// Return uppercase equivalent for XMLCh
XMLCh toUpper (const XMLCh ch) const;
+
+ // Return uppercase equivalent for XMLCh
+ XMLCh toLower (const XMLCh ch) const;
// Check if passed characters belongs to the :space: class
virtual bool isSpace(const XMLCh toCheck) const;
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org