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]