From db17e778199db87980e7e5aa1862f0fa321d53b1 Mon Sep 17 00:00:00 2001
From: Tinny Ng <tng@apache.org>
Date: Thu, 9 Jan 2003 15:36:11 +0000
Subject: [PATCH] Use transService to open the transcode if intrinsic is not
 found.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174601 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/util/TransService.cpp | 109 ++++++++++++++++--------------
 1 file changed, 57 insertions(+), 52 deletions(-)

diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index d736ee9bd..357545b1c 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -115,7 +115,7 @@ static void reinitMappingsRecognizer() {
 }
 
 // ---------------------------------------------------------------------------
-//  XLMTransService: Constructors and destructor
+//  XMLTransService: Constructors and destructor
 // ---------------------------------------------------------------------------
 XMLTransService::XMLTransService()
 {
@@ -164,7 +164,7 @@ void XMLTransService::addEncoding(const XMLCh* const encoding,
 }
 
 // ---------------------------------------------------------------------------
-//  XLMTranscoder: Non-virtual API
+//  XMLTransService: Non-virtual API
 // ---------------------------------------------------------------------------
 XMLTranscoder*
 XMLTransService::makeNewTranscoderFor(  const   char* const             encodingName
@@ -242,7 +242,7 @@ XMLTransService::makeNewTranscoderFor(  XMLRecognizer::Encodings        encoding
     //
     // We can only make transcoder if the passed encodingEnum is under this range
     //
-    if (encodingEnum < XMLRecognizer::EBCDIC || encodingEnum > XMLRecognizer::XERCES_XMLCH) {
+    if (encodingEnum < XMLRecognizer::Encodings_Min || encodingEnum > XMLRecognizer::Encodings_Max) {
         resValue = XMLTransService::InternalFailure;
         return 0;
     }
@@ -256,61 +256,20 @@ XMLTransService::makeNewTranscoderFor(  XMLRecognizer::Encodings        encoding
        return temp;
     }
     else {
-        resValue = XMLTransService::InternalFailure;
-        return 0;
-    }
-
-}
-
-
-// ---------------------------------------------------------------------------
-//  XLMTranscoder: Public Destructor
-// ---------------------------------------------------------------------------
-XMLTranscoder::~XMLTranscoder()
-{
-    delete [] fEncodingName;
-}
-
-
-// ---------------------------------------------------------------------------
-//  XLMTranscoder: Hidden Constructors
-// ---------------------------------------------------------------------------
-XMLTranscoder::XMLTranscoder(const  XMLCh* const    encodingName
-                            , const unsigned int    blockSize) :
-    fEncodingName(0)
-    , fBlockSize(blockSize)
-{
-    fEncodingName = XMLString::replicate(encodingName);
-}
+        XMLTranscoder* temp =  makeNewXMLTranscoder(XMLRecognizer::nameForEncoding(encodingEnum), resValue, blockSize);
 
+        // if successful, set resValue to OK
+        // if failed, the makeNewXMLTranscoder has already set the proper failing resValue
+        if (temp) resValue =  XMLTransService::Ok;
 
-// ---------------------------------------------------------------------------
-//  XLMTranscoder: Protected helpers
-// ---------------------------------------------------------------------------
-void XMLTranscoder::checkBlockSize(const unsigned int toCheck)
-{
-//    if (toCheck > fBlockSize)
-//        ThrowXML(TranscodingException, XMLExcepts::Trans_BadBlockSize);
-}
-
+        return temp;
+    }
 
-// ---------------------------------------------------------------------------
-//  XLMLCPTranscoder: Public Destructor
-// ---------------------------------------------------------------------------
-XMLLCPTranscoder::XMLLCPTranscoder()
-{
 }
 
 
 // ---------------------------------------------------------------------------
-//  XLMTranscoder: Hidden Constructors
-// ---------------------------------------------------------------------------
-XMLLCPTranscoder::~XMLLCPTranscoder()
-{
-}
-
-// ---------------------------------------------------------------------------
-//  XLMTranscoder: Hidden Init Method
+//  XMLTransTransService: Hidden Init Method
 //
 //  This is called by platform utils during startup.
 // ---------------------------------------------------------------------------
@@ -550,7 +509,7 @@ void XMLTransService::initTransService()
 }
 
 // ---------------------------------------------------------------------------
-//  XLMTransService: IANA encoding setting
+//  XMLTransService: IANA encoding setting
 // ---------------------------------------------------------------------------
 void XMLTransService::strictIANAEncoding(const bool newState)
 {
@@ -562,4 +521,50 @@ bool XMLTransService::isStrictIANAEncoding()
     return gStrictIANAEncoding;
 }
 
+// ---------------------------------------------------------------------------
+//  XMLTranscoder: Public Destructor
+// ---------------------------------------------------------------------------
+XMLTranscoder::~XMLTranscoder()
+{
+    delete [] fEncodingName;
+}
+
+
+// ---------------------------------------------------------------------------
+//  XMLTranscoder: Hidden Constructors
+// ---------------------------------------------------------------------------
+XMLTranscoder::XMLTranscoder(const  XMLCh* const    encodingName
+                            , const unsigned int    blockSize) :
+    fEncodingName(0)
+    , fBlockSize(blockSize)
+{
+    fEncodingName = XMLString::replicate(encodingName);
+}
+
+
+// ---------------------------------------------------------------------------
+//  XMLTranscoder: Protected helpers
+// ---------------------------------------------------------------------------
+void XMLTranscoder::checkBlockSize(const unsigned int toCheck)
+{
+//    if (toCheck > fBlockSize)
+//        ThrowXML(TranscodingException, XMLExcepts::Trans_BadBlockSize);
+}
+
+
+// ---------------------------------------------------------------------------
+//  XMLLCPTranscoder: Public Destructor
+// ---------------------------------------------------------------------------
+XMLLCPTranscoder::XMLLCPTranscoder()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  XMLLCPTranscoder: Hidden Constructors
+// ---------------------------------------------------------------------------
+XMLLCPTranscoder::~XMLLCPTranscoder()
+{
+}
+
 XERCES_CPP_NAMESPACE_END
-- 
GitLab