knoaman 2004/10/20 08:18:20
Modified: c/src/xercesc/dom/impl DOMImplementationImpl.cpp
DOMImplementationImpl.hpp
DOMImplementationRegistry.cpp DOMNodeImpl.cpp
DOMNormalizer.cpp
c/src/xercesc/framework XMLValidator.cpp
c/src/xercesc/framework/psvi XSValue.cpp XSValue.hpp
c/src/xercesc/internal XMLScanner.cpp
Log:
Allow option of initializing static data in XMLPlatformUtils::Initialize
Revision Changes Path
1.27 +18 -1 xml-xerces/c/src/xercesc/dom/impl/DOMImplementationImpl.cpp
Index: DOMImplementationImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMImplementationImpl.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- DOMImplementationImpl.cpp 8 Sep 2004 13:55:51 -0000 1.26
+++ DOMImplementationImpl.cpp 20 Oct 2004 15:18:20 -0000 1.27
@@ -27,6 +27,7 @@
#include <xercesc/dom/DOMDocumentType.hpp>
#include <xercesc/dom/DOMException.hpp>
#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/util/XMLChar.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
@@ -117,6 +118,14 @@
return sMsgLoader4DOM;
}
+void XMLInitializer::initializeMsgLoader4DOM()
+{
+ sMsgLoader4DOM = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLDOMMsgDomain);
+ if (sMsgLoader4DOM) {
+ msgLoader4DOMCleanup.registerCleanup(reinitMsgLoader4DOM);
+ }
+}
+
// -----------------------------------------------------------------------
// Singleton DOMImplementationImpl
// -----------------------------------------------------------------------
@@ -153,6 +162,14 @@
}
return gDomimp;
+}
+
+void XMLInitializer::initializeDOMImplementationImpl()
+{
+ gDomimp = new DOMImplementationImpl;
+ if (gDomimp) {
+ implementationCleanup.registerCleanup(reinitImplementation);
+ }
}
// ------------------------------------------------------------
1.17 +2 -1 xml-xerces/c/src/xercesc/dom/impl/DOMImplementationImpl.hpp
Index: DOMImplementationImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMImplementationImpl.hpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- DOMImplementationImpl.hpp 8 Sep 2004 13:55:51 -0000 1.16
+++ DOMImplementationImpl.hpp 20 Oct 2004 15:18:20 -0000 1.17
@@ -44,6 +44,7 @@
private:
DOMImplementationImpl(const DOMImplementationImpl &);
DOMImplementationImpl & operator = (const DOMImplementationImpl &);
+ friend class XMLInitializer;
protected:
DOMImplementationImpl() {};
public:
1.8 +17 -1 xml-xerces/c/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
Index: DOMImplementationRegistry.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMImplementationRegistry.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DOMImplementationRegistry.cpp 8 Sep 2004 13:55:51 -0000 1.7
+++ DOMImplementationRegistry.cpp 20 Oct 2004 15:18:20 -0000 1.8
@@ -19,6 +19,7 @@
*/
#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/RefVectorOf.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/dom/DOMImplementationRegistry.hpp>
@@ -95,6 +96,21 @@
}
return *gDOMImplSrcVectorMutex;
+}
+
+void XMLInitializer::initializeDOMImplementationRegistry()
+{
+ // mutex
+ gDOMImplSrcVectorMutex = new XMLMutex;
+ if (gDOMImplSrcVectorMutex) {
+ cleanupDOMImplSrcVectorMutex.registerCleanup(reinitDOMImplSrcVectorMutex);
+ }
+
+ // vector
+ gDOMImplSrcVector = new RefVectorOf<DOMImplementationSource>(3, false);
+ if (gDOMImplSrcVector) {
+ cleanupDOMImplSrcVector.registerCleanup(reinitDOMImplSrcVector);
+ }
}
1.35 +10 -1 xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp
Index: DOMNodeImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- DOMNodeImpl.cpp 8 Sep 2004 13:55:52 -0000 1.34
+++ DOMNodeImpl.cpp 20 Oct 2004 15:18:20 -0000 1.35
@@ -35,6 +35,7 @@
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <stdio.h>
#include <assert.h>
@@ -71,6 +72,14 @@
delete gEmptyNodeListMutex;
gEmptyNodeListMutex = 0;
+}
+
+void XMLInitializer::initializeEmptyNodeList()
+{
+ gEmptyNodeList = new DOMNodeListImpl(0);
+ if (gEmptyNodeList) {
+ emptyNodeListCleanup.registerCleanup(reinitEmptyNodeList);
+ }
}
// -----------------------------------------------------------------------
1.11 +10 -0 xml-xerces/c/src/xercesc/dom/impl/DOMNormalizer.cpp
Index: DOMNormalizer.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNormalizer.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DOMNormalizer.cpp 8 Sep 2004 13:55:52 -0000 1.10
+++ DOMNormalizer.cpp 20 Oct 2004 15:18:20 -0000 1.11
@@ -23,6 +23,7 @@
#include <xercesc/util/Mutexes.hpp>
#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/XMLMsgLoader.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/util/XMLString.hpp>
@@ -114,6 +115,15 @@
return *gMsgLoader;
}
+void XMLInitializer::initializeDOMNormalizerMsgLoader()
+{
+ gMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain);
+
+ // Register this object to be cleaned up at termination
+ if (gMsgLoader) {
+ cleanupMsgLoader.registerCleanup(DOMNormalizer::reinitMsgLoader);
+ }
+}
DOMNormalizer::DOMNormalizer(MemoryManager* const manager)
: fDocument(0)
1.9 +12 -0 xml-xerces/c/src/xercesc/framework/XMLValidator.cpp
Index: XMLValidator.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLValidator.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XMLValidator.cpp 8 Sep 2004 13:55:59 -0000 1.8
+++ XMLValidator.cpp 20 Oct 2004 15:18:20 -0000 1.9
@@ -16,6 +16,9 @@
/**
* $Log$
+ * Revision 1.9 2004/10/20 15:18:20 knoaman
+ * Allow option of initializing static data in XMLPlatformUtils::Initialize
+ *
* Revision 1.8 2004/09/08 13:55:59 peiyongz
* Apache License Version 2.0
*
@@ -100,6 +103,7 @@
#include <xercesc/framework/XMLValidator.hpp>
#include <xercesc/util/Mutexes.hpp>
#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/XMLMsgLoader.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/internal/XMLScanner.hpp>
@@ -159,7 +163,15 @@
return *sMsgLoader;
}
+void XMLInitializer::initializeValidatorMsgLoader()
+{
+ sMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgValidityDomain);
+ // Register this XMLMsgLoader for cleanup at Termination.
+ if (sMsgLoader) {
+ msgLoaderCleanup.registerCleanup(XMLValidator::reinitMsgLoader);
+ }
+}
// ---------------------------------------------------------------------------
// XMLValidator: Error emitting methods
1.15 +80 -60 xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp
Index: XSValue.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- XSValue.cpp 13 Oct 2004 19:23:34 -0000 1.14
+++ XSValue.cpp 20 Oct 2004 15:18:20 -0000 1.15
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.15 2004/10/20 15:18:20 knoaman
+ * Allow option of initializing static data in XMLPlatformUtils::Initialize
+ *
* Revision 1.14 2004/10/13 19:23:34 peiyongz
* using ValueHashTableOf to reduce footprint
*
@@ -81,6 +84,7 @@
#include <xercesc/util/XMLChar.hpp>
#include <xercesc/util/Janitor.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/regx/RegularExpression.hpp>
#include <xercesc/validators/schema/SchemaSymbols.hpp>
@@ -194,11 +198,11 @@
{
if (!sXSValueRegEx)
{
- // Lock the mutex
- XMLMutexLock lockInit(&gXSValueMutex());
+ // Lock the mutex
+ XMLMutexLock lockInit(&gXSValueMutex());
if (!sXSValueRegEx)
- {
+ {
try {
sXSValueRegEx = new (XMLPlatformUtils::fgMemoryManager)
RegularExpression(
@@ -219,9 +223,18 @@
return sXSValueRegEx;
}
-XSValue::DataType XSValue::getDataType(const XMLCh* const dtString)
+void XMLInitializer::initializeXSValueStatics()
{
+ sXSValueRegEx = new RegularExpression(XMLUni::fgLangPattern,
SchemaSymbols::fgRegEx_XOption);
+ if (sXSValueRegEx) {
+ XSValueRegExCleanup.registerCleanup(XSValue::reinitRegEx);
+ }
+ XSValue::initializeRegistry();
+}
+
+XSValue::DataType XSValue::getDataType(const XMLCh* const dtString)
+{
if (!fDataTypeRegistry)
{
// Lock the mutex
@@ -230,66 +243,73 @@
if (!fDataTypeRegistry)
{
try {
- //using the XMLPlatformUtils::fgMemoryManager
- fDataTypeRegistry = new ValueHashTableOf<XSValue::DataType>(47);
-
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_STRING,
XSValue::dt_string);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN,
XSValue::dt_boolean);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL,
XSValue::dt_decimal);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_FLOAT,
XSValue::dt_float);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE,
XSValue::dt_double);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DURATION,
XSValue::dt_duration);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DATETIME,
XSValue::dt_dateTime);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_TIME,
XSValue::dt_time);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DATE,
XSValue::dt_date);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_YEARMONTH,
XSValue::dt_gYearMonth);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_YEAR,
XSValue::dt_gYear);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_MONTHDAY,
XSValue::dt_gMonthDay);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DAY,
XSValue::dt_gDay);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_MONTH,
XSValue::dt_gMonth);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY,
XSValue::dt_hexBinary);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY,
XSValue::dt_base64Binary);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_ANYURI,
XSValue::dt_anyURI);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_QNAME,
XSValue::dt_QName);
- fDataTypeRegistry->put((void*) XMLUni::fgNotationString,
XSValue::dt_NOTATION);
- fDataTypeRegistry->put((void*)
SchemaSymbols::fgDT_NORMALIZEDSTRING, XSValue::dt_normalizedString);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_TOKEN,
XSValue::dt_token);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_LANGUAGE,
XSValue::dt_language);
- fDataTypeRegistry->put((void*) XMLUni::fgNmTokenString,
XSValue::dt_NMTOKEN);
- fDataTypeRegistry->put((void*) XMLUni::fgNmTokensString,
XSValue::dt_NMTOKENS);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NAME,
XSValue::dt_Name);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NCNAME,
XSValue::dt_NCName);
- fDataTypeRegistry->put((void*) XMLUni::fgIDString,
XSValue::dt_ID);
- fDataTypeRegistry->put((void*) XMLUni::fgIDRefString,
XSValue::dt_IDREF);
- fDataTypeRegistry->put((void*) XMLUni::fgIDRefsString,
XSValue::dt_IDREFS);
- fDataTypeRegistry->put((void*) XMLUni::fgEntityString,
XSValue::dt_ENTITY);
- fDataTypeRegistry->put((void*) XMLUni::fgEntitiesString,
XSValue::dt_ENTITIES);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_INTEGER,
XSValue::dt_integer);
- fDataTypeRegistry->put((void*)
SchemaSymbols::fgDT_NONPOSITIVEINTEGER, XSValue::dt_nonPositiveInteger);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NEGATIVEINTEGER,
XSValue::dt_negativeInteger);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_LONG,
XSValue::dt_long);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_INT,
XSValue::dt_int);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_SHORT,
XSValue::dt_short);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BYTE,
XSValue::dt_byte);
- fDataTypeRegistry->put((void*)
SchemaSymbols::fgDT_NONNEGATIVEINTEGER, XSValue::dt_nonNegativeInteger);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_ULONG,
XSValue::dt_unsignedLong);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_UINT,
XSValue::dt_unsignedInt);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_USHORT,
XSValue::dt_unsignedShort);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_UBYTE,
XSValue::dt_unsignedByte);
- fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_POSITIVEINTEGER,
XSValue::dt_positiveInteger);
-
-
+ initializeRegistry();
}
- catch (...)
- {
+ catch (...) {
return dt_MAXCOUNT;
}
-
- XSValueRegistryCleanup.registerCleanup(XSValue::reinitRegistry);
}
}
-
- return fDataTypeRegistry->containsKey(dtString) ?
fDataTypeRegistry->get(dtString) : dt_MAXCOUNT;
+
+ if (fDataTypeRegistry->containsKey(dtString)) {
+ return fDataTypeRegistry->get(dtString);
+ }
+
+ return dt_MAXCOUNT;
+}
+
+void XSValue::initializeRegistry()
+{
+ //using the XMLPlatformUtils::fgMemoryManager
+ fDataTypeRegistry = new ValueHashTableOf<XSValue::DataType>(43);
+
+ if (fDataTypeRegistry) {
+ XSValueRegistryCleanup.registerCleanup(XSValue::reinitRegistry);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_STRING,
XSValue::dt_string);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN,
XSValue::dt_boolean);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL,
XSValue::dt_decimal);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_FLOAT,
XSValue::dt_float);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE,
XSValue::dt_double);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DURATION,
XSValue::dt_duration);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DATETIME,
XSValue::dt_dateTime);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_TIME,
XSValue::dt_time);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DATE,
XSValue::dt_date);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_YEARMONTH,
XSValue::dt_gYearMonth);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_YEAR,
XSValue::dt_gYear);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_MONTHDAY,
XSValue::dt_gMonthDay);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_DAY,
XSValue::dt_gDay);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_MONTH,
XSValue::dt_gMonth);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY,
XSValue::dt_hexBinary);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY,
XSValue::dt_base64Binary);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_ANYURI,
XSValue::dt_anyURI);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_QNAME,
XSValue::dt_QName);
+ fDataTypeRegistry->put((void*) XMLUni::fgNotationString,
XSValue::dt_NOTATION);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NORMALIZEDSTRING,
XSValue::dt_normalizedString);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_TOKEN,
XSValue::dt_token);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_LANGUAGE,
XSValue::dt_language);
+ fDataTypeRegistry->put((void*) XMLUni::fgNmTokenString,
XSValue::dt_NMTOKEN);
+ fDataTypeRegistry->put((void*) XMLUni::fgNmTokensString,
XSValue::dt_NMTOKENS);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NAME,
XSValue::dt_Name);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NCNAME,
XSValue::dt_NCName);
+ fDataTypeRegistry->put((void*) XMLUni::fgIDString,
XSValue::dt_ID);
+ fDataTypeRegistry->put((void*) XMLUni::fgIDRefString,
XSValue::dt_IDREF);
+ fDataTypeRegistry->put((void*) XMLUni::fgIDRefsString,
XSValue::dt_IDREFS);
+ fDataTypeRegistry->put((void*) XMLUni::fgEntityString,
XSValue::dt_ENTITY);
+ fDataTypeRegistry->put((void*) XMLUni::fgEntitiesString,
XSValue::dt_ENTITIES);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_INTEGER,
XSValue::dt_integer);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NONPOSITIVEINTEGER,
XSValue::dt_nonPositiveInteger);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NEGATIVEINTEGER,
XSValue::dt_negativeInteger);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_LONG,
XSValue::dt_long);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_INT,
XSValue::dt_int);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_SHORT,
XSValue::dt_short);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_BYTE,
XSValue::dt_byte);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_NONNEGATIVEINTEGER,
XSValue::dt_nonNegativeInteger);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_ULONG,
XSValue::dt_unsignedLong);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_UINT,
XSValue::dt_unsignedInt);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_USHORT,
XSValue::dt_unsignedShort);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_UBYTE,
XSValue::dt_unsignedByte);
+ fDataTypeRegistry->put((void*) SchemaSymbols::fgDT_POSITIVEINTEGER,
XSValue::dt_positiveInteger);
+ }
}
inline
1.14 +10 -1 xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp
Index: XSValue.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- XSValue.hpp 13 Oct 2004 19:23:34 -0000 1.13
+++ XSValue.hpp 20 Oct 2004 15:18:20 -0000 1.14
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.14 2004/10/20 15:18:20 knoaman
+ * Allow option of initializing static data in XMLPlatformUtils::Initialize
+ *
* Revision 1.13 2004/10/13 19:23:34 peiyongz
* using ValueHashTableOf to reduce footprint
*
@@ -424,6 +427,12 @@
);
static ValueHashTableOf<DataType>* fDataTypeRegistry;
+
+ // -----------------------------------------------------------------------
+ // static helper methods
+ // -----------------------------------------------------------------------
+ static void initializeRegistry();
+ friend class XMLInitializer;
// -----------------------------------------------------------------------
// data members
1.74 +18 -1 xml-xerces/c/src/xercesc/internal/XMLScanner.cpp
Index: XMLScanner.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XMLScanner.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- XMLScanner.cpp 30 Sep 2004 15:20:14 -0000 1.73
+++ XMLScanner.cpp 20 Oct 2004 15:18:20 -0000 1.74
@@ -30,6 +30,7 @@
#include <xercesc/util/UnexpectedEOFException.hpp>
#include <xercesc/util/XMLMsgLoader.hpp>
#include <xercesc/util/XMLRegisterCleanup.hpp>
+#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/framework/URLInputSource.hpp>
#include <xercesc/framework/XMLDocumentHandler.hpp>
@@ -115,6 +116,22 @@
}
return *gMsgLoader;
+}
+
+void XMLInitializer::initializeScannerMsgLoader()
+{
+ gMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain);
+
+ // Register this object to be cleaned up at termination
+ if (gMsgLoader) {
+ cleanupMsgLoader.registerCleanup(XMLScanner::reinitMsgLoader);
+ }
+
+ sScannerMutex = new XMLMutex;
+ if (sScannerMutex) {
+ scannerMutexCleanup.registerCleanup(XMLScanner::reinitScannerMutex);
+ sRegistered = true;
+ }
}
// ---------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]