You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2004/11/13 00:24:58 UTC
cvs commit: xml-xerces/c/src/xercesc/util/regx ASCIIRangeFactory.cpp ASCIIRangeFactory.hpp BlockRangeFactory.cpp BlockRangeFactory.hpp RangeFactory.hpp RangeTokenMap.cpp UnicodeRangeFactory.cpp UnicodeRangeFactory.hpp XMLRangeFactory.cpp XMLRangeFactory.hpp
knoaman 2004/11/12 15:24:58
Modified: c/src/xercesc/util/regx ASCIIRangeFactory.cpp
ASCIIRangeFactory.hpp BlockRangeFactory.cpp
BlockRangeFactory.hpp RangeFactory.hpp
RangeTokenMap.cpp UnicodeRangeFactory.cpp
UnicodeRangeFactory.hpp XMLRangeFactory.cpp
XMLRangeFactory.hpp
Log:
Fix multi threading problem.
Revision Changes Path
1.6 +6 -6 xml-xerces/c/src/xercesc/util/regx/ASCIIRangeFactory.cpp
Index: ASCIIRangeFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/ASCIIRangeFactory.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ASCIIRangeFactory.cpp 20 Oct 2004 15:18:49 -0000 1.5
+++ ASCIIRangeFactory.cpp 12 Nov 2004 23:24:58 -0000 1.6
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.6 2004/11/12 23:24:58 knoaman
+ * Fix multi threading problem.
+ *
* Revision 1.5 2004/10/20 15:18:49 knoaman
* Allow option of initializing static data in XMLPlatformUtils::Initialize
*
@@ -79,16 +82,15 @@
// ---------------------------------------------------------------------------
// ASCIIRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void ASCIIRangeFactory::buildRanges() {
+void ASCIIRangeFactory::buildRanges(RangeTokenMap *rangeTokMap) {
if (fRangesCreated)
return;
if (!fKeywordsInitialized) {
- initializeKeywordMap();
+ initializeKeywordMap(rangeTokMap);
}
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
TokenFactory* tokFactory = rangeTokMap->getTokenFactory();
// Create space ranges
@@ -146,12 +148,10 @@
// ---------------------------------------------------------------------------
// ASCIIRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void ASCIIRangeFactory::initializeKeywordMap() {
+void ASCIIRangeFactory::initializeKeywordMap(RangeTokenMap *rangeTokMap) {
if (fKeywordsInitialized)
return;
-
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
rangeTokMap->addKeywordMap(fgASCIISpace, fgASCIICategory);
rangeTokMap->addKeywordMap(fgASCIIDigit, fgASCIICategory);
1.7 +3 -3 xml-xerces/c/src/xercesc/util/regx/ASCIIRangeFactory.hpp
Index: ASCIIRangeFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/ASCIIRangeFactory.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ASCIIRangeFactory.hpp 20 Oct 2004 15:18:49 -0000 1.6
+++ ASCIIRangeFactory.hpp 12 Nov 2004 23:24:58 -0000 1.7
@@ -40,13 +40,13 @@
// -----------------------------------------------------------------------
// Initialization methods
// -----------------------------------------------------------------------
- void initializeKeywordMap();
+ void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0);
protected:
// -----------------------------------------------------------------------
// Private Helper methods
// -----------------------------------------------------------------------
- void buildRanges();
+ void buildRanges(RangeTokenMap *rangeTokMap = 0);
private:
// -----------------------------------------------------------------------
1.8 +6 -6 xml-xerces/c/src/xercesc/util/regx/BlockRangeFactory.cpp
Index: BlockRangeFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/BlockRangeFactory.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BlockRangeFactory.cpp 20 Oct 2004 15:18:49 -0000 1.7
+++ BlockRangeFactory.cpp 12 Nov 2004 23:24:58 -0000 1.8
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.8 2004/11/12 23:24:58 knoaman
+ * Fix multi threading problem.
+ *
* Revision 1.7 2004/10/20 15:18:49 knoaman
* Allow option of initializing static data in XMLPlatformUtils::Initialize
*
@@ -355,16 +358,15 @@
// ---------------------------------------------------------------------------
// BlockRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void BlockRangeFactory::buildRanges() {
+void BlockRangeFactory::buildRanges(RangeTokenMap *rangeTokMap) {
if (fRangesCreated)
return;
if (!fKeywordsInitialized) {
- initializeKeywordMap();
+ initializeKeywordMap(rangeTokMap);
}
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
TokenFactory* tokFactory = rangeTokMap->getTokenFactory();
//for performance, once the desired specials and private use are found
@@ -396,12 +398,10 @@
// ---------------------------------------------------------------------------
// BlockRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void BlockRangeFactory::initializeKeywordMap() {
+void BlockRangeFactory::initializeKeywordMap(RangeTokenMap *rangeTokMap) {
if (fKeywordsInitialized)
return;
-
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
for (int i=0; i< BLOCKNAMESIZE; i++) {
rangeTokMap->addKeywordMap(fgBlockNames[i], fgBlockCategory);
1.7 +3 -3 xml-xerces/c/src/xercesc/util/regx/BlockRangeFactory.hpp
Index: BlockRangeFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/BlockRangeFactory.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BlockRangeFactory.hpp 20 Oct 2004 15:18:49 -0000 1.6
+++ BlockRangeFactory.hpp 12 Nov 2004 23:24:58 -0000 1.7
@@ -40,13 +40,13 @@
// -----------------------------------------------------------------------
// Initialization methods
// -----------------------------------------------------------------------
- void initializeKeywordMap();
+ void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0);
protected:
// -----------------------------------------------------------------------
// Private Helper methods
// -----------------------------------------------------------------------
- void buildRanges();
+ void buildRanges(RangeTokenMap *rangeTokMap = 0);
private:
// -----------------------------------------------------------------------
1.7 +14 -3 xml-xerces/c/src/xercesc/util/regx/RangeFactory.hpp
Index: RangeFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/RangeFactory.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- RangeFactory.hpp 20 Oct 2004 15:18:49 -0000 1.6
+++ RangeFactory.hpp 12 Nov 2004 23:24:58 -0000 1.7
@@ -28,6 +28,11 @@
XERCES_CPP_NAMESPACE_BEGIN
+// ---------------------------------------------------------------------------
+// Forward Declaration
+// ---------------------------------------------------------------------------
+class RangeTokenMap;
+
class XMLUTIL_EXPORT RangeFactory : public XMemory
{
public:
@@ -39,12 +44,18 @@
//-----------------------------------------------------------------------
// Initialization methods
// -----------------------------------------------------------------------
- virtual void initializeKeywordMap() = 0;
+ /**
+ * To maintain src code compatibility, we added a default parameter.
+ * The caller is expected to pass in a valid RangeTokenMap instance.
+ */
+ virtual void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0) = 0;
/*
* Used by children to build commonly used ranges
+ * To maintain src code compatibility, we added a default parameter.
+ * The caller is expected to pass in a valid RangeTokenMap instance.
*/
- virtual void buildRanges() = 0;
+ virtual void buildRanges(RangeTokenMap *rangeTokMap = 0) = 0;
protected:
// -----------------------------------------------------------------------
1.13 +13 -11 xml-xerces/c/src/xercesc/util/regx/RangeTokenMap.cpp
Index: RangeTokenMap.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/RangeTokenMap.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- RangeTokenMap.cpp 20 Oct 2004 15:18:49 -0000 1.12
+++ RangeTokenMap.cpp 12 Nov 2004 23:24:58 -0000 1.13
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.13 2004/11/12 23:24:58 knoaman
+ * Fix multi threading problem.
+ *
* Revision 1.12 2004/10/20 15:18:49 knoaman
* Allow option of initializing static data in XMLPlatformUtils::Initialize
*
@@ -143,7 +146,6 @@
if (RangeTokenMap::fInstance)
{
rangeTokMapInstanceCleanup.registerCleanup(RangeTokenMap::reinitInstance);
- RangeTokenMap::fInstance->initializeRegistry();
RangeTokenMap::fInstance->buildTokenRanges();
}
}
@@ -179,6 +181,7 @@
fRangeMap = new RefHashTableOf<RangeFactory>(29);
fCategories = new XMLStringPool(109);
fTokenFactory = new TokenFactory();
+ initializeRegistry();
}
catch(...) {
cleanUp();
@@ -228,7 +231,7 @@
if (rangeFactory)
{
- rangeFactory->buildRanges();
+ rangeFactory->buildRanges(this);
rangeTok = elemMap->getRangeToken(complement);
// see if we are complementing an existing range
@@ -314,38 +317,38 @@
// Add xml range factory
RangeFactory* rangeFact = new XMLRangeFactory();
fRangeMap->put((void*)fgXMLCategory, rangeFact);
- rangeFact->initializeKeywordMap();
+ rangeFact->initializeKeywordMap(this);
// Add ascii range factory
rangeFact = new ASCIIRangeFactory();
fRangeMap->put((void*)fgASCIICategory, rangeFact);
- rangeFact->initializeKeywordMap();
+ rangeFact->initializeKeywordMap(this);
// Add unicode range factory
rangeFact = new UnicodeRangeFactory();
fRangeMap->put((void*)fgUnicodeCategory, rangeFact);
- rangeFact->initializeKeywordMap();
+ rangeFact->initializeKeywordMap(this);
// Add block range factory
rangeFact = new BlockRangeFactory();
fRangeMap->put((void*)fgBlockCategory, rangeFact);
- rangeFact->initializeKeywordMap();
+ rangeFact->initializeKeywordMap(this);
}
void RangeTokenMap::buildTokenRanges()
{
// Build ranges */
RangeFactory* rangeFactory = fRangeMap->get(fgXMLCategory);
- rangeFactory->buildRanges();
+ rangeFactory->buildRanges(this);
rangeFactory = fRangeMap->get(fgASCIICategory);
- rangeFactory->buildRanges();
+ rangeFactory->buildRanges(this);
rangeFactory = fRangeMap->get(fgUnicodeCategory);
- rangeFactory->buildRanges();
+ rangeFactory->buildRanges(this);
rangeFactory = fRangeMap->get(fgBlockCategory);
- rangeFactory->buildRanges();
+ rangeFactory->buildRanges(this);
}
// ---------------------------------------------------------------------------
@@ -361,7 +364,6 @@
{
fInstance = new RangeTokenMap();
rangeTokMapInstanceCleanup.registerCleanup(RangeTokenMap::reinitInstance);
- fInstance->initializeRegistry();
}
}
1.7 +6 -6 xml-xerces/c/src/xercesc/util/regx/UnicodeRangeFactory.cpp
Index: UnicodeRangeFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/UnicodeRangeFactory.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- UnicodeRangeFactory.cpp 20 Oct 2004 15:18:49 -0000 1.6
+++ UnicodeRangeFactory.cpp 12 Nov 2004 23:24:58 -0000 1.7
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.7 2004/11/12 23:24:58 knoaman
+ * Fix multi threading problem.
+ *
* Revision 1.6 2004/10/20 15:18:49 knoaman
* Allow option of initializing static data in XMLPlatformUtils::Initialize
*
@@ -139,16 +142,15 @@
// ---------------------------------------------------------------------------
// UnicodeRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void UnicodeRangeFactory::buildRanges() {
+void UnicodeRangeFactory::buildRanges(RangeTokenMap *rangeTokMap) {
if (fRangesCreated)
return;
if (!fKeywordsInitialized) {
- initializeKeywordMap();
+ initializeKeywordMap(rangeTokMap);
}
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
TokenFactory* tokFactory = rangeTokMap->getTokenFactory();
RangeToken* ranges[UNICATEGSIZE];
RangeToken* tok;
@@ -222,12 +224,10 @@
// ---------------------------------------------------------------------------
// UnicodeRangeFactory: Initialization methods
// ---------------------------------------------------------------------------
-void UnicodeRangeFactory::initializeKeywordMap() {
+void UnicodeRangeFactory::initializeKeywordMap(RangeTokenMap *rangeTokMap) {
if (fKeywordsInitialized)
return;
-
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
for (int k=0; k < UNICATEGSIZE; k++) {
rangeTokMap->addKeywordMap(uniCategNames[k], fgUnicodeCategory);
1.7 +3 -3 xml-xerces/c/src/xercesc/util/regx/UnicodeRangeFactory.hpp
Index: UnicodeRangeFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/UnicodeRangeFactory.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- UnicodeRangeFactory.hpp 20 Oct 2004 15:18:49 -0000 1.6
+++ UnicodeRangeFactory.hpp 12 Nov 2004 23:24:58 -0000 1.7
@@ -40,13 +40,13 @@
// -----------------------------------------------------------------------
// Initialization methods
// -----------------------------------------------------------------------
- void initializeKeywordMap();
+ void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0);
protected:
// -----------------------------------------------------------------------
// Private Helper methods
// -----------------------------------------------------------------------
- void buildRanges();
+ void buildRanges(RangeTokenMap *rangeTokMap = 0);
private:
// -----------------------------------------------------------------------
1.8 +6 -6 xml-xerces/c/src/xercesc/util/regx/XMLRangeFactory.cpp
Index: XMLRangeFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/XMLRangeFactory.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XMLRangeFactory.cpp 20 Oct 2004 15:18:49 -0000 1.7
+++ XMLRangeFactory.cpp 12 Nov 2004 23:24:58 -0000 1.8
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.8 2004/11/12 23:24:58 knoaman
+ * Fix multi threading problem.
+ *
* Revision 1.7 2004/10/20 15:18:49 knoaman
* Allow option of initializing static data in XMLPlatformUtils::Initialize
*
@@ -126,16 +129,15 @@
// ---------------------------------------------------------------------------
// XMLRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void XMLRangeFactory::buildRanges() {
+void XMLRangeFactory::buildRanges(RangeTokenMap *rangeTokMap) {
if (fRangesCreated)
return;
if (!fKeywordsInitialized) {
- initializeKeywordMap();
+ initializeKeywordMap(rangeTokMap);
}
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
TokenFactory* tokFactory = rangeTokMap->getTokenFactory();
// Create space ranges
@@ -249,12 +251,10 @@
// ---------------------------------------------------------------------------
// XMLRangeFactory: Range creation methods
// ---------------------------------------------------------------------------
-void XMLRangeFactory::initializeKeywordMap() {
+void XMLRangeFactory::initializeKeywordMap(RangeTokenMap *rangeTokMap) {
if (fKeywordsInitialized)
return;
-
- RangeTokenMap* rangeTokMap = RangeTokenMap::instance();
rangeTokMap->addKeywordMap(fgXMLSpace, fgXMLCategory);
rangeTokMap->addKeywordMap(fgXMLDigit, fgXMLCategory);
1.8 +3 -3 xml-xerces/c/src/xercesc/util/regx/XMLRangeFactory.hpp
Index: XMLRangeFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/XMLRangeFactory.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XMLRangeFactory.hpp 20 Oct 2004 15:18:49 -0000 1.7
+++ XMLRangeFactory.hpp 12 Nov 2004 23:24:58 -0000 1.8
@@ -40,13 +40,13 @@
// -----------------------------------------------------------------------
// Initialization methods
// -----------------------------------------------------------------------
- void initializeKeywordMap();
+ void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0);
protected:
// -----------------------------------------------------------------------
// Protected Helper methods
// -----------------------------------------------------------------------
- void buildRanges();
+ void buildRanges(RangeTokenMap *rangeTokMap = 0);
private:
// -----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org