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