From 6fb9705d8a7612bab45370dbfd800aae886da0da Mon Sep 17 00:00:00 2001
From: David Abram Cargill <cargilld@apache.org>
Date: Thu, 21 Apr 2005 09:05:57 +0000
Subject: [PATCH] Add detection for UCS-2 and treat as another UTF16 alias.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@176382 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/dom/impl/DOMWriterImpl.cpp        |  7 ++-
 src/xercesc/internal/XMLReader.cpp            |  4 +-
 src/xercesc/util/TransService.cpp             | 18 +++++++
 .../Uniconv390/Uniconv390TransService.cpp     | 54 +++++++++++++++++++
 src/xercesc/util/XMLUni.cpp                   | 11 ++++
 src/xercesc/util/XMLUni.hpp                   |  2 +
 6 files changed, 94 insertions(+), 2 deletions(-)

diff --git a/src/xercesc/dom/impl/DOMWriterImpl.cpp b/src/xercesc/dom/impl/DOMWriterImpl.cpp
index 99a834f7e..641a7c72a 100644
--- a/src/xercesc/dom/impl/DOMWriterImpl.cpp
+++ b/src/xercesc/dom/impl/DOMWriterImpl.cpp
@@ -17,6 +17,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.58  2005/04/21 09:05:57  cargilld
+ * Add detection for UCS-2 and treat as another UTF16 alias.
+ *
  * Revision 1.57  2005/03/20 19:02:45  cargilld
  * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders.
  *
@@ -1824,7 +1827,9 @@ void DOMWriterImpl::processBOM()
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString2) == 0) ||
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString3) == 0) ||
              (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString4) == 0) ||
-             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString5) == 0)  ) 
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString5) == 0) ||
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString6) == 0) ||
+             (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString7) == 0)  ) 
     {
 #if defined(ENDIANMODE_LITTLE)
             fFormatter->writeBOM(BOM_utf16le, 2);
diff --git a/src/xercesc/internal/XMLReader.cpp b/src/xercesc/internal/XMLReader.cpp
index 9cf43a697..c1a5cc43d 100644
--- a/src/xercesc/internal/XMLReader.cpp
+++ b/src/xercesc/internal/XMLReader.cpp
@@ -1219,7 +1219,9 @@ bool XMLReader::setEncoding(const XMLCh* const newEncoding)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString2)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString3)
         ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString4)
-        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString5))
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString5)
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString6)
+        ||  !XMLString::compareString(inputEncoding, XMLUni::fgUTF16EncodingString7))
         {
             fMemoryManager->deallocate(inputEncoding);
 
diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index 81beb591d..51c53c6b6 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -424,6 +424,24 @@ void XMLTransService::initTransService()
         )
     );
     gMappings->put
+    (
+		(void*)XMLUni::fgUTF16EncodingString6,
+        new EEndianNameMapFor<XMLUTF16Transcoder>
+        (
+            XMLUni::fgUTF16EncodingString6
+            , false
+        )
+    );
+    gMappings->put
+    (
+		(void*)XMLUni::fgUTF16EncodingString7,
+        new EEndianNameMapFor<XMLUTF16Transcoder>
+        (
+            XMLUni::fgUTF16EncodingString7
+            , false
+        )
+    );
+    gMappings->put
     (
 		(void*)XMLUni::fgUCS4EncodingString,
         new EEndianNameMapFor<XMLUCS4Transcoder>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
index 111848b2a..919520f8c 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
@@ -698,6 +698,33 @@ void Uniconv390TransService::initTransService()
            )
        );
        gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString5,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString5
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString6,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString6
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString7,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString7
+               , false
+           )
+       );
+       gMappings->put
        (
    		(void*)XMLUni::fgUCS4EncodingString,
            new EEndianNameMapFor<XMLUCS4Transcoder>
@@ -942,6 +969,33 @@ void Uniconv390TransService::initTransService()
            )
        );
        gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString5,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString5
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString6,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString6
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString7,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString7
+               , false
+           )
+       );
+       gMappings->put
        (
    		(void*)XMLUni::fgUCS4EncodingString,
            new EEndianNameMapFor<XMLUCS4Transcoder>
diff --git a/src/xercesc/util/XMLUni.cpp b/src/xercesc/util/XMLUni.cpp
index 4d5da295b..ef2ca4b9c 100644
--- a/src/xercesc/util/XMLUni.cpp
+++ b/src/xercesc/util/XMLUni.cpp
@@ -430,6 +430,17 @@ const XMLCh XMLUni::fgUTF16EncodingString5[] =
     chLatin_U, chLatin_T, chLatin_F, chDigit_1, chDigit_6, chNull
 };
 
+const XMLCh XMLUni::fgUTF16EncodingString6[] =
+{
+    chLatin_U, chLatin_C, chLatin_S, chDash, chDigit_2, chNull
+};
+
+const XMLCh XMLUni::fgUTF16EncodingString7[] =
+{
+    chLatin_I, chLatin_S, chLatin_O, chDash, chDigit_1, chDigit_0, chDigit_6, chDigit_4
+    , chDigit_6, chDash, chLatin_U, chLatin_C, chLatin_S, chDash, chDigit_2, chNull
+};
+
 const XMLCh XMLUni::fgUTF16BEncodingString[] =
 {
     chLatin_U, chLatin_T, chLatin_F, chDash, chDigit_1, chDigit_6, chSpace, chOpenParen, chLatin_B, chLatin_E, chCloseParen, chNull
diff --git a/src/xercesc/util/XMLUni.hpp b/src/xercesc/util/XMLUni.hpp
index fd94e44dc..6d991f281 100644
--- a/src/xercesc/util/XMLUni.hpp
+++ b/src/xercesc/util/XMLUni.hpp
@@ -119,6 +119,8 @@ public :
     static const XMLCh fgUTF16EncodingString3[];
     static const XMLCh fgUTF16EncodingString4[];
     static const XMLCh fgUTF16EncodingString5[];
+    static const XMLCh fgUTF16EncodingString6[];
+    static const XMLCh fgUTF16EncodingString7[];
     static const XMLCh fgUTF16BEncodingString[];
     static const XMLCh fgUTF16BEncodingString2[];
     static const XMLCh fgUTF16LEncodingString[];
-- 
GitLab