Author: jberry
Date: Thu May 26 06:25:23 2005
New Revision: 178632

URL: http://svn.apache.org/viewcvs?rev=178632&view=rev
Log:
Add transcoders, msgloaders, and netaccessors

Modified:
    xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/PlatformUtils.cpp

Modified: 
xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/PlatformUtils.cpp
URL: 
http://svn.apache.org/viewcvs/xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/PlatformUtils.cpp?rev=178632&r1=178631&r2=178632&view=diff
==============================================================================
--- xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/PlatformUtils.cpp 
(original)
+++ xerces/c/branches/jberry/3.0-unstable/src/xercesc/util/PlatformUtils.cpp 
Thu May 26 06:25:23 2005
@@ -25,16 +25,18 @@
 // ---------------------------------------------------------------------------
 #include <config.h>
 
+// *** TODO: protect and x-platform
+#include <limits.h>
+#include <sys/timeb.h>
+
 #include <xercesc/util/Mutexes.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
-#include <xercesc/util/TransService.hpp>
 #include <xercesc/util/XMLString.hpp>
-#include <xercesc/util/XMLMsgLoader.hpp>
-#include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/internal/XMLReader.hpp>
 #include <xercesc/util/RuntimeException.hpp>
+#include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLRegisterCleanup.hpp>
 #include <xercesc/util/DefaultPanicHandler.hpp>
 #include <xercesc/util/XMLInitializer.hpp>
@@ -56,10 +58,38 @@
 #      include <xercesc/util/AtomicOpManagers/PosixAtomicOpMgr.hpp>
 #endif
 
-#include <limits.h>
+#include <xercesc/util/XMLNetAccessor.hpp>
+#if XERCES_USE_NETACCESSOR_SOCKET
+#      include <xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp>
+#endif
+#if XERCES_USE_NETACCESSOR_LIBWWW
+#      include <xercesc/util/NetAccessors/libWWW/LibWWWNetAccessor.hpp>
+#endif
+#if XERCES_USE_NETACCESSOR_CFURL
+#      include 
<xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp>
+#endif
 
-// *** TODO: protect and x-platform
-#include <sys/timeb.h>
+#include <xercesc/util/XMLMsgLoader.hpp>
+#if XERCES_USE_MSGLOADER_ICU
+#      include <xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp>
+#endif
+#if XERCES_USE_MSGLOADER_ICONV
+#      include <xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp>
+#endif
+#if XERCES_USE_MSGLOADER_INMEMORY
+#      include <xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp>
+#endif
+
+#include <xercesc/util/TransService.hpp>
+#if XERCES_USE_TRANSCODER_ICU
+#      include <xercesc/util/Transcoders/ICU/ICUTransService.hpp>
+#endif
+#if XERCES_USE_TRANSCODER_ICONV
+#      include <xercesc/util/Transcoders/Iconv/IconvTransService.hpp>
+#endif
+#if XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER
+#      include 
<xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp>
+#endif
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -319,6 +349,85 @@
     fgUserPanicHandler? fgUserPanicHandler->panic(reason) : 
fgDefaultPanicHandler->panic(reason);      
 }
 
+
+
+// ---------------------------------------------------------------------------
+//  XMLPlatformUtils: Private Static Methods
+// ---------------------------------------------------------------------------
+
+XMLNetAccessor* XMLPlatformUtils::makeNetAccessor()
+{
+       XMLNetAccessor* na = 0;
+       
+       #if defined (XERCES_USE_NETACCESSOR_SOCKET)
+               na = new SocketNetAccessor();
+       #elif defined (XERCES_USE_NETACCESSOR_LIBWWW)
+               na = new LibWWWNetAccessor();
+       #elif defined (XERCES_USE_NETACCESSOR_CFURL)
+               na = new MacOSURLAccessCF();
+       #else
+               #warning No NetAccessor is configured for this platform. Xerces 
will have no net access.
+       #endif
+
+       return na;
+}
+
+
+//
+//  This method is called by the platform independent part of this class
+//  when client code asks to have one of the supported message sets loaded.
+//
+
+XMLMsgLoader* XMLPlatformUtils::loadAMsgSet(const XMLCh* const msgDomain)
+{
+    XMLMsgLoader* ms;
+    
+    try
+    {
+       #if defined (XERCES_USE_MSGLOADER_ICU)
+               ms = new ICUMsgLoader(msgDomain);
+       #elif defined (XERCES_USE_MSGLOADER_ICONV)
+               ms = new MsgCatalogLoader(msgDomain);
+       #else // XERCES_USE_MSGLOADER_INMEMORY
+               ms = new InMemMsgLoader(msgDomain);
+       #endif
+    }
+    catch(const OutOfMemoryException&)
+    {
+        throw;
+    }
+    catch(...)
+    {
+        panic(PanicHandler::Panic_CantLoadMsgDomain);
+    }
+    
+    return ms;
+}
+
+
+//
+//  This method is called very early in the bootstrapping process. This guy
+//  must create a transcoding service and return it. It cannot use any string
+//  methods, any transcoding services, throw any exceptions, etc... It just
+//  makes a transcoding service and returns it, or returns zero on failure.
+//
+
+XMLTransService* XMLPlatformUtils::makeTransService()
+{
+       XMLTransService* tc = 0;
+       
+       #if defined   (XERCES_USE_TRANSCODER_ICU)
+               tc = new ICUTransService;
+       #elif defined (XERCES_USE_TRANSCODER_ICONV)
+               tc = new IconvTransService;
+       #elif defined (XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER)
+               tc = new MacOSUnicodeConverter();
+       #else
+               #error No Transcoder configured for platform! You must 
configure it.
+       #endif
+       
+       return tc;
+}
 
 
 // ---------------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to