You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by jb...@apache.org on 2005/06/03 01:34:34 UTC
svn commit: r179673 -
/xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390
/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32
Author: jberry
Date: Thu Jun 2 16:34:32 2005
New Revision: 179673
URL: http://svn.apache.org/viewcvs?rev=179673&view=rev
Log:
Apply third patch from bug http://issues.apache.org/jira/browse/XERCESC-1428, by Axel Weiss.
His notes on the patch:
This patch simplifies the LCP transcoder interface and subsequently all inheriting transcoders:
there is now only one transcode method for both directions, which saves a lot of redundand code:
virtual char* transcode(const XMLCh* const toTranscode,
MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
virtual XMLCh* transcode(const char* const toTranscode,
MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
The transcode methods using an externally provided buffer are still present, but have been
declared deprecated. There were three occurences in the xerces sources, where these were
called: DOMPrint/DOMPrint.cpp, internal/XProtoType.cpp and util/XMLMsgLoader.cpp.
These have been changed so that they now use the simpler transcode methods.
The unliked methods calcRequiredSize have been declared deprecated, too. ;)
Modified:
xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint/DOMPrint.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal/XProtoType.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/TransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLMsgLoader.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.cpp
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.hpp
Modified: xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint/DOMPrint.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint/DOMPrint.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint/DOMPrint.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/samples/src/DOMPrint/DOMPrint.cpp Thu Jun 2 16:34:32 2005
@@ -431,8 +431,7 @@
try
{
// get a serializer, an instance of DOMWriter
- XMLCh tempStr[100];
- XMLString::transcode("LS", tempStr, 99);
+ XMLCh tempStr[3] = {chLatin_L, chLatin_S, chNull};
DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
DOMWriter *theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter();
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal/XProtoType.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal/XProtoType.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal/XProtoType.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/internal/XProtoType.cpp Thu Jun 2 16:34:32 2005
@@ -102,14 +102,18 @@
//we don't have class name exceed this length in xerces
XMLCh name1[256];
XMLCh name2[256];
- XMLString::transcode((char*)inName, name1, 255, manager);
- XMLString::transcode((char*)className, name2, 255, manager);
+ XMLCh *tmp = XMLString::transcode((char*)inName, manager);
+ XMLString::copyNString(name1, tmp, 255);
+ manager->deallocate(tmp);
+ tmp = XMLString::transcode((char*)className, manager);
+ XMLString::copyNString(name2, tmp, 255);
+ manager->deallocate(tmp);
ThrowXMLwithMemMgr2(XSerializationException
, XMLExcepts::XSer_ProtoType_Name_Dif
, name1
, name2
- , manager);
+ , manager);
}
return;
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/TransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/TransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/TransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/TransService.hpp Thu Jun 2 16:34:32 2005
@@ -511,19 +511,30 @@
// its assumed that the buffer is physically one char or byte
// larger.
// -----------------------------------------------------------------------
+
+ // -----------------------------------------------------------------------
+ // The 'normal' way to transcode a XMLCh-string from/to local string
+ // representation
+ //
+ // NOTE: Both methods return a string allocated via the MemoryManager.
+ // It is the responsibility of the calling environment to
+ // release this string after use.
+ // -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
-
- virtual char* transcode(const XMLCh* const toTranscode) = 0;
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager) = 0;
-
- virtual XMLCh* transcode(const char* const toTranscode) = 0;
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager) = 0;
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.cpp Thu Jun 2 16:34:32 2005
@@ -999,35 +999,6 @@
}
-char* CygwinLCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- char* retVal = 0;
- if (*toTranscode)
- {
- // Calc the needed size
- const unsigned int neededLen = ::WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)toTranscode, -1, NULL, 0, NULL, NULL);
- if (neededLen == 0)
- return 0;
-
- // Allocate a buffer of that size plus one for the null and transcode
- // Returned length of WideCharToMultiByte includes terminating NUL.
- retVal = new char[neededLen+1];
- ::WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)toTranscode, -1, retVal, neededLen+1, NULL, NULL);
-
- // And cap it off anyway just to make sure
- retVal[neededLen] = 0;
- }
- else
- {
- retVal = new char[1];
- retVal[0] = 0;
- }
- return retVal;
-}
-
char* CygwinLCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -1058,34 +1029,6 @@
return retVal;
}
-
-XMLCh* CygwinLCPTranscoder::transcode(const char* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- XMLCh* retVal = 0;
- if (*toTranscode)
- {
- // Calculate the buffer size required
- const unsigned int neededLen = ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, toTranscode, -1, NULL, 0);
- if (neededLen == 0)
- return 0;
-
- // Allocate a buffer of that size plus one for the null and transcode
- retVal = new XMLCh[neededLen + 1];
- ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, toTranscode, -1, (LPWSTR)retVal, neededLen + 1);
-
- // Cap it off just to make sure. We are so paranoid!
- retVal[neededLen] = 0;
- }
- else
- {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- }
- return retVal;
-}
XMLCh* CygwinLCPTranscoder::transcode(const char* const toTranscode,
MemoryManager* const manager)
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Cygwin/CygwinTransService.hpp Thu Jun 2 16:34:32 2005
@@ -214,19 +214,21 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp Thu Jun 2 16:34:32 2005
@@ -842,106 +842,6 @@
}
-char* ICULCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- char* retBuf = 0;
-
- // Check for a couple of special cases
- if (!toTranscode)
- return retBuf;
-
- if (!*toTranscode)
- {
- retBuf = new char[1];
- retBuf[0] = 0;
- return retBuf;
- }
-
- //
- // Get the length of the source string since we'll have to use it in
- // a couple places below.
- //
- const unsigned int srcLen = XMLString::stringLen(toTranscode);
-
- //
- // If XMLCh and UChar are not the same size, then we have to make a
- // temp copy of the text to pass to ICU.
- //
- const UChar* actualSrc;
- UChar* ncActual = 0;
- if (sizeof(XMLCh) == sizeof(UChar))
- {
- actualSrc = (const UChar*)toTranscode;
- }
- else
- {
- // Allocate a non-const temp buf, but store it also in the actual
- ncActual = convertToUChar(toTranscode, 0, XMLPlatformUtils::fgMemoryManager);
- actualSrc = ncActual;
- }
-
- // Insure that the temp buffer, if any, gets cleaned up via the nc pointer
- ArrayJanitor<UChar> janTmp(ncActual, XMLPlatformUtils::fgMemoryManager);
-
- // Caculate a return buffer size not too big, but less likely to overflow
- int32_t targetLen = (int32_t)(srcLen * 1.25);
-
- // Allocate the return buffer
- retBuf = new char[targetLen + 1];
-
- //
- // Lock now while we call the converter. Use a faux block to do the
- // lock so that it unlocks immediately afterwards.
- //
- UErrorCode err = U_ZERO_ERROR;
- int32_t targetCap;
- {
- XMLMutexLock lockConverter(&fMutex);
-
- targetCap = ucnv_fromUChars
- (
- fConverter
- , retBuf
- , targetLen + 1
- , actualSrc
- , -1
- , &err
- );
- }
-
- // If targetLen is not enough then buffer overflow might occur
- if ((err == U_BUFFER_OVERFLOW_ERROR) || (err == U_STRING_NOT_TERMINATED_WARNING))
- {
- //
- // Reset the error, delete the old buffer, allocate a new one,
- // and try again.
- //
- err = U_ZERO_ERROR;
- delete [] retBuf;
- retBuf = new char[targetCap + 1];
-
- // Lock again before we retry
- XMLMutexLock lockConverter(&fMutex);
- targetCap = ucnv_fromUChars
- (
- fConverter
- , retBuf
- , targetCap + 1
- , actualSrc
- , -1
- , &err
- );
- }
-
- if (U_FAILURE(err))
- {
- delete [] retBuf;
- return 0;
- }
-
- return retBuf;
-}
-
char* ICULCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -1041,94 +941,6 @@
}
return retBuf;
-}
-
-XMLCh* ICULCPTranscoder::transcode(const char* const toTranscode)
-{
- // Watch for a few pyscho corner cases
- if (!toTranscode)
- return 0;
-
- if (!*toTranscode)
- {
- XMLCh* retVal = new XMLCh[1];
- retVal[0] = 0;
- return retVal;
- }
-
- //
- // Get the length of the string to transcode. The Unicode string will
- // almost always be no more chars than were in the source, so this is
- // the best guess as to the storage needed.
- //
- const int32_t srcLen = (int32_t)strlen(toTranscode);
-
- // We need a target buffer of UChars to fill in
- UChar* targetBuf = 0;
-
- // Now lock while we do these calculations
- UErrorCode err = U_ZERO_ERROR;
- int32_t targetCap;
- {
- XMLMutexLock lockConverter(&fMutex);
-
- //
- // Here we don't know what the target length will be so use 0 and
- // expect an U_BUFFER_OVERFLOW_ERROR in which case it'd get resolved
- // by the correct capacity value.
- //
- targetCap = ucnv_toUChars
- (
- fConverter
- , 0
- , 0
- , toTranscode
- , srcLen
- , &err
- );
-
- if (err != U_BUFFER_OVERFLOW_ERROR)
- return 0;
-
- err = U_ZERO_ERROR;
- targetBuf = new UChar[targetCap + 1];
- ucnv_toUChars
- (
- fConverter
- , targetBuf
- , targetCap + 1
- , toTranscode
- , srcLen
- , &err
- );
- }
-
- if (U_FAILURE(err))
- {
- // Clean up if we got anything allocated
- delete [] targetBuf;
- return 0;
- }
-
- // Cap it off to make sure
- targetBuf[targetCap] = 0;
-
- //
- // If XMLCh and UChar are the same size, then we can return retVal
- // as is. Else, we have to allocate another buffer and copy the data
- // over to it.
- //
- XMLCh* actualRet;
- if (sizeof(XMLCh) == sizeof(UChar))
- {
- actualRet = (XMLCh*)targetBuf;
- }
- else
- {
- actualRet = convertToXMLCh(targetBuf);
- delete [] targetBuf;
- }
- return actualRet;
}
XMLCh* ICULCPTranscoder::transcode(const char* const toTranscode,
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp Thu Jun 2 16:34:32 2005
@@ -249,19 +249,21 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp Thu Jun 2 16:34:32 2005
@@ -278,23 +278,34 @@
return retVal;
}
+bool IconvLCPTranscoder::transcode( const XMLCh* const toTranscode
+ , char* const toFill
+ , const unsigned int maxBytes
+ , MemoryManager* const manager)
+{
+ size_t bytesWritten, lettersConsumed;
+ return transcode(toTranscode, toFill, maxBytes, bytesWritten, lettersConsumed);
+}
-static void reallocString(char *&ref, size_t &size, MemoryManager* const manager, bool release_old)
+bool IconvLCPTranscoder::transcode( const char* const toTranscode
+ , XMLCh* const toFill
+ , const unsigned int maxChars
+ , MemoryManager* const manager)
+{
+ size_t bytesWritten, lettersConsumed;
+ return transcode(toTranscode, toFill, maxBytes, bytesWritten, lettersConsumed);
+}
+
+static void reallocString(char *&ref, size_t &size, MemoryManager* const manager, bool releaseOld)
{
char *tmp = (char*)manager->allocate(2 * size * sizeof(char));
memcpy(tmp, ref, size * sizeof(char));
- if (release_old) manager->deallocate(ref);
+ if (releaseOld) manager->deallocate(ref);
ref = tmp;
size *= 2;
}
-char* IconvLCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- return transcode(toTranscode, XMLPlatformUtils::fgMemoryManager);
-}
-
-
char* IconvLCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -332,75 +343,12 @@
}
-bool IconvLCPTranscoder::transcode( const XMLCh* const toTranscode
- , char* const toFill
- , const unsigned int maxBytes
- , MemoryManager* const manager)
-{
- // Watch for a couple of pyscho corner cases
- if (!toTranscode || !maxBytes)
- {
- toFill[0] = 0;
- return true;
- }
-
- if (!*toTranscode)
- {
- toFill[0] = 0;
- return true;
- }
-
- unsigned int wLent = getWideCharLength(toTranscode);
- wchar_t tmpWideCharArr[gTempBuffArraySize];
- wchar_t* allocatedArray = 0;
- wchar_t* wideCharBuf = 0;
-
- if (wLent > maxBytes) {
- wLent = maxBytes;
- }
-
- if (maxBytes >= gTempBuffArraySize) {
- wideCharBuf = allocatedArray = (wchar_t*)
- manager->allocate
- (
- (maxBytes + 1) * sizeof(wchar_t)
- );//new wchar_t[maxBytes + 1];
- }
- else
- wideCharBuf = tmpWideCharArr;
-
- for (unsigned int i = 0; i < wLent; i++)
- {
- wideCharBuf[i] = toTranscode[i];
- }
- wideCharBuf[wLent] = 0x00;
-
- // Ok, go ahead and try the transcoding. If it fails, then ...
- size_t mblen = ::wcstombs(toFill, wideCharBuf, maxBytes);
- if (mblen == -1)
- {
- manager->deallocate(allocatedArray);//delete [] allocatedArray;
- return false;
- }
-
- // Cap it off just in case
- toFill[mblen] = 0;
- manager->deallocate(allocatedArray);//delete [] allocatedArray;
- return true;
-}
-
-
-
-XMLCh* IconvLCPTranscoder::transcode(const char* const toTranscode)
-{
- return transcode(toTranscode, XMLPlatformUtils::fgMemoryManager);
-}
-static void reallocXMLString(XMLCh *&ref, size_t &size, MemoryManager* const manager, bool release_old)
+static void reallocXMLString(XMLCh *&ref, size_t &size, MemoryManager* const manager, bool releaseOld)
{
XMLCh *tmp = (XMLCh*)manager->allocate(2 * size * sizeof(XMLCh));
memcpy(tmp, ref, size * sizeof(XMLCh));
- if (release_old) manager->deallocate(ref);
+ if (releaseOld) manager->deallocate(ref);
ref = tmp;
size *= 2;
}
@@ -440,58 +388,6 @@
resultString[dstCursor] = L'\0';
return resultString;
}
-
-
-bool IconvLCPTranscoder::transcode( const char* const toTranscode
- , XMLCh* const toFill
- , const unsigned int maxChars
- , MemoryManager* const manager)
-{
- // Check for a couple of psycho corner cases
- if (!toTranscode || !maxChars)
- {
- toFill[0] = 0;
- return true;
- }
-
- if (!*toTranscode)
- {
- toFill[0] = 0;
- return true;
- }
-
- unsigned int len = calcRequiredSize(toTranscode);
- wchar_t tmpWideCharArr[gTempBuffArraySize];
- wchar_t* allocatedArray = 0;
- wchar_t* wideCharBuf = 0;
-
- if (len > maxChars) {
- len = maxChars;
- }
-
- if (maxChars >= gTempBuffArraySize)
- wideCharBuf = allocatedArray = (wchar_t*) manager->allocate
- (
- (maxChars + 1) * sizeof(wchar_t)
- );//new wchar_t[maxChars + 1];
- else
- wideCharBuf = tmpWideCharArr;
-
- if (::mbstowcs(wideCharBuf, toTranscode, maxChars) == -1)
- {
- manager->deallocate(allocatedArray);//delete [] allocatedArray;
- return false;
- }
-
- for (unsigned int i = 0; i < len; i++)
- {
- toFill[i] = (XMLCh) wideCharBuf[i];
- }
- toFill[len] = 0x00;
- manager->deallocate(allocatedArray);//delete [] allocatedArray;
- return true;
-}
-
// ---------------------------------------------------------------------------
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp Thu Jun 2 16:34:32 2005
@@ -152,32 +152,34 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const XMLCh* const toTranscode
- , char* const toFill
- , const unsigned int maxBytes
+ const char* const toTranscode
+ , XMLCh* const toFill
+ , const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const char* const toTranscode
- , XMLCh* const toFill
+ const XMLCh* const toTranscode
+ , char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.cpp Thu Jun 2 16:34:32 2005
@@ -363,35 +363,6 @@
-char* Iconv390LCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- char* retVal = 0;
- if (*toTranscode)
- {
- unsigned int wLent = getWideCharLength(toTranscode);
- //
- // Translate the input from Unicode XMLCh format into
- // ibm-037 char format via the lookup table.
- //
- retVal = new char[wLent + 1];
- const XMLCh *srcPtr = toTranscode;
- char *outPtr = retVal;
-
- while (*srcPtr != 0)
- *outPtr++ = gUnicodeToIBM037XlatTable[*srcPtr++];
- *outPtr=0;
- }
- else
- {
- retVal = new char[1];
- retVal[0] = 0;
- }
- return retVal;
-}
-
char* Iconv390LCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -450,55 +421,6 @@
*outPtr=0;
return true;
-}
-
-
-
-XMLCh* Iconv390LCPTranscoder::transcode(const char* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- XMLCh* retVal = 0;
- if (*toTranscode)
- {
- const unsigned int len = calcRequiredSize(toTranscode);
- if (len == 0)
- {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- return retVal;
- }
-
-
- wchar_t tmpWideCharArr[gTempBuffArraySize];
- wchar_t* allocatedArray = 0;
- wchar_t* wideCharBuf = 0;
-
- retVal = new XMLCh[len + 1];
-
- size_t retCode;
- char *tmpInPtr = (char*) toTranscode;
- char *tmpOutPtr = (char*) retVal;
- size_t inByteLeft = len;
- size_t outByteLeft = len*2;
- {
- XMLMutexLock lockConverter(&converter->fMutex);
- retCode = iconv(converter->fIconv390Descriptor, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);
- }
- if (retCode == -1) {
- delete [] retVal;
- return 0;
- }
- retVal[len] = 0x00;
- delete [] allocatedArray;
- }
- else
- {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- }
- return retVal;
}
XMLCh* Iconv390LCPTranscoder::transcode(const char* const toTranscode,
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv390/Iconv390TransService.hpp Thu Jun 2 16:34:32 2005
@@ -144,32 +144,34 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const XMLCh* const toTranscode
- , char* const toFill
- , const unsigned int maxBytes
+ const char* const toTranscode
+ , XMLCh* const toFill
+ , const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const char* const toTranscode
- , XMLCh* const toFill
+ const XMLCh* const toTranscode
+ , char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.cpp Thu Jun 2 16:34:32 2005
@@ -677,75 +677,6 @@
}
-char* Iconv400LCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- char* retBuf = 0;
-
- // Check for a couple of special cases
- if (!toTranscode)
- return 0;
-
- if (!*toTranscode)
- {
- retBuf = new char[1];
- retBuf[0] = 0;
- return retBuf;
- }
-
- // Caculate a return buffer size not too big, but less likely to overflow
- int32_t targetLen = (int32_t)(u_strlen(toTranscode) * 1.25);
-
- // Allocate the return buffer
- retBuf = new char[targetLen + 1];
-
- // Lock now while we call the converter.
- UErrorCode err = U_ZERO_ERROR;
- int32_t targetCap;
- {
- XMLMutexLock lockConverter(&fMutex);
-
- //Convert the Unicode string to char*
- targetCap = ucnv_fromUChars
- (
- fConverter
- , retBuf
- , targetLen + 1
- , toTranscode
- , &err
- );
- }
-
- // If targetLen is not enough then buffer overflow might occur
- if (err == U_BUFFER_OVERFLOW_ERROR)
- {
- // Reset the error, delete the old buffer, allocate a new one, and try again
- err = U_ZERO_ERROR;
- delete [] retBuf;
- retBuf = new char[targetCap];
-
- // Lock again before we retry
- XMLMutexLock lockConverter(&fMutex);
- targetCap = ucnv_fromUChars
- (
- fConverter
- , retBuf
- , targetCap
- , toTranscode
- , &err
- );
- }
-
- if (U_FAILURE(err))
- {
- delete [] retBuf;
- return 0;
- }
-
- // Cap it off and return
- retBuf[targetCap] = 0;
- return retBuf;
-}
-
char* Iconv400LCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -814,78 +745,6 @@
// Cap it off and return
retBuf[targetCap] = 0;
return retBuf;
-}
-
-XMLCh* Iconv400LCPTranscoder::transcode(const char* const toTranscode)
-{
- // Watch for a few pyscho corner cases
- if (!toTranscode)
- return 0;
-
- XMLCh* retVal = 0;
- if (!*toTranscode)
- {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- return retVal;
- }
-
- //
- // Get the length of the string to transcode. The Unicode string will
- // almost always be no more chars than were in the source, so this is
- // the best guess as to the storage needed.
- //
- const int32_t srcLen = (int32_t)strlen(toTranscode);
- // Allocate unicode string of equivalent length in unicode bytes
- retVal = new XMLCh[srcLen+1];
-
- // Now lock while we do these calculations
- UErrorCode err = U_ZERO_ERROR;
- {
- XMLMutexLock lockConverter(&fMutex);
-
- //
- // Here we don't know what the target length will be so use 0 and
- // expect an U_BUFFER_OVERFLOW_ERROR in which case it'd get resolved
- // by the correct capacity value.
- //
- int32_t targetCap;
- targetCap = ucnv_toUChars
- (
- fConverter
- , retVal
- , srcLen+1
- , toTranscode
- , srcLen
- , &err
- );
-
- if (err == U_BUFFER_OVERFLOW_ERROR) // @04c
- {
-
- err = U_ZERO_ERROR;
- delete [] retVal; // @04a
- retVal = new XMLCh[targetCap];
- ucnv_toUChars
- (
- fConverter
- , retVal
- , targetCap
- , toTranscode
- , srcLen
- , &err
- );
- }
- }
-
- if (U_FAILURE(err))
- {
- // Clean up if we got anything allocated
- delete [] retVal;
- return 0;
- }
-
- return retVal;
}
XMLCh* Iconv400LCPTranscoder::transcode(const char* const toTranscode,
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Iconv400/Iconv400TransService.hpp Thu Jun 2 16:34:32 2005
@@ -198,19 +198,21 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp Thu Jun 2 16:34:32 2005
@@ -1032,97 +1032,6 @@
}
-char* IconvFBSDLCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- char* retVal = 0;
- if (*toTranscode) {
- unsigned int wLent = getWideCharLength(toTranscode);
-
-#ifndef XML_USE_LIBICONV
-
- wchar_t tmpWideCharArr[gTempBuffArraySize];
- wchar_t* allocatedArray = 0;
- wchar_t* wideCharBuf = 0;
-
- if (wLent >= gTempBuffArraySize)
- wideCharBuf = allocatedArray = new wchar_t[wLent + 1];
- else
- wideCharBuf = tmpWideCharArr;
-
- for (unsigned int i = 0; i < wLent; i++)
- wideCharBuf[i] = toTranscode[i];
- wideCharBuf[wLent] = 0x00;
-
- // Calc the needed size.
- const size_t neededLen = fbsd_wcstombs(NULL, wideCharBuf, 0);
- if (neededLen == -1) {
- if (allocatedArray)
- delete [] allocatedArray;
- return 0;
- }
-
- retVal = new char[neededLen + 1];
- fbsd_wcstombs(retVal, wideCharBuf, neededLen);
- if (allocatedArray)
- delete [] allocatedArray;
- retVal[neededLen] = 0;
-
-#else /* XML_USE_LIBICONV */
-
- // Calc needed size.
- const size_t neededLen = calcRequiredSize (toTranscode);
- if (neededLen == 0)
- return 0;
- // allocate output buffer
- retVal = new char[neededLen + 1];
- if (retVal == NULL)
- return 0;
- // prepare the original
- char tmpWBuff[gTempBuffArraySize];
- char *wideCharBuf = 0;
- char *wBufPtr = 0;
- size_t len = wLent * uChSize();
-
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
- if (len > gTempBuffArraySize) {
- wBufPtr = new char[len];
- if (wBufPtr == NULL)
- return 0;
- wideCharBuf = wBufPtr;
- } else
- wideCharBuf = tmpWBuff;
- xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
- } else
- wideCharBuf = (char *) toTranscode;
-
- // perform conversion
- wLent *= uChSize();
- char *ptr = retVal;
- size_t tmpwLent = wLent;
- size_t rc = iconvTo(wideCharBuf, &tmpwLent, &ptr, neededLen);
- if (rc == (size_t)-1) {
- if (wBufPtr)
- delete [] wBufPtr;
- return 0;
- }
- if (wBufPtr)
- delete [] wBufPtr;
- retVal[neededLen] = 0;
-
-#endif /* !XML_USE_LIBICONV */
-
- } else {
- retVal = new char[1];
- if (retVal == NULL)
- return 0;
- retVal[0] = 0;
- }
- return retVal;
-}
-
char* IconvFBSDLCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -1312,92 +1221,6 @@
return true;
}
-
-
-XMLCh* IconvFBSDLCPTranscoder::transcode(const char* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- XMLCh* retVal = 0;
- if (*toTranscode) {
- const unsigned int wLent = calcRequiredSize(toTranscode);
- if (wLent == 0) {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- return retVal;
- }
-
-#ifndef XML_USE_LIBICONV
-
- wchar_t tmpWideCharArr[gTempBuffArraySize];
- wchar_t* allocatedArray = 0;
- wchar_t* wideCharBuf = 0;
-
- if (wLent >= gTempBuffArraySize)
- wideCharBuf = allocatedArray = new wchar_t[wLent + 1];
- else
- wideCharBuf = tmpWideCharArr;
-
- fbsd_mbstowcs(wideCharBuf, toTranscode, wLent);
- retVal = new XMLCh[wLent + 1];
- if (retVal == NULL) {
- if (allocatedArray)
- delete [] allocatedArray;
- return NULL;
- }
- for (unsigned int i = 0; i < wLent; i++)
- retVal[i] = (XMLCh) wideCharBuf[i];
- retVal[wLent] = 0x00;
- if (allocatedArray)
- delete [] allocatedArray;
-
-#else /* XML_USE_LIBICONV */
-
- char tmpWBuff[gTempBuffArraySize];
- char *wideCharBuf = 0;
- char *wBufPtr = 0;
- size_t len = wLent * uChSize();
-
- retVal = new XMLCh[wLent + 1];
- if (retVal == NULL)
- return NULL;
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
- if (len > gTempBuffArraySize) {
- wBufPtr = new char[len];
- if (wBufPtr == NULL)
- return 0;
- wideCharBuf = wBufPtr;
- } else
- wideCharBuf = tmpWBuff;
- } else
- wideCharBuf = (char *) retVal;
-
- size_t flen = strlen(toTranscode);
- char *ptr = wideCharBuf;
- size_t rc = iconvFrom(toTranscode, &flen, &ptr, len);
- if (rc == (size_t) -1) {
- if (wBufPtr)
- delete [] wBufPtr;
- return NULL;
- }
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
- mbsToXML (wideCharBuf, wLent, retVal, wLent);
- if (wBufPtr)
- delete [] wBufPtr;
- retVal[wLent] = 0x00;
-
-#endif /* !XML_USE_LIBICONV */
-
- }
- else {
- retVal = new XMLCh[1];
- if (retVal == NULL )
- return 0;
- retVal[0] = 0;
- }
- return retVal;
-}
XMLCh* IconvFBSDLCPTranscoder::transcode(const char* const toTranscode,
MemoryManager* const manager)
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.hpp Thu Jun 2 16:34:32 2005
@@ -370,32 +370,34 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const XMLCh* const toTranscode
- , char* const toFill
- , const unsigned int maxBytes
+ const char* const toTranscode
+ , XMLCh* const toFill
+ , const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const char* const toTranscode
- , XMLCh* const toFill
+ const XMLCh* const toTranscode
+ , char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp Thu Jun 2 16:34:32 2005
@@ -801,63 +801,6 @@
}
-char* IconvGNULCPTranscoder::transcode(const XMLCh* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- char* retVal = 0;
- if (*toTranscode) {
- unsigned int wLent = getWideCharLength(toTranscode);
-
- // Calc needed size.
- const size_t neededLen = calcRequiredSize (toTranscode);
- if (neededLen == 0)
- return 0;
- // allocate output buffer
- retVal = new char[neededLen + 1];
- if (retVal == NULL)
- return 0;
- // prepare the original
- char tmpWBuff[gTempBuffArraySize];
- char *wideCharBuf = 0;
- char *wBufPtr = 0;
- size_t len = wLent * uChSize();
-
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
- if (len > gTempBuffArraySize) {
- wBufPtr = new char[len];
- if (wBufPtr == NULL)
- return 0;
- wideCharBuf = wBufPtr;
- } else
- wideCharBuf = tmpWBuff;
- xmlToMbs (toTranscode, wLent, wideCharBuf, wLent);
- } else
- wideCharBuf = (char *) toTranscode;
-
- // perform conversion
- wLent *= uChSize();
- char *ptr = retVal;
- size_t rc = iconvTo(wideCharBuf, (size_t *) &wLent, &ptr, neededLen);
- if (rc == (size_t)-1) {
- if (wBufPtr)
- delete [] wBufPtr;
- return 0;
- }
- if (wBufPtr)
- delete [] wBufPtr;
- retVal[neededLen] = 0;
-
- } else {
- retVal = new char[1];
- if (retVal == NULL)
- return 0;
- retVal[0] = 0;
- }
- return retVal;
-}
-
char* IconvGNULCPTranscoder::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
@@ -973,63 +916,6 @@
return true;
}
-
-
-XMLCh* IconvGNULCPTranscoder::transcode(const char* const toTranscode)
-{
- if (!toTranscode)
- return 0;
-
- XMLCh* retVal = 0;
- if (*toTranscode) {
- const unsigned int wLent = calcRequiredSize(toTranscode);
- if (wLent == 0) {
- retVal = new XMLCh[1];
- retVal[0] = 0;
- return retVal;
- }
-
- char tmpWBuff[gTempBuffArraySize];
- char *wideCharBuf = 0;
- char *wBufPtr = 0;
- size_t len = wLent * uChSize();
-
- retVal = new XMLCh[wLent + 1];
- if (retVal == NULL)
- return NULL;
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER) {
- if (len > gTempBuffArraySize) {
- wBufPtr = new char[len];
- if (wBufPtr == NULL)
- return 0;
- wideCharBuf = wBufPtr;
- } else
- wideCharBuf = tmpWBuff;
- } else
- wideCharBuf = (char *) retVal;
-
- size_t flen = strlen(toTranscode);
- char *ptr = wideCharBuf;
- size_t rc = iconvFrom(toTranscode, &flen, &ptr, len);
- if (rc == (size_t) -1) {
- if (wBufPtr)
- delete [] wBufPtr;
- return NULL;
- }
- if (uChSize() != sizeof(XMLCh) || UBO() != BYTE_ORDER)
- mbsToXML (wideCharBuf, wLent, retVal, wLent);
- if (wBufPtr)
- delete [] wBufPtr;
- retVal[wLent] = 0x00;
- }
- else {
- retVal = new XMLCh[1];
- if (retVal == NULL )
- return 0;
- retVal[0] = 0;
- }
- return retVal;
-}
XMLCh* IconvGNULCPTranscoder::transcode(const char* const toTranscode,
MemoryManager* const manager)
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp Thu Jun 2 16:34:32 2005
@@ -328,32 +328,34 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const XMLCh* const toTranscode
- , char* const toFill
- , const unsigned int maxBytes
+ const char* const toTranscode
+ , XMLCh* const toFill
+ , const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
-
virtual bool transcode
(
- const char* const toTranscode
- , XMLCh* const toFill
+ const XMLCh* const toTranscode
+ , char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp Thu Jun 2 16:34:32 2005
@@ -227,26 +227,19 @@
// its assumed that the buffer is physically one char or byte
// larger.
// -----------------------------------------------------------------------
- virtual unsigned int calcRequiredSize(const char* const srcText
- , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual unsigned int calcRequiredSize(const XMLCh* const srcText
- , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
- virtual XMLCh* transcode(const char* const toTranscode);
virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual bool transcode
(
const char* const toTranscode
, XMLCh* const toFill
, const unsigned int maxChars
- , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ , size_t &lettersWritten
+ , size_t &bytesConsumed
);
virtual bool transcode
@@ -254,8 +247,18 @@
const XMLCh* const toTranscode
, char* const toFill
, const unsigned int maxChars
- , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ , size_t &bytesWritten
+ , size_t &lettersConsumed
);
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
+ virtual unsigned int calcRequiredSize(const char* const srcText
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual unsigned int calcRequiredSize(const XMLCh* const srcText
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
private :
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.hpp Thu Jun 2 16:34:32 2005
@@ -185,19 +185,21 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp Thu Jun 2 16:34:32 2005
@@ -278,19 +278,21 @@
// -----------------------------------------------------------------------
// Implementation of the virtual transcoder interface
// -----------------------------------------------------------------------
+ virtual char* transcode(const XMLCh* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+ virtual XMLCh* transcode(const char* const toTranscode,
+ MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+
+
+ // -----------------------------------------------------------------------
+ // DEPRECATED old transcode interface
+ // -----------------------------------------------------------------------
virtual unsigned int calcRequiredSize(const char* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
virtual unsigned int calcRequiredSize(const XMLCh* const srcText
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
-
- virtual char* transcode(const XMLCh* const toTranscode);
- virtual char* transcode(const XMLCh* const toTranscode,
- MemoryManager* const manager);
-
- virtual XMLCh* transcode(const char* const toTranscode);
- virtual XMLCh* transcode(const char* const toTranscode,
- MemoryManager* const manager);
virtual bool transcode
(
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLMsgLoader.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLMsgLoader.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLMsgLoader.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLMsgLoader.cpp Thu Jun 2 16:34:32 2005
@@ -79,11 +79,25 @@
* refer to phttp://oss.software.ibm.com/icu/userguide/locale.html
* for details.
*/
- if (localeToAdopt)
+ if (localeToAdopt && strlen(localeToAdopt) == 2)
{
- fLocale = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
- XMLString::transcode(fLocale, fLanguage, 2, XMLPlatformUtils::fgMemoryManager);
- fLanguage[2] = 0;
+/*
+ size_t lettersWritten, bytesConsumed;
+ XMLCh localBuffer[3];
+ if (XMLString::transcode(localeToAdopt, localBuffer, 2, lettersWritten, bytesConsumed)
+ && lettersWritten == 2)
+ {
+ fLocale = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
+ memcpy(fLanguage, localBuffer, 3 * sizeof(XMLCh));
+ }
+*/
+ XMLCh *transcoded = XMLString::transcode(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
+ if (transcoded[0] && transcoded[1] && !transcoded[2])
+ {
+ fLocale = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
+ memcpy(fLanguage, transcoded, 3 * sizeof(XMLCh));
+ XMLPlatformUtils::fgMemoryManager->deallocate(transcoded);
+ }
}
}
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.cpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.cpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.cpp Thu Jun 2 16:34:32 2005
@@ -546,30 +546,19 @@
}
-char* XMLString::transcode(const XMLCh* const toTranscode)
-{
- return gTranscoder->transcode(toTranscode);
-}
-
char* XMLString::transcode(const XMLCh* const toTranscode,
MemoryManager* const manager)
{
return gTranscoder->transcode(toTranscode, manager);
}
+
bool XMLString::transcode( const XMLCh* const toTranscode
, char* const toFill
, const unsigned int maxChars
, MemoryManager* const manager)
{
- if (!gTranscoder->transcode(toTranscode, toFill, maxChars, manager))
- return false;
- return true;
-}
-
-XMLCh* XMLString::transcode(const char* const toTranscode)
-{
- return gTranscoder->transcode(toTranscode);
+ return gTranscoder->transcode(toTranscode, toFill, maxChars, manager);
}
XMLCh* XMLString::transcode(const char* const toTranscode,
@@ -583,9 +572,7 @@
, const unsigned int maxChars
, MemoryManager* const manager)
{
- if (!gTranscoder->transcode(toTranscode, toFill, maxChars, manager))
- return false;
- return true;
+ return gTranscoder->transcode(toTranscode, toFill, maxChars, manager);
}
Modified: xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.hpp?rev=179673&r1=179672&r2=179673&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.hpp (original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/XMLString.hpp Thu Jun 2 16:34:32 2005
@@ -1372,15 +1372,11 @@
*/
static char* transcode
(
- const XMLCh* const toTranscode
- );
- static char* transcode
- (
const XMLCh* const toTranscode
- , MemoryManager* const manager
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- /** Transcodes a string to native code-page
+ /** Transcodes a string to native code-page (DEPRECATED)
*
* Be aware that when transcoding to an external encoding, that each
* Unicode char can create multiple output bytes. So you cannot assume
@@ -1415,15 +1411,11 @@
*/
static XMLCh* transcode
(
- const char* const toTranscode
- );
- static XMLCh* transcode
- (
const char* const toTranscode
- , MemoryManager* const manager
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
- /** Transcodes a string to native code-page
+ /** Transcodes a string to native code-page (DEPRECATED)
* @param toTranscode The string tobe transcoded
* @param toFill The buffer that is filled with the transcoded value.
* The size of this buffer should atleast be 'maxChars + 1'.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org