PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/ATF2/control-software/epics-3.14.8/extensions/src/ChannelArchiver/ThirdParty/xerces-c-src2_4_0/src/xercesc/util/TransService.cpp

http://atf2flightsim.googlecode.com/
C++ | 577 lines | 344 code | 65 blank | 168 comment | 17 complexity | 8154ea332c0cd2948d9a969570fd9fec MD5 | raw file
Possible License(s): BSD-2-Clause, LGPL-2.0, IPL-1.0, BSD-3-Clause
  1. /*
  2. * The Apache Software License, Version 1.1
  3. *
  4. * Copyright (c) 1999-2003 The Apache Software Foundation. All rights
  5. * reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. *
  14. * 2. Redistributions in binary form must reproduce the above copyright
  15. * notice, this list of conditions and the following disclaimer in
  16. * the documentation and/or other materials provided with the
  17. * distribution.
  18. *
  19. * 3. The end-user documentation included with the redistribution,
  20. * if any, must include the following acknowledgment:
  21. * "This product includes software developed by the
  22. * Apache Software Foundation (http://www.apache.org/)."
  23. * Alternately, this acknowledgment may appear in the software itself,
  24. * if and wherever such third-party acknowledgments normally appear.
  25. *
  26. * 4. The names "Xerces" and "Apache Software Foundation" must
  27. * not be used to endorse or promote products derived from this
  28. * software without prior written permission. For written
  29. * permission, please contact apache\@apache.org.
  30. *
  31. * 5. Products derived from this software may not be called "Apache",
  32. * nor may "Apache" appear in their name, without prior written
  33. * permission of the Apache Software Foundation.
  34. *
  35. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46. * SUCH DAMAGE.
  47. * ====================================================================
  48. *
  49. * This software consists of voluntary contributions made by many
  50. * individuals on behalf of the Apache Software Foundation, and was
  51. * originally based on software copyright (c) 1999, International
  52. * Business Machines, Inc., http://www.ibm.com . For more information
  53. * on the Apache Software Foundation, please see
  54. * <http://www.apache.org/>.
  55. */
  56. /*
  57. * $Id: TransService.cpp,v 1.1.1.1 2009/03/14 06:42:22 whitegr Exp $
  58. */
  59. // ---------------------------------------------------------------------------
  60. // Includes
  61. // ---------------------------------------------------------------------------
  62. #include <xercesc/util/Janitor.hpp>
  63. #include <xercesc/util/XML88591Transcoder.hpp>
  64. #include <xercesc/util/XMLASCIITranscoder.hpp>
  65. #include <xercesc/util/XMLChTranscoder.hpp>
  66. #include <xercesc/util/XMLEBCDICTranscoder.hpp>
  67. #include <xercesc/util/XMLIBM1047Transcoder.hpp>
  68. #include <xercesc/util/XMLIBM1140Transcoder.hpp>
  69. #include <xercesc/util/XMLUCS4Transcoder.hpp>
  70. #include <xercesc/util/XMLUTF8Transcoder.hpp>
  71. #include <xercesc/util/XMLUTF16Transcoder.hpp>
  72. #include <xercesc/util/XMLWin1252Transcoder.hpp>
  73. #include <xercesc/util/XMLUniDefs.hpp>
  74. #include <xercesc/util/XMLUni.hpp>
  75. #include <xercesc/util/EncodingValidator.hpp>
  76. #include <xercesc/util/XMLRegisterCleanup.hpp>
  77. #include <xercesc/util/PlatformUtils.hpp>
  78. #include <xercesc/util/TransENameMap.hpp>
  79. XERCES_CPP_NAMESPACE_BEGIN
  80. // ---------------------------------------------------------------------------
  81. // Local, static data
  82. //
  83. // gStrictIANAEncoding
  84. // A flag to control whether strict IANA encoding names checking should
  85. // be done
  86. //
  87. // ---------------------------------------------------------------------------
  88. static bool gStrictIANAEncoding = false;
  89. RefHashTableOf<ENameMap>* XMLTransService::gMappings = 0;
  90. RefVectorOf<ENameMap> * XMLTransService::gMappingsRecognizer = 0;
  91. // -----------------------------------------------------------------------
  92. // Notification that lazy data has been deleted
  93. // -----------------------------------------------------------------------
  94. void XMLTransService::reinitMappings() {
  95. delete gMappings; // The contents of the gMappings hash table are owned by
  96. gMappings = 0; // the it, and so will be deleted by gMapping's destructor.
  97. }
  98. void XMLTransService::reinitMappingsRecognizer() {
  99. delete XMLTransService::gMappingsRecognizer;
  100. gMappingsRecognizer = 0;
  101. }
  102. // ---------------------------------------------------------------------------
  103. // XMLTransService: Constructors and destructor
  104. // ---------------------------------------------------------------------------
  105. XMLTransService::XMLTransService()
  106. {
  107. static XMLRegisterCleanup mappingsCleanup;
  108. static XMLRegisterCleanup mappingsRecognizerCleanup;
  109. if (!gMappings) {
  110. RefHashTableOf<ENameMap>* t = new RefHashTableOf<ENameMap>(103);
  111. if (XMLPlatformUtils::compareAndSwap((void **)&gMappings, t, 0) != 0)
  112. {
  113. delete t;
  114. }
  115. else
  116. {
  117. mappingsCleanup.registerCleanup(reinitMappings);
  118. }
  119. }
  120. if (!gMappingsRecognizer) {
  121. RefVectorOf<ENameMap>* t = new RefVectorOf<ENameMap>(XMLRecognizer::Encodings_Count);
  122. if (XMLPlatformUtils::compareAndSwap((void **)&gMappingsRecognizer, t, 0) != 0)
  123. {
  124. delete t;
  125. }
  126. else
  127. {
  128. mappingsRecognizerCleanup.registerCleanup(reinitMappingsRecognizer);
  129. }
  130. }
  131. }
  132. XMLTransService::~XMLTransService()
  133. {
  134. }
  135. // ---------------------------------------------------------------------------
  136. // Allow user specific encodings to be added to the mappings table.
  137. // Should be called after platform init
  138. // ---------------------------------------------------------------------------
  139. void XMLTransService::addEncoding(const XMLCh* const encoding,
  140. ENameMap* const ownMapping)
  141. {
  142. gMappings->put((void *) encoding, ownMapping);
  143. }
  144. // ---------------------------------------------------------------------------
  145. // XMLTransService: Non-virtual API
  146. // ---------------------------------------------------------------------------
  147. XMLTranscoder*
  148. XMLTransService::makeNewTranscoderFor( const char* const encodingName
  149. , XMLTransService::Codes& resValue
  150. , const unsigned int blockSize
  151. , MemoryManager* const manager)
  152. {
  153. XMLCh* tmpName = XMLString::transcode(encodingName, manager);
  154. ArrayJanitor<XMLCh> janName(tmpName, manager);
  155. return makeNewTranscoderFor(tmpName, resValue, blockSize, manager);
  156. }
  157. XMLTranscoder*
  158. XMLTransService::makeNewTranscoderFor( const XMLCh* const encodingName
  159. , XMLTransService::Codes& resValue
  160. , const unsigned int blockSize
  161. , MemoryManager* const manager)
  162. {
  163. //
  164. // If strict IANA encoding flag is set, validate encoding name
  165. //
  166. if (gStrictIANAEncoding)
  167. {
  168. if (!EncodingValidator::instance()->isValidEncoding(encodingName))
  169. {
  170. resValue = XMLTransService::UnsupportedEncoding;
  171. return 0;
  172. }
  173. }
  174. //
  175. // First try to find it in our list of mappings to intrinsically
  176. // supported encodings. We have to upper case the passed encoding
  177. // name because we use a hash table and we stored all our mappings
  178. // in all uppercase.
  179. //
  180. const unsigned int bufSize = 2048;
  181. XMLCh upBuf[bufSize + 1];
  182. if (!XMLString::copyNString(upBuf, encodingName, bufSize))
  183. {
  184. resValue = XMLTransService::InternalFailure;
  185. return 0;
  186. }
  187. XMLString::upperCase(upBuf);
  188. ENameMap* ourMapping = gMappings->get(upBuf);
  189. // If we found it, then call the factory method for it
  190. if (ourMapping)
  191. {
  192. XMLTranscoder* temp = ourMapping->makeNew(blockSize, manager);
  193. resValue = temp ? XMLTransService::Ok : XMLTransService::InternalFailure;
  194. return temp;
  195. }
  196. //
  197. // It wasn't an intrinsic and it wasn't disallowed, so pass it on
  198. // to the trans service to see if he can make anything of it.
  199. //
  200. XMLTranscoder* temp = makeNewXMLTranscoder(encodingName, resValue, blockSize, manager);
  201. // if successful, set resValue to OK
  202. // if failed, the makeNewXMLTranscoder has already set the proper failing resValue
  203. if (temp) resValue = XMLTransService::Ok;
  204. return temp;
  205. }
  206. XMLTranscoder*
  207. XMLTransService::makeNewTranscoderFor( XMLRecognizer::Encodings encodingEnum
  208. , XMLTransService::Codes& resValue
  209. , const unsigned int blockSize
  210. , MemoryManager* const manager)
  211. {
  212. //
  213. // We can only make transcoder if the passed encodingEnum is under this range
  214. //
  215. if (encodingEnum < XMLRecognizer::Encodings_Min || encodingEnum > XMLRecognizer::Encodings_Max) {
  216. resValue = XMLTransService::InternalFailure;
  217. return 0;
  218. }
  219. ENameMap* ourMapping = gMappingsRecognizer->elementAt(encodingEnum);
  220. // If we found it, then call the factory method for it
  221. if (ourMapping) {
  222. XMLTranscoder* temp = ourMapping->makeNew(blockSize, manager);
  223. resValue = temp ? XMLTransService::Ok : XMLTransService::InternalFailure;
  224. return temp;
  225. }
  226. else {
  227. XMLTranscoder* temp = makeNewXMLTranscoder(XMLRecognizer::nameForEncoding(encodingEnum), resValue, blockSize, manager);
  228. // if successful, set resValue to OK
  229. // if failed, the makeNewXMLTranscoder has already set the proper failing resValue
  230. if (temp) resValue = XMLTransService::Ok;
  231. return temp;
  232. }
  233. }
  234. // ---------------------------------------------------------------------------
  235. // XMLTransTransService: Hidden Init Method
  236. //
  237. // This is called by platform utils during startup.
  238. // ---------------------------------------------------------------------------
  239. void XMLTransService::initTransService()
  240. {
  241. //
  242. // A stupid way to increment the fCurCount inside the RefVectorOf
  243. //
  244. for (unsigned int i = 0; i < XMLRecognizer::Encodings_Count; i++)
  245. gMappingsRecognizer->addElement(0);
  246. //
  247. // Add in the magical mapping for the native XMLCh transcoder. This
  248. // is used for internal entities.
  249. //
  250. gMappingsRecognizer->setElementAt(new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString), XMLRecognizer::XERCES_XMLCH);
  251. gMappings->put((void*)XMLUni::fgXMLChEncodingString, new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString));
  252. //
  253. // Add in our mappings for ASCII.
  254. //
  255. gMappingsRecognizer->setElementAt(new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString), XMLRecognizer::US_ASCII);
  256. gMappings->put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString));
  257. gMappings->put((void*)XMLUni::fgUSASCIIEncodingString2, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString2));
  258. gMappings->put((void*)XMLUni::fgUSASCIIEncodingString3, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString3));
  259. gMappings->put((void*)XMLUni::fgUSASCIIEncodingString4, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString4));
  260. //
  261. // Add in our mappings for UTF-8
  262. //
  263. gMappingsRecognizer->setElementAt(new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString), XMLRecognizer::UTF_8);
  264. gMappings->put((void*)XMLUni::fgUTF8EncodingString, new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString));
  265. gMappings->put((void*)XMLUni::fgUTF8EncodingString2, new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString2));
  266. //
  267. // Add in our mappings for Latin1
  268. //
  269. gMappings->put((void*)XMLUni::fgISO88591EncodingString, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString));
  270. gMappings->put((void*)XMLUni::fgISO88591EncodingString2, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString2));
  271. gMappings->put((void*)XMLUni::fgISO88591EncodingString3, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString3));
  272. gMappings->put((void*)XMLUni::fgISO88591EncodingString4, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString4));
  273. gMappings->put((void*)XMLUni::fgISO88591EncodingString5, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString5));
  274. gMappings->put((void*)XMLUni::fgISO88591EncodingString6, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString6));
  275. gMappings->put((void*)XMLUni::fgISO88591EncodingString7, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString7));
  276. gMappings->put((void*)XMLUni::fgISO88591EncodingString8, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString8));
  277. gMappings->put((void*)XMLUni::fgISO88591EncodingString9, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString9));
  278. gMappings->put((void*)XMLUni::fgISO88591EncodingString10, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString10));
  279. gMappings->put((void*)XMLUni::fgISO88591EncodingString11, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString11));
  280. gMappings->put((void*)XMLUni::fgISO88591EncodingString12, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString12));
  281. //
  282. // Add in our mappings for UTF-16 and UCS-4, little endian
  283. //
  284. bool swapped = false;
  285. #if defined(ENDIANMODE_BIG)
  286. swapped = true;
  287. #endif
  288. gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16LEncodingString, swapped), XMLRecognizer::UTF_16L);
  289. gMappings->put
  290. (
  291. (void*)XMLUni::fgUTF16LEncodingString,
  292. new EEndianNameMapFor<XMLUTF16Transcoder>
  293. (
  294. XMLUni::fgUTF16LEncodingString
  295. , swapped
  296. )
  297. );
  298. gMappings->put
  299. (
  300. (void*)XMLUni::fgUTF16LEncodingString2,
  301. new EEndianNameMapFor<XMLUTF16Transcoder>
  302. (
  303. XMLUni::fgUTF16LEncodingString2
  304. , swapped
  305. )
  306. );
  307. gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4LEncodingString, swapped), XMLRecognizer::UCS_4L);
  308. gMappings->put
  309. (
  310. (void*)XMLUni::fgUCS4LEncodingString,
  311. new EEndianNameMapFor<XMLUCS4Transcoder>
  312. (
  313. XMLUni::fgUCS4LEncodingString
  314. , swapped
  315. )
  316. );
  317. gMappings->put
  318. (
  319. (void*)XMLUni::fgUCS4LEncodingString2,
  320. new EEndianNameMapFor<XMLUCS4Transcoder>
  321. (
  322. XMLUni::fgUCS4LEncodingString2
  323. , swapped
  324. )
  325. );
  326. //
  327. // Add in our mappings for UTF-16 and UCS-4, big endian
  328. //
  329. swapped = false;
  330. #if defined(ENDIANMODE_LITTLE)
  331. swapped = true;
  332. #endif
  333. gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16BEncodingString, swapped), XMLRecognizer::UTF_16B);
  334. gMappings->put
  335. (
  336. (void*)XMLUni::fgUTF16BEncodingString,
  337. new EEndianNameMapFor<XMLUTF16Transcoder>
  338. (
  339. XMLUni::fgUTF16BEncodingString
  340. , swapped
  341. )
  342. );
  343. gMappings->put
  344. (
  345. (void*)XMLUni::fgUTF16BEncodingString2,
  346. new EEndianNameMapFor<XMLUTF16Transcoder>
  347. (
  348. XMLUni::fgUTF16BEncodingString2
  349. , swapped
  350. )
  351. );
  352. gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4BEncodingString, swapped), XMLRecognizer::UCS_4B);
  353. gMappings->put
  354. (
  355. (void*)XMLUni::fgUCS4BEncodingString,
  356. new EEndianNameMapFor<XMLUCS4Transcoder>
  357. (
  358. XMLUni::fgUCS4BEncodingString
  359. , swapped
  360. )
  361. );
  362. gMappings->put
  363. (
  364. (void*)XMLUni::fgUCS4BEncodingString2,
  365. new EEndianNameMapFor<XMLUCS4Transcoder>
  366. (
  367. XMLUni::fgUCS4BEncodingString2
  368. , swapped
  369. )
  370. );
  371. //
  372. // Add in our mappings for UTF-16 and UCS-4 which does not indicate endian
  373. // assumes the same endian encoding as the OS
  374. //
  375. gMappings->put
  376. (
  377. (void*)XMLUni::fgUTF16EncodingString,
  378. new EEndianNameMapFor<XMLUTF16Transcoder>
  379. (
  380. XMLUni::fgUTF16EncodingString
  381. , false
  382. )
  383. );
  384. gMappings->put
  385. (
  386. (void*)XMLUni::fgUTF16EncodingString2,
  387. new EEndianNameMapFor<XMLUTF16Transcoder>
  388. (
  389. XMLUni::fgUTF16EncodingString2
  390. , false
  391. )
  392. );
  393. gMappings->put
  394. (
  395. (void*)XMLUni::fgUTF16EncodingString3,
  396. new EEndianNameMapFor<XMLUTF16Transcoder>
  397. (
  398. XMLUni::fgUTF16EncodingString3
  399. , false
  400. )
  401. );
  402. gMappings->put
  403. (
  404. (void*)XMLUni::fgUTF16EncodingString4,
  405. new EEndianNameMapFor<XMLUTF16Transcoder>
  406. (
  407. XMLUni::fgUTF16EncodingString4
  408. , false
  409. )
  410. );
  411. gMappings->put
  412. (
  413. (void*)XMLUni::fgUCS4EncodingString,
  414. new EEndianNameMapFor<XMLUCS4Transcoder>
  415. (
  416. XMLUni::fgUCS4EncodingString
  417. , false
  418. )
  419. );
  420. gMappings->put
  421. (
  422. (void*)XMLUni::fgUCS4EncodingString2,
  423. new EEndianNameMapFor<XMLUCS4Transcoder>
  424. (
  425. XMLUni::fgUCS4EncodingString2
  426. , false
  427. )
  428. );
  429. gMappings->put
  430. (
  431. (void*)XMLUni::fgUCS4EncodingString3,
  432. new EEndianNameMapFor<XMLUCS4Transcoder>
  433. (
  434. XMLUni::fgUCS4EncodingString3
  435. , false
  436. )
  437. );
  438. //
  439. // Add in our mappings for IBM037, and the one alias we support for
  440. // it, which is EBCDIC-CP-US.
  441. //
  442. gMappingsRecognizer->setElementAt(new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgEBCDICEncodingString), XMLRecognizer::EBCDIC);
  443. gMappings->put((void*)XMLUni::fgIBM037EncodingString, new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgIBM037EncodingString));
  444. gMappings->put((void*)XMLUni::fgIBM037EncodingString2, new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgIBM037EncodingString2));
  445. //hhe
  446. gMappings->put((void*)XMLUni::fgIBM1047EncodingString, new ENameMapFor<XMLIBM1047Transcoder>(XMLUni::fgIBM1047EncodingString));
  447. gMappings->put((void*)XMLUni::fgIBM1047EncodingString2, new ENameMapFor<XMLIBM1047Transcoder>(XMLUni::fgIBM1047EncodingString2));
  448. //
  449. // Add in our mappings for IBM037 with Euro update, i.e. IBM1140. It
  450. // has alias IBM01140, the one suggested by IANA
  451. //
  452. gMappings->put((void*)XMLUni::fgIBM1140EncodingString, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString));
  453. gMappings->put((void*)XMLUni::fgIBM1140EncodingString2, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString2));
  454. gMappings->put((void*)XMLUni::fgIBM1140EncodingString3, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString3));
  455. gMappings->put((void*)XMLUni::fgIBM1140EncodingString4, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString4));
  456. //
  457. // Add in our mappings for Windows-1252. We don't have any aliases for
  458. // this one, so there is just one mapping.
  459. //
  460. gMappings->put((void*)XMLUni::fgWin1252EncodingString, new ENameMapFor<XMLWin1252Transcoder>(XMLUni::fgWin1252EncodingString));
  461. }
  462. // ---------------------------------------------------------------------------
  463. // XMLTransService: IANA encoding setting
  464. // ---------------------------------------------------------------------------
  465. void XMLTransService::strictIANAEncoding(const bool newState)
  466. {
  467. gStrictIANAEncoding = newState;
  468. }
  469. bool XMLTransService::isStrictIANAEncoding()
  470. {
  471. return gStrictIANAEncoding;
  472. }
  473. // ---------------------------------------------------------------------------
  474. // XMLTranscoder: Public Destructor
  475. // ---------------------------------------------------------------------------
  476. XMLTranscoder::~XMLTranscoder()
  477. {
  478. fMemoryManager->deallocate(fEncodingName);//delete [] fEncodingName;
  479. }
  480. // ---------------------------------------------------------------------------
  481. // XMLTranscoder: Hidden Constructors
  482. // ---------------------------------------------------------------------------
  483. XMLTranscoder::XMLTranscoder(const XMLCh* const encodingName
  484. , const unsigned int blockSize
  485. , MemoryManager* const manager) :
  486. fEncodingName(0)
  487. , fBlockSize(blockSize)
  488. , fMemoryManager(manager)
  489. {
  490. fEncodingName = XMLString::replicate(encodingName, fMemoryManager);
  491. }
  492. // ---------------------------------------------------------------------------
  493. // XMLTranscoder: Protected helpers
  494. // ---------------------------------------------------------------------------
  495. void XMLTranscoder::checkBlockSize(const unsigned int toCheck)
  496. {
  497. // if (toCheck > fBlockSize)
  498. // ThrowXML(TranscodingException, XMLExcepts::Trans_BadBlockSize);
  499. }
  500. // ---------------------------------------------------------------------------
  501. // XMLLCPTranscoder: Public Destructor
  502. // ---------------------------------------------------------------------------
  503. XMLLCPTranscoder::XMLLCPTranscoder()
  504. {
  505. }
  506. // ---------------------------------------------------------------------------
  507. // XMLLCPTranscoder: Hidden Constructors
  508. // ---------------------------------------------------------------------------
  509. XMLLCPTranscoder::~XMLLCPTranscoder()
  510. {
  511. }
  512. XERCES_CPP_NAMESPACE_END