diff --git a/src/util/Transcoders/ICU/ICUTransService.cpp b/src/util/Transcoders/ICU/ICUTransService.cpp index 5112df88d7b9927c1375a05f708dc138ff3935ab..5bb3d1dd623932753b62c62f734e9a24e5485cf5 100644 --- a/src/util/Transcoders/ICU/ICUTransService.cpp +++ b/src/util/Transcoders/ICU/ICUTransService.cpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.6 1999/12/18 00:22:32 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * * Revision 1.5 1999/12/15 19:43:45 roddey * Now implements the new transcoding abstractions, with separate interface * classes for XML transcoders and local code page transcoders. @@ -211,8 +214,23 @@ XMLLCPTranscoder* ICUTransService::makeNewLCPTranscoder() } +void ICUTransService::upperCase(XMLCh* const toUpperCase) const +{ + XMLCh* outPtr = toUpperCase; + while (*outPtr) + { + *outPtr = Unicode::toUpperCase(*outPtr); + outPtr++; + } +} + + + +// --------------------------------------------------------------------------- +// ICUTransService: The protected virtual transcoding service API +// --------------------------------------------------------------------------- XMLTranscoder* -ICUTransService::makeNewTranscoderFor( const XMLCh* const encodingName +ICUTransService::makeNewXMLTranscoder( const XMLCh* const encodingName , XMLTransService::Codes& resValue , const unsigned int blockSize) { diff --git a/src/util/Transcoders/ICU/ICUTransService.hpp b/src/util/Transcoders/ICU/ICUTransService.hpp index 4db46689b7963f5b2f7ded7c19bc842ded9e7714..b4d608b8e446e7e0d314136190251ccaf83c4d6c 100644 --- a/src/util/Transcoders/ICU/ICUTransService.hpp +++ b/src/util/Transcoders/ICU/ICUTransService.hpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.3 1999/12/18 00:22:32 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * * Revision 1.2 1999/12/15 19:43:45 roddey * Now implements the new transcoding abstractions, with separate interface * classes for XML transcoders and local code page transcoders. @@ -112,7 +115,14 @@ public : virtual XMLLCPTranscoder* makeNewLCPTranscoder(); - virtual XMLTranscoder* makeNewTranscoderFor + virtual void upperCase(XMLCh* const toUpperCase) const; + + +protected : + // ----------------------------------------------------------------------- + // Protected virtual methods + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNewXMLTranscoder ( const XMLCh* const encodingName , XMLTransService::Codes& resValue diff --git a/src/util/Transcoders/Iconv/IconvTransService.cpp b/src/util/Transcoders/Iconv/IconvTransService.cpp index 0aecc59e3e62c7985cf0d6b2dbcc3bb213998a73..0ac99778f91ceaed236557e35db2ec9f0cc88b33 100644 --- a/src/util/Transcoders/Iconv/IconvTransService.cpp +++ b/src/util/Transcoders/Iconv/IconvTransService.cpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.6 1999/12/18 00:22:32 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * * Revision 1.5 1999/12/14 23:53:35 rahulj * Removed the offending Ctrl-M's from the commit message * logs which was giving packaging problems. @@ -128,6 +131,7 @@ IconvTransService::~IconvTransService() { } + // --------------------------------------------------------------------------- // IconvTransService: The virtual transcoding service API // --------------------------------------------------------------------------- @@ -184,22 +188,24 @@ bool IconvTransService::isSpace(const XMLCh toCheck) const } -XMLTranscoder* IconvTransService::makeNewDefTranscoder() +XMLTranscoder* IconvTransService::makeNewLCPTranscoder() { // Just allocate a new transcoder of our type - return new IconvTranscoder; + return new IconvLCPTranscoder; } +// --------------------------------------------------------------------------- +// IconvTransService: The protected virtual transcoding service API +// --------------------------------------------------------------------------- XMLTranscoder* -IconvTransService::makeNewTranscoderFor(const XMLCh* const encodingName +IconvTransService::makeNewXMLTranscoder(const XMLCh* const encodingName , XMLTransService::Codes& resValue , const unsigned int ) { // // NOTE: We don't use the block size here // - // // This is a minimalist transcoding service, that only supports a local // default transcoder. All named encodings return zero as a failure, // which means that only the intrinsic encodings supported by the parser @@ -209,14 +215,16 @@ IconvTransService::makeNewTranscoderFor(const XMLCh* const encoding return 0; } + + // --------------------------------------------------------------------------- -// IconvTranscoder: Constructors and Destructor +// IconvLCPTranscoder: Constructors and Destructor // --------------------------------------------------------------------------- -IconvTranscoder::IconvTranscoder() +IconvLCPTranscoder::IconvLCPTranscoder() { } -IconvTranscoder::~IconvTranscoder() +IconvLCPTranscoder::~IconvLCPTranscoder() { } @@ -224,7 +232,7 @@ IconvTranscoder::~IconvTranscoder() // --------------------------------------------------------------------------- // IconvTranscoder: The virtual transcoder API // --------------------------------------------------------------------------- -unsigned int IconvTranscoder::calcRequiredSize(const char* const srcText) +unsigned int IconvLCPTranscoder::calcRequiredSize(const char* const srcText) { if (!srcText) return 0; @@ -237,7 +245,7 @@ unsigned int IconvTranscoder::calcRequiredSize(const char* const srcText) } -unsigned int IconvTranscoder::calcRequiredSize(const XMLCh* const srcText) +unsigned int IconvLCPTranscoder::calcRequiredSize(const XMLCh* const srcText) { if (!srcText) return 0; @@ -268,26 +276,7 @@ unsigned int IconvTranscoder::calcRequiredSize(const XMLCh* const srcText) -XMLCh IconvTranscoder::transcodeOne(const char* const srcData - , const unsigned int srcBytes - , unsigned int& bytesEaten) -{ - wchar_t toFill; - int eaten = ::mbtowc(&toFill, srcData, srcBytes); - if (eaten == -1) - { - bytesEaten = 0; - return 0; - } - - // Return the bytes we ate and the resulting char. - bytesEaten = eaten; - return toFill; -} - - - -char* IconvTranscoder::transcode(const XMLCh* const toTranscode) +char* IconvLCPTranscoder::transcode(const XMLCh* const toTranscode) { if (!toTranscode) return 0; @@ -334,9 +323,9 @@ char* IconvTranscoder::transcode(const XMLCh* const toTranscode) } -bool IconvTranscoder::transcode(const XMLCh* const toTranscode - , char* const toFill - , const unsigned int maxBytes) +bool IconvLCPTranscoder::transcode( const XMLCh* const toTranscode + , char* const toFill + , const unsigned int maxBytes) { // Watch for a couple of pyscho corner cases if (!toTranscode || !maxBytes) @@ -367,8 +356,6 @@ bool IconvTranscoder::transcode(const XMLCh* const toTranscode wideCharBuf[maxBytes] = 0x00; // Ok, go ahead and try the transcoding. If it fails, then ... - // - if (::wcstombs(toFill, wideCharBuf, maxBytes) == -1) { delete [] allocatedArray; @@ -383,7 +370,7 @@ bool IconvTranscoder::transcode(const XMLCh* const toTranscode -XMLCh* IconvTranscoder::transcode(const char* const toTranscode) +XMLCh* IconvLCPTranscoder::transcode(const char* const toTranscode) { XMLCh* retVal = 0; if (toTranscode) @@ -419,9 +406,9 @@ XMLCh* IconvTranscoder::transcode(const char* const toTranscode) } -bool IconvTranscoder::transcode(const char* const toTranscode - , XMLCh* const toFill - , const unsigned int maxChars) +bool IconvLCPTranscoder::transcode( const char* const toTranscode + , XMLCh* const toFill + , const unsigned int maxChars) { // Check for a couple of psycho corner cases if (!toTranscode || !maxChars) @@ -461,6 +448,40 @@ bool IconvTranscoder::transcode(const char* const toTranscode } + +// --------------------------------------------------------------------------- +// IconvTranscoder: Constructors and Destructor +// --------------------------------------------------------------------------- +IconvTranscoder::IconvTranscoder() +{ +} + +IconvTranscoder::~IconvTranscoder() +{ +} + + +// --------------------------------------------------------------------------- +// IconvTranscoder: Implementation of the virtual transcoder API +// --------------------------------------------------------------------------- +XMLCh IconvTranscoder::transcodeOne(const char* const srcData + , const unsigned int srcBytes + , unsigned int& bytesEaten) +{ + wchar_t toFill; + int eaten = ::mbtowc(&toFill, srcData, srcBytes); + if (eaten == -1) + { + bytesEaten = 0; + return 0; + } + + // Return the bytes we ate and the resulting char. + bytesEaten = eaten; + return toFill; +} + + unsigned int IconvTranscoder::transcodeXML( const char* const srcData , const unsigned int srcCount @@ -492,3 +513,6 @@ IconvTranscoder::transcodeXML( const char* const srcData bytesEaten = countIn; return countOut; } + + + diff --git a/src/util/Transcoders/Iconv/IconvTransService.hpp b/src/util/Transcoders/Iconv/IconvTransService.hpp index ba3769c3a6ea04f1597172625ea3bc312d7506ae..7b83fcfb81f87accd4c8288ff9cf3e9f14a68ad6 100644 --- a/src/util/Transcoders/Iconv/IconvTransService.hpp +++ b/src/util/Transcoders/Iconv/IconvTransService.hpp @@ -56,8 +56,11 @@ /** * $Log$ - * Revision 1.1 1999/11/09 01:06:10 twl - * Initial revision + * Revision 1.2 1999/12/18 00:22:32 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * + * Revision 1.1.1.1 1999/11/09 01:06:10 twl + * Initial checkin * * Revision 1.2 1999/11/08 20:45:34 rahul * Swat for adding in Product name and CVS comment log variable. @@ -97,9 +100,14 @@ public : virtual bool isSpace(const XMLCh toCheck) const; - virtual XMLTranscoder* makeNewDefTranscoder(); + virtual XMLTranscoder* makeNewLCPTranscoder(); + - virtual XMLTranscoder* makeNewTranscoderFor +protected : + // ----------------------------------------------------------------------- + // Protected virtual methods + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNewXMLTranscoder ( const XMLCh* const encodingName , XMLTransService::Codes& resValue @@ -131,10 +139,6 @@ public : // ----------------------------------------------------------------------- // Implementation of the virtual transcoder interface // ----------------------------------------------------------------------- - virtual unsigned int calcRequiredSize(const char* const srcText); - - virtual unsigned int calcRequiredSize(const XMLCh* const srcText); - virtual XMLCh transcodeOne ( const char* const srcData @@ -142,6 +146,43 @@ public : , unsigned int& bytesEaten ); + virtual unsigned int transcodeXML + ( + const char* const srcData + , const unsigned int srcCount + , XMLCh* const toFill + , const unsigned int maxChars + , unsigned int& bytesEaten + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IconvTranscoder(const IconvTranscoder&); + void operator=(const IconvTranscoder&); +}; + + + +class XMLUTIL_EXPORT IconvLCPTranscoder : public XMLLCPTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + IconvTranscoder(); + ~IconvTranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual transcoder interface + // ----------------------------------------------------------------------- + virtual unsigned int calcRequiredSize(const char* const srcText); + + virtual unsigned int calcRequiredSize(const XMLCh* const srcText); + virtual char* transcode(const XMLCh* const toTranscode); virtual bool transcode @@ -160,22 +201,13 @@ public : , const unsigned int maxChars ); - virtual unsigned int transcodeXML - ( - const char* const srcData - , const unsigned int srcCount - , XMLCh* const toFill - , const unsigned int maxChars - , unsigned int& bytesEaten - ); - private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- - IconvTranscoder(const IconvTranscoder&); - void operator=(const IconvTranscoder&); + IconvLCPTranscoder(const IconvLCPTranscoder&); + void operator=(const IconvLCPTranscoder&); }; #endif diff --git a/src/util/Transcoders/Win32/Win32TransService.cpp b/src/util/Transcoders/Win32/Win32TransService.cpp index 95e9bc47a18fa6429ae6fc1591760db5e64b72f7..d6409651f6ce8fbc619e4b4f91f15fbfafda2ef5 100644 --- a/src/util/Transcoders/Win32/Win32TransService.cpp +++ b/src/util/Transcoders/Win32/Win32TransService.cpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.4 1999/12/18 00:22:33 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * * Revision 1.3 1999/12/15 19:44:02 roddey * Now implements the new transcoding abstractions, with separate interface * classes for XML transcoders and local code page transcoders. @@ -121,8 +124,19 @@ XMLLCPTranscoder* Win32TransService::makeNewLCPTranscoder() return new Win32LCPTranscoder; } + +void Win32TransService::upperCase(XMLCh* const toUpperCase) const +{ + wcsupr(toUpperCase); +} + + + +// --------------------------------------------------------------------------- +// Win32TransService: The protected virtual transcoding service API +// --------------------------------------------------------------------------- XMLTranscoder* -Win32TransService::makeNewTranscoderFor(const XMLCh* const +Win32TransService::makeNewXMLTranscoder(const XMLCh* const , XMLTransService::Codes& resValue , const unsigned int) { diff --git a/src/util/Transcoders/Win32/Win32TransService.hpp b/src/util/Transcoders/Win32/Win32TransService.hpp index 63c5531c73d6ba8116b38b7ec2e2f3da7974f8b7..f304229a470e35eca091cd654d7bbd9a780f3009 100644 --- a/src/util/Transcoders/Win32/Win32TransService.hpp +++ b/src/util/Transcoders/Win32/Win32TransService.hpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.3 1999/12/18 00:22:33 roddey + * Changes to support the new, completely orthagonal, transcoder architecture. + * * Revision 1.2 1999/12/15 19:44:02 roddey * Now implements the new transcoding abstractions, with separate interface * classes for XML transcoders and local code page transcoders. @@ -103,7 +106,14 @@ public : virtual XMLLCPTranscoder* makeNewLCPTranscoder(); - virtual XMLTranscoder* makeNewTranscoderFor + virtual void upperCase(XMLCh* const toUpperCase) const; + + +protected : + // ----------------------------------------------------------------------- + // Protected virtual methods + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNewXMLTranscoder ( const XMLCh* const encodingName , XMLTransService::Codes& resValue