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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to