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