knoaman 2004/10/20 08:18:36 Modified: c/src/xercesc/util EncodingValidator.cpp EncodingValidator.hpp Makefile.in PanicHandler.hpp PlatformUtils.cpp PlatformUtils.hpp XMLException.cpp Added: c/src/xercesc/util XMLInitializer.cpp XMLInitializer.hpp Log: Allow option of initializing static data in XMLPlatformUtils::Initialize Revision Changes Path 1.8 +12 -0 xml-xerces/c/src/xercesc/util/EncodingValidator.cpp Index: EncodingValidator.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/EncodingValidator.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- EncodingValidator.cpp 8 Sep 2004 13:56:21 -0000 1.7 +++ EncodingValidator.cpp 20 Oct 2004 15:18:35 -0000 1.8 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.8 2004/10/20 15:18:35 knoaman + * Allow option of initializing static data in XMLPlatformUtils::Initialize + * * Revision 1.7 2004/09/08 13:56:21 peiyongz * Apache License Version 2.0 * @@ -46,6 +49,7 @@ #include <xercesc/internal/IANAEncodings.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <xercesc/util/XMLRegisterCleanup.hpp> +#include <xercesc/util/XMLInitializer.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -79,6 +83,14 @@ } } return *sEncValMutex; +} + +void XMLInitializer::initializeEncodingValidator() +{ + EncodingValidator::fInstance = new EncodingValidator(); + if (EncodingValidator::fInstance) { + instanceCleanup.registerCleanup(EncodingValidator::reinitInstance); + } } // --------------------------------------------------------------------------- 1.5 +2 -1 xml-xerces/c/src/xercesc/util/EncodingValidator.hpp Index: EncodingValidator.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/EncodingValidator.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- EncodingValidator.hpp 8 Sep 2004 13:56:21 -0000 1.4 +++ EncodingValidator.hpp 20 Oct 2004 15:18:35 -0000 1.5 @@ -77,6 +77,7 @@ // ----------------------------------------------------------------------- ValueHashTableOf<bool>* fEncodingRegistry; static EncodingValidator* fInstance; + friend class XMLInitializer; }; XERCES_CPP_NAMESPACE_END 1.45 +5 -0 xml-xerces/c/src/xercesc/util/Makefile.in Index: Makefile.in =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Makefile.in,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- Makefile.in 8 Sep 2004 13:56:22 -0000 1.44 +++ Makefile.in 20 Oct 2004 15:18:35 -0000 1.45 @@ -16,6 +16,9 @@ # # # $Log$ +# Revision 1.45 2004/10/20 15:18:35 knoaman +# Allow option of initializing static data in XMLPlatformUtils::Initialize +# # Revision 1.44 2004/09/08 13:56:22 peiyongz # Apache License Version 2.0 # @@ -532,6 +535,7 @@ XMLFloat.hpp \ XMLIBM1047Transcoder.hpp \ XMLIBM1140Transcoder.hpp \ + XMLInitializer.hpp \ XMLInteger.hpp \ XMLMsgLoader.hpp \ XMLNetAccessor.hpp \ @@ -610,6 +614,7 @@ XMLFloat.$(TO) \ XMLIBM1047Transcoder.$(TO) \ XMLIBM1140Transcoder.$(TO) \ + XMLInitializer.$(TO) \ XMLMsgLoader.$(TO) \ XMLNumber.$(TO) \ XMLRegisterCleanup.$(TO) \ 1.8 +5 -1 xml-xerces/c/src/xercesc/util/PanicHandler.hpp Index: PanicHandler.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/PanicHandler.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- PanicHandler.hpp 8 Sep 2004 13:56:22 -0000 1.7 +++ PanicHandler.hpp 20 Oct 2004 15:18:35 -0000 1.8 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.8 2004/10/20 15:18:35 knoaman + * Allow option of initializing static data in XMLPlatformUtils::Initialize + * * Revision 1.7 2004/09/08 13:56:22 peiyongz * Apache License Version 2.0 * @@ -85,6 +88,7 @@ , Panic_CantLoadMsgDomain , Panic_SynchronizationErr , Panic_SystemInit + , Panic_AllStaticInitErr , PanicReasons_Count }; 1.19 +9 -1 xml-xerces/c/src/xercesc/util/PlatformUtils.cpp Index: PlatformUtils.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/PlatformUtils.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- PlatformUtils.cpp 8 Sep 2004 13:56:22 -0000 1.18 +++ PlatformUtils.cpp 20 Oct 2004 15:18:35 -0000 1.19 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.19 2004/10/20 15:18:35 knoaman + * Allow option of initializing static data in XMLPlatformUtils::Initialize + * * Revision 1.18 2004/09/08 13:56:22 peiyongz * Apache License Version 2.0 * @@ -152,6 +155,7 @@ #include <xercesc/util/RuntimeException.hpp> #include <xercesc/util/XMLRegisterCleanup.hpp> #include <xercesc/util/DefaultPanicHandler.hpp> +#include <xercesc/util/XMLInitializer.hpp> #include <xercesc/internal/MemoryManagerImpl.hpp> #include <xercesc/internal/MemoryManagerArrayImpl.hpp> @@ -204,7 +208,8 @@ void XMLPlatformUtils::Initialize(const char* const locale , const char* const nlsHome , PanicHandler* const panicHandler - , MemoryManager* const memoryManager) + , MemoryManager* const memoryManager + , bool toInitStatics) { // // Effects of overflow: @@ -316,6 +321,9 @@ XMLMsgLoader::setLocale(locale); XMLMsgLoader::setNLSHome(nlsHome); + if (toInitStatics) { + XMLInitializer::InitializeAllStaticData(); + } } 1.28 +3 -2 xml-xerces/c/src/xercesc/util/PlatformUtils.hpp Index: PlatformUtils.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/PlatformUtils.hpp,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- PlatformUtils.hpp 8 Sep 2004 13:56:22 -0000 1.27 +++ PlatformUtils.hpp 20 Oct 2004 15:18:35 -0000 1.28 @@ -164,7 +164,8 @@ static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale , const char* const nlsHome = 0 , PanicHandler* const panicHandler = 0 - , MemoryManager* const memoryManager = 0); + , MemoryManager* const memoryManager = 0 + , bool toInitStatics = false); /** Perform per-process parser termination * 1.16 +10 -1 xml-xerces/c/src/xercesc/util/XMLException.cpp Index: XMLException.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLException.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- XMLException.cpp 8 Sep 2004 13:56:24 -0000 1.15 +++ XMLException.cpp 20 Oct 2004 15:18:35 -0000 1.16 @@ -29,6 +29,7 @@ #include <xercesc/util/XMLRegisterCleanup.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/util/XMLUniDefs.hpp> +#include <xercesc/util/XMLInitializer.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -94,6 +95,14 @@ // We got it, so return it return *sMsgLoader; +} + +void XMLInitializer::initializeExceptionMsgLoader() +{ + sMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgExceptDomain); + if (sMsgLoader) { + msgLoaderCleanup.registerCleanup(XMLException::reinitMsgLoader); + } } // --------------------------------------------------------------------------- 1.1 xml-xerces/c/src/xercesc/util/XMLInitializer.cpp Index: XMLInitializer.cpp =================================================================== /* * Copyright 2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Log: XMLInitializer.cpp,v $ * Revision 1.1 2004/10/20 15:18:35 knoaman * Allow option of initializing static data in XMLPlatformUtils::Initialize * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include <xercesc/util/XMLInitializer.hpp> #include <xercesc/util/PlatformUtils.hpp> XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLInitializer: Initialization methods // --------------------------------------------------------------------------- void XMLInitializer::InitializeAllStaticData() { try { initializeMsgLoader4DOM(); initializeDOMImplementationImpl(); initializeDOMImplementationRegistry(); initializeEmptyNodeList(); initializeDOMNormalizerMsgLoader(); initializeValidatorMsgLoader(); initializeXSValueStatics(); initializeScannerMsgLoader(); initializeEncodingValidator(); initializeExceptionMsgLoader(); initializeDVFactory(); initializeGeneralAttrCheckMap(); initializeXSDErrReporterMsgLoader(); initializeDTDGrammarDfltEntities(); initializeRangeTokenMap(); initializeAnyType(); } catch(...) { XMLPlatformUtils::panic(PanicHandler::Panic_AllStaticInitErr); } } XERCES_CPP_NAMESPACE_END 1.1 xml-xerces/c/src/xercesc/util/XMLInitializer.hpp Index: XMLInitializer.hpp =================================================================== /* * Copyright 2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLInitializer.hpp,v 1.1 2004/10/20 15:18:35 knoaman Exp $ */ #if !defined(XMLINITIALIZER_HPP) #define XMLINITIALIZER_HPP #include <xercesc/util/XercesDefs.hpp> XERCES_CPP_NAMESPACE_BEGIN /** * Utilities that must be implemented in a class-specific way. * * This class contains methods that must be implemented by different * classes that have static data (class or local) that they need * to initialize when XMLPlatformUtils::Initialize is invoked. */ class XMLUTIL_EXPORT XMLInitializer { protected : /** @name Initialization methods */ //@{ /** Perform per-class initialization of static data * * Initialization <b>must</b> be called in XMLPlatformUtils::Initialize. */ static void InitializeAllStaticData(); //@} friend class XMLPlatformUtils; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLInitializer(); XMLInitializer(const XMLInitializer& toCopy); XMLInitializer& operator=(const XMLInitializer&); /** @name Private static initialization methods */ //@{ static void initializeMsgLoader4DOM(); static void initializeDOMImplementationImpl(); static void initializeDOMImplementationRegistry(); static void initializeEmptyNodeList(); static void initializeDOMNormalizerMsgLoader(); static void initializeValidatorMsgLoader(); static void initializeXSValueStatics(); static void initializeScannerMsgLoader(); static void initializeEncodingValidator(); static void initializeExceptionMsgLoader(); static void initializeDVFactory(); static void initializeGeneralAttrCheckMap(); static void initializeXSDErrReporterMsgLoader(); static void initializeDTDGrammarDfltEntities(); static void initializeRangeTokenMap(); static void initializeAnyType(); //@} }; XERCES_CPP_NAMESPACE_END #endif
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]