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 2003/05/15 20:54:53 UTC

cvs commit: xml-xerces/c/src/xercesc/validators/DTD DTDAttDef.cpp DTDAttDef.hpp DTDElementDecl.cpp DTDElementDecl.hpp DTDGrammar.cpp DTDGrammar.hpp DTDScanner.cpp DTDScanner.hpp

knoaman     2003/05/15 11:54:53

  Modified:    c/src/xercesc/validators/DTD DTDAttDef.cpp DTDAttDef.hpp
                        DTDElementDecl.cpp DTDElementDecl.hpp
                        DTDGrammar.cpp DTDGrammar.hpp DTDScanner.cpp
                        DTDScanner.hpp
  Log:
  Partial implementation of the configurable memory manager.
  
  Revision  Changes    Path
  1.3       +8 -5      xml-xerces/c/src/xercesc/validators/DTD/DTDAttDef.cpp
  
  Index: DTDAttDef.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDAttDef.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DTDAttDef.cpp	4 Nov 2002 14:50:40 -0000	1.2
  +++ DTDAttDef.cpp	15 May 2003 18:54:50 -0000	1.3
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.3  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.2  2002/11/04 14:50:40  tng
    * C++ Namespace Support.
    *
  @@ -104,7 +107,7 @@
       , fElemId(XMLElementDecl::fgInvalidElemId)
       , fName(0)
   {
  -    fName = XMLString::replicate(attName);
  +    fName = XMLString::replicate(attName, getMemoryManager());
   }
   
   DTDAttDef::DTDAttDef(   const   XMLCh* const            attName
  @@ -117,12 +120,12 @@
       , fElemId(XMLElementDecl::fgInvalidElemId)
       , fName(0)
   {
  -    fName = XMLString::replicate(attName);
  +    fName = XMLString::replicate(attName, getMemoryManager());
   }
   
   DTDAttDef::~DTDAttDef()
   {
  -    delete [] fName;
  +    getMemoryManager()->deallocate(fName); //delete [] fName;
   }
   
   
  @@ -131,8 +134,8 @@
   // ---------------------------------------------------------------------------
   void DTDAttDef::setName(const XMLCh* const newName)
   {
  -    delete [] fName;
  -    fName = XMLString::replicate(newName);
  +    getMemoryManager()->deallocate(fName); //delete [] fName;
  +    fName = XMLString::replicate(newName, getMemoryManager());
   }
   
   XERCES_CPP_NAMESPACE_END
  
  
  
  1.4       +3 -1      xml-xerces/c/src/xercesc/validators/DTD/DTDAttDef.hpp
  
  Index: DTDAttDef.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDAttDef.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DTDAttDef.hpp	29 Jan 2003 19:46:40 -0000	1.3
  +++ DTDAttDef.hpp	15 May 2003 18:54:50 -0000	1.4
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.4  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.3  2003/01/29 19:46:40  gareth
    * added DOMTypeInfo API
    *
  @@ -82,7 +85,6 @@
   #if !defined(DTDATTDEF_HPP)
   #define DTDATTDEF_HPP
   
  -#include <xercesc/util/XMLString.hpp>
   #include <xercesc/framework/XMLAttDef.hpp>
   
   XERCES_CPP_NAMESPACE_BEGIN
  
  
  
  1.3       +32 -23    xml-xerces/c/src/xercesc/validators/DTD/DTDElementDecl.cpp
  
  Index: DTDElementDecl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDElementDecl.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DTDElementDecl.cpp	4 Nov 2002 14:50:40 -0000	1.2
  +++ DTDElementDecl.cpp	15 May 2003 18:54:50 -0000	1.3
  @@ -78,9 +78,10 @@
   // ---------------------------------------------------------------------------
   //  DTDElementDecl: Constructors and Destructor
   // ---------------------------------------------------------------------------
  -DTDElementDecl::DTDElementDecl() :
  +DTDElementDecl::DTDElementDecl(MemoryManager* const manager) :
   
  -    fAttDefs(0)
  +    XMLElementDecl(manager)
  +    , fAttDefs(0)
       , fAttList(0)
       , fContentSpec(0)
       , fModelType(Any)
  @@ -89,10 +90,12 @@
   {
   }
   
  -DTDElementDecl::DTDElementDecl( const   XMLCh* const              elemRawName
  -                              , const   unsigned int              uriId
  -                              , const DTDElementDecl::ModelTypes  type) :
  -    fAttDefs(0)
  +DTDElementDecl::DTDElementDecl( const XMLCh* const               elemRawName
  +                              , const unsigned int               uriId
  +                              , const DTDElementDecl::ModelTypes type
  +                              , MemoryManager* const             manager) :
  +    XMLElementDecl(manager)
  +    , fAttDefs(0)
       , fAttList(0)
       , fContentSpec(0)
       , fModelType(type)
  @@ -102,9 +105,11 @@
       setElementName(elemRawName, uriId);
   }
   
  -DTDElementDecl::DTDElementDecl( QName* const                elementName
  -                              , const DTDElementDecl::ModelTypes  type) :
  -    fAttDefs(0)
  +DTDElementDecl::DTDElementDecl( QName* const                     elementName
  +                              , const DTDElementDecl::ModelTypes type
  +                              , MemoryManager* const             manager) :
  +    XMLElementDecl(manager)
  +    , fAttDefs(0)
       , fAttList(0)
       , fContentSpec(0)
       , fModelType(type)
  @@ -120,7 +125,7 @@
       delete fAttList;
       delete fContentSpec;
       delete fContentModel;
  -    delete [] fFormattedModel;
  +    getMemoryManager()->deallocate(fFormattedModel);//delete [] fFormattedModel;
   }
   
   
  @@ -149,7 +154,7 @@
               faultInAttDefList();
   
           // And add a default attribute for this name
  -        retVal = new DTDAttDef(qName);
  +        retVal = new (getMemoryManager()) DTDAttDef(qName);
           retVal->setElemId(getId());
           fAttDefs->put((void*)retVal->getFullName(), retVal);
   
  @@ -295,17 +300,16 @@
   // ---------------------------------------------------------------------------
   //  DTDElementDecl: Private helper methods
   // ---------------------------------------------------------------------------
  -XMLCh*
  -DTDElementDecl::formatContentModel() const
  +XMLCh* DTDElementDecl::formatContentModel() const
   {
       XMLCh* newValue = 0;
       if (fModelType == Any)
       {
  -        newValue = XMLString::replicate(XMLUni::fgAnyString);
  +        newValue = XMLString::replicate(XMLUni::fgAnyString, getMemoryManager());
       }
        else if (fModelType == Empty)
       {
  -        newValue = XMLString::replicate(XMLUni::fgEmptyString);
  +        newValue = XMLString::replicate(XMLUni::fgEmptyString, getMemoryManager());
       }
        else
       {
  @@ -316,7 +320,7 @@
           //
           XMLBuffer bufFmt;
           getContentSpec()->formatSpec(bufFmt);
  -        newValue = XMLString::replicate(bufFmt.getRawBuffer());
  +        newValue = XMLString::replicate(bufFmt.getRawBuffer(), getMemoryManager());
       }
       return newValue;
   }
  @@ -330,7 +334,7 @@
           //  Just create a mixel content model object. This type of
           //  content model is optimized for mixed content validation.
           //
  -        cmRet = new MixedContentModel(true, this->getContentSpec());
  +        cmRet = new (getMemoryManager()) MixedContentModel(true, this->getContentSpec());
       }
        else if (fModelType == Children)
       {
  @@ -375,7 +379,7 @@
       if (specNode->getType() == ContentSpecNode::Leaf)
       {
           // Create a simple content model
  -        return new SimpleContentModel
  +        return new (getMemoryManager()) SimpleContentModel
           (
               true
               , specNode->getElement()
  @@ -393,7 +397,7 @@
           if ((specNode->getFirst()->getType() == ContentSpecNode::Leaf)
           &&  (specNode->getSecond()->getType() == ContentSpecNode::Leaf))
           {
  -            return new SimpleContentModel
  +            return new (getMemoryManager()) SimpleContentModel
               (
                   true
                   , specNode->getFirst()->getElement()
  @@ -413,7 +417,7 @@
           //
           if (specNode->getFirst()->getType() == ContentSpecNode::Leaf)
           {
  -            return new SimpleContentModel
  +            return new (getMemoryManager()) SimpleContentModel
               (
                   true
                   , specNode->getFirst()->getElement()
  @@ -428,14 +432,19 @@
       }
   
       // Its not any simple type of content, so create a DFA based content model
  -    return new DFAContentModel(true, this->getContentSpec());
  +    return new (getMemoryManager()) DFAContentModel
  +    (
  +        true
  +        , this->getContentSpec()
  +        , getMemoryManager()
  +    );
   }
   
   
   void DTDElementDecl::faultInAttDefList() const
   {
       // Use a hash modulus of 29 and tell it owns its elements
  -    ((DTDElementDecl*)this)->fAttDefs = new RefHashTableOf<DTDAttDef>(29, true);
  +    ((DTDElementDecl*)this)->fAttDefs = new (getMemoryManager()) RefHashTableOf<DTDAttDef>(29, true);
   }
   
   XERCES_CPP_NAMESPACE_END
  
  
  
  1.4       +11 -8     xml-xerces/c/src/xercesc/validators/DTD/DTDElementDecl.hpp
  
  Index: DTDElementDecl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDElementDecl.hpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DTDElementDecl.hpp	29 Jan 2003 19:46:40 -0000	1.3
  +++ DTDElementDecl.hpp	15 May 2003 18:54:50 -0000	1.4
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.4  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.3  2003/01/29 19:46:40  gareth
    * added DOMTypeInfo API
    *
  @@ -154,19 +157,19 @@
       // -----------------------------------------------------------------------
       //  Constructors and Destructor
       // -----------------------------------------------------------------------
  -    DTDElementDecl();
  -
  +    DTDElementDecl(MemoryManager* const manager);
       DTDElementDecl
       (
  -        const XMLCh* const    elemRawName
  -      , const unsigned int    uriId
  -      , const ModelTypes      modelType = Any
  +          const XMLCh* const   elemRawName
  +        , const unsigned int   uriId
  +        , const ModelTypes     modelType// = Any
  +        , MemoryManager* const manager
       );
  -
       DTDElementDecl
       (
  -        QName* const    elementName
  -      , const ModelTypes      modelType = Any
  +          QName* const         elementName
  +        , const ModelTypes     modelType// = Any
  +        , MemoryManager* const manager
       );
   
       ~DTDElementDecl();
  
  
  
  1.5       +24 -8     xml-xerces/c/src/xercesc/validators/DTD/DTDGrammar.cpp
  
  Index: DTDGrammar.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDGrammar.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DTDGrammar.cpp	4 Dec 2002 02:47:25 -0000	1.4
  +++ DTDGrammar.cpp	15 May 2003 18:54:50 -0000	1.5
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.5  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.4  2002/12/04 02:47:25  knoaman
    * scanner re-organization.
    *
  @@ -95,8 +98,9 @@
   //---------------------------------------------------------------------------
   //  DTDGrammar: Constructors and Destructor
   // ---------------------------------------------------------------------------
  -DTDGrammar::DTDGrammar() :
  -    fElemDeclPool(0)
  +DTDGrammar::DTDGrammar(MemoryManager* const manager) :
  +    fMemoryManager(manager)
  +    , fElemDeclPool(0)
       , fElemNonDeclPool(0)
       , fEntityDeclPool(0)
       , fNotationDeclPool(0)
  @@ -108,10 +112,10 @@
       //  <TBD> Investigate what the optimum values would be for the various
       //  pools.
       //
  -    fElemDeclPool = new NameIdPool<DTDElementDecl>(109);
  -    fElemNonDeclPool = new NameIdPool<DTDElementDecl>(29);
  -    fEntityDeclPool = new NameIdPool<DTDEntityDecl>(109);
  -    fNotationDeclPool = new NameIdPool<XMLNotationDecl>(109);
  +    fElemDeclPool = new (fMemoryManager) NameIdPool<DTDElementDecl>(109);
  +    fElemNonDeclPool = new (fMemoryManager) NameIdPool<DTDElementDecl>(29);
  +    fEntityDeclPool = new (fMemoryManager) NameIdPool<DTDEntityDecl>(109);
  +    fNotationDeclPool = new (fMemoryManager) NameIdPool<XMLNotationDecl>(109);
   
       //
       //  Call our own reset method. This lets us have the pool setup stuff
  @@ -145,7 +149,13 @@
       // if not, then add this in
       if (!retVal)
       {
  -        retVal = new DTDElementDecl(qName, uriId, DTDElementDecl::Any);
  +        retVal = new (fMemoryManager) DTDElementDecl
  +        (
  +            qName
  +            , uriId
  +            , DTDElementDecl::Any
  +            , fMemoryManager
  +        );
           const unsigned int elemId = fElemNonDeclPool->put(retVal);
           retVal->setId(elemId);
           wasAdded = true;
  @@ -164,7 +174,13 @@
           , unsigned int          scope
           , const bool            notDeclared)
   {
  -    DTDElementDecl* retVal = new DTDElementDecl(qName, uriId, DTDElementDecl::Any);
  +    DTDElementDecl* retVal = new (fMemoryManager) DTDElementDecl
  +    (
  +        qName
  +        , uriId
  +        , DTDElementDecl::Any
  +        , fMemoryManager
  +    );
       const unsigned int elemId = (notDeclared) ? fElemNonDeclPool->put(retVal)
                                                 : fElemDeclPool->put(retVal);
       retVal->setId(elemId);
  
  
  
  1.6       +11 -7     xml-xerces/c/src/xercesc/validators/DTD/DTDGrammar.hpp
  
  Index: DTDGrammar.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDGrammar.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DTDGrammar.hpp	4 Nov 2002 14:50:40 -0000	1.5
  +++ DTDGrammar.hpp	15 May 2003 18:54:50 -0000	1.6
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.6  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.5  2002/11/04 14:50:40  tng
    * C++ Namespace Support.
    *
  @@ -117,7 +120,7 @@
       // -----------------------------------------------------------------------
       //  Constructors and Destructor
       // -----------------------------------------------------------------------
  -    DTDGrammar();
  +    DTDGrammar(MemoryManager* const manager);
       virtual ~DTDGrammar();
   
   
  @@ -268,12 +271,13 @@
       //      or not. When using a cached grammar, no need for pre content
       //      validation.
       // -----------------------------------------------------------------------
  -    NameIdPool<DTDElementDecl>*     fElemDeclPool;
  -    NameIdPool<DTDElementDecl>*     fElemNonDeclPool;
  -    NameIdPool<DTDEntityDecl>*      fEntityDeclPool;
  -    NameIdPool<XMLNotationDecl>*    fNotationDeclPool;
  -    unsigned int                    fRootElemId;
  -    bool                            fValidated;
  +    MemoryManager*               fMemoryManager;
  +    NameIdPool<DTDElementDecl>*  fElemDeclPool;
  +    NameIdPool<DTDElementDecl>*  fElemNonDeclPool;
  +    NameIdPool<DTDEntityDecl>*   fEntityDeclPool;
  +    NameIdPool<XMLNotationDecl>* fNotationDeclPool;
  +    unsigned int                 fRootElemId;
  +    bool                         fValidated;
   };
   
   
  
  
  
  1.25      +75 -32    xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.cpp
  
  Index: DTDScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- DTDScanner.cpp	10 Mar 2003 15:28:07 -0000	1.24
  +++ DTDScanner.cpp	15 May 2003 18:54:50 -0000	1.25
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.25  2003/05/15 18:54:50  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.24  2003/03/10 15:28:07  tng
    * XML1.0 Errata E38
    *
  @@ -247,12 +250,13 @@
   //  a repetition suffix. If so, it creates a new correct rep node and wraps
   //  the pass node in it. Otherwise, it returns the previous node.
   //
  -static ContentSpecNode*
  -makeRepNode(const XMLCh testCh, ContentSpecNode* const prevNode)
  +static ContentSpecNode* makeRepNode(const XMLCh testCh,
  +                                    ContentSpecNode* const prevNode,
  +                                    MemoryManager* const manager)
   {
       if (testCh == chQuestion)
       {
  -        return new ContentSpecNode
  +        return new (manager) ContentSpecNode
           (
               ContentSpecNode::ZeroOrOne
               , prevNode
  @@ -261,7 +265,7 @@
       }
        else if (testCh == chPlus)
       {
  -        return new ContentSpecNode
  +        return new (manager) ContentSpecNode
           (
               ContentSpecNode::OneOrMore
               , prevNode
  @@ -270,7 +274,7 @@
       }
        else if (testCh == chAsterisk)
       {
  -        return new ContentSpecNode
  +        return new (manager) ContentSpecNode
           (
               ContentSpecNode::ZeroOrMore
               , prevNode
  @@ -285,8 +289,11 @@
   // ---------------------------------------------------------------------------
   //  DTDValidator: Constructors and Destructor
   // ---------------------------------------------------------------------------
  -DTDScanner::DTDScanner(DTDGrammar* dtdGrammar, DocTypeHandler* const docTypeHandler) :
  -    fDocTypeHandler(docTypeHandler)
  +DTDScanner::DTDScanner( DTDGrammar*           dtdGrammar
  +                      , DocTypeHandler* const docTypeHandler
  +                      , MemoryManager* const  manager) :
  +    fMemoryManager(manager)
  +    , fDocTypeHandler(docTypeHandler)
       , fDumAttDef(0)
       , fDumElemDecl(0)
       , fDumEntityDecl(0)
  @@ -605,7 +612,7 @@
           // Use the dummy decl to parse into and set its name to the name we got
           if (!fDumAttDef)
           {
  -            fDumAttDef = new DTDAttDef;
  +            fDumAttDef = new (fMemoryManager) DTDAttDef;
               fDumAttDef->setId(fNextAttrId++);
           }
           fDumAttDef->setName(bufToUse.getRawBuffer());
  @@ -617,7 +624,7 @@
           //  It does not already exist so create a new one, give it the next
           //  available unique id, and add it
           //
  -        decl = new DTDAttDef(bufToUse.getRawBuffer());
  +        decl = new (fMemoryManager) DTDAttDef(bufToUse.getRawBuffer());
           decl->setId(fNextAttrId++);
           decl->setExternalAttDeclaration(isReadingExternalEntity());
           parentElem.addAttDef(decl);
  @@ -794,7 +801,13 @@
           //  it having been created because of an attlist. Later, if its
           //  declared, this will be updated.
           //
  -        elemDecl = new DTDElementDecl(bbName.getRawBuffer(), fEmptyNamespaceId);
  +        elemDecl = new (fMemoryManager) DTDElementDecl
  +        (
  +            bbName.getRawBuffer()
  +            , fEmptyNamespaceId
  +            , DTDElementDecl::Any
  +            , fMemoryManager
  +        );
           elemDecl->setCreateReason(XMLElementDecl::AttList);
           elemDecl->setExternalElemDeclaration(isReadingExternalEntity());
           fDTDGrammar->putElemDecl((XMLElementDecl*) elemDecl);
  @@ -1247,19 +1260,25 @@
           XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
           if (!decl)
           {
  -            decl = new DTDElementDecl(bufToUse.getRawBuffer(), fEmptyNamespaceId);
  +            decl = new (fMemoryManager) DTDElementDecl
  +            (
  +                bufToUse.getRawBuffer()
  +                , fEmptyNamespaceId
  +                , DTDElementDecl::Any
  +                , fMemoryManager
  +            );
               decl->setCreateReason(XMLElementDecl::InContentModel);
               decl->setExternalElemDeclaration(isReadingExternalEntity());
               fDTDGrammar->putElemDecl(decl);
           }
  -        curNode = new ContentSpecNode(decl->getElementName());
  +        curNode = new (fMemoryManager) ContentSpecNode(decl->getElementName());
   
           // Check for a PE ref here, but don't require spaces
           const bool gotSpaces = checkForPERef(false, false, true);
   
           // Check for a repetition character after the leaf
           const XMLCh repCh = fReaderMgr->peekNextChar();
  -        ContentSpecNode* tmpNode = makeRepNode(repCh, curNode);
  +        ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fMemoryManager);
           if (tmpNode != curNode)
           {
               if (gotSpaces)
  @@ -1301,13 +1320,13 @@
       if (opCh == chComma)
       {
           curType = ContentSpecNode::Sequence;
  -        headNode = new ContentSpecNode(curType, curNode, 0);
  +        headNode = new (fMemoryManager) ContentSpecNode(curType, curNode, 0);
           curNode = headNode;
       }
        else if (opCh == chPipe)
       {
           curType = ContentSpecNode::Choice;
  -        headNode = new ContentSpecNode(curType, curNode, 0);
  +        headNode = new (fMemoryManager) ContentSpecNode(curType, curNode, 0);
           curNode = headNode;
       }
        else
  @@ -1417,17 +1436,23 @@
                       XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
                       if (!decl)
                       {
  -                        decl = new DTDElementDecl(bufToUse.getRawBuffer(), fEmptyNamespaceId);
  +                        decl = new (fMemoryManager) DTDElementDecl
  +                        (
  +                            bufToUse.getRawBuffer()
  +                            , fEmptyNamespaceId
  +                            , DTDElementDecl::Any
  +                            , fMemoryManager
  +                        );
                           decl->setCreateReason(XMLElementDecl::InContentModel);
                           decl->setExternalElemDeclaration(isReadingExternalEntity());
                           fDTDGrammar->putElemDecl(decl);
                       }
   
  -                    ContentSpecNode* tmpLeaf = new ContentSpecNode(decl->getElementName());
  +                    ContentSpecNode* tmpLeaf = new (fMemoryManager) ContentSpecNode(decl->getElementName());
   
                       // Check for a repetition character after the leaf
                       const XMLCh repCh = fReaderMgr->peekNextChar();
  -                    ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf);
  +                    ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fMemoryManager);
                       if (tmpLeaf != tmpLeaf2)
                           fReaderMgr->getNextChar();
   
  @@ -1437,7 +1462,7 @@
                       //  Make the new node the second node of the current node,
                       //  and then make it the current node.
                       //
  -                    ContentSpecNode* newCur = new ContentSpecNode
  +                    ContentSpecNode* newCur = new (fMemoryManager) ContentSpecNode
                       (
                           curType
                           , tmpLeaf2
  @@ -1475,7 +1500,7 @@
       //  of it.
       //
       XMLCh repCh = fReaderMgr->peekNextChar();
  -    ContentSpecNode* retNode = makeRepNode(repCh, headNode);
  +    ContentSpecNode* retNode = makeRepNode(repCh, headNode, fMemoryManager);
       if (retNode != headNode)
           fReaderMgr->getNextChar();
   
  @@ -1767,7 +1792,13 @@
                   fScanner->getValidator()->emitError(XMLValid::ElementAlreadyExists, bbName.getRawBuffer());
   
               if (!fDumElemDecl)
  -                fDumElemDecl = new DTDElementDecl(bbName.getRawBuffer(), fEmptyNamespaceId);
  +                fDumElemDecl = new (fMemoryManager) DTDElementDecl
  +                (
  +                    bbName.getRawBuffer()
  +                    , fEmptyNamespaceId
  +                    , DTDElementDecl::Any
  +                    , fMemoryManager
  +                );
               else
                   fDumElemDecl->setElementName(bbName.getRawBuffer(),fEmptyNamespaceId);
           }
  @@ -1778,7 +1809,13 @@
           //  Create the new empty declaration to fill in and put it into
           //  the decl pool.
           //
  -        decl = new DTDElementDecl(bbName.getRawBuffer(), fEmptyNamespaceId);
  +        decl = new (fMemoryManager) DTDElementDecl
  +        (
  +            bbName.getRawBuffer()
  +            , fEmptyNamespaceId
  +            , DTDElementDecl::Any
  +            , fMemoryManager
  +        );
           fDTDGrammar->putElemDecl(decl);
       }
   
  @@ -1887,14 +1924,14 @@
       if (entityDecl)
       {
           if (!fDumEntityDecl)
  -            fDumEntityDecl = new DTDEntityDecl;
  +            fDumEntityDecl = new (fMemoryManager) DTDEntityDecl;
           fDumEntityDecl->setName(bbName.getRawBuffer());
           entityDecl = fDumEntityDecl;
       }
        else
       {
           // Its not in existence already, then create an entity decl for it
  -        entityDecl = new DTDEntityDecl(bbName.getRawBuffer());
  +        entityDecl = new (fMemoryManager) DTDEntityDecl(bbName.getRawBuffer());
   
           //
           //  Set the declaration location. The parameter indicates whether its
  @@ -3269,7 +3306,7 @@
       //  tree as we go.
       //
       ContentSpecNode* curNode =
  -                 new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
  +                 new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
                                                  XMLUni::fgZeroLenString,
                                                  XMLElementDecl::fgPCDataElemId),
                                        false);
  @@ -3339,7 +3376,7 @@
                   //  node its first child.
                   //
                   if (starRequired || starSkipped) {
  -                    headNode = new ContentSpecNode
  +                    headNode = new (fMemoryManager) ContentSpecNode
                       (
                           ContentSpecNode::ZeroOrMore
                           , headNode
  @@ -3374,7 +3411,13 @@
               XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, nameBuf.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
               if (!decl)
               {
  -                decl = new DTDElementDecl(nameBuf.getRawBuffer(), fEmptyNamespaceId);
  +                decl = new (fMemoryManager) DTDElementDecl
  +                (
  +                    nameBuf.getRawBuffer()
  +                    , fEmptyNamespaceId
  +                    , DTDElementDecl::Any
  +                    , fMemoryManager
  +                );
                   decl->setCreateReason(XMLElementDecl::InContentModel);
                   decl->setExternalElemDeclaration(isReadingExternalEntity());
                   fDTDGrammar->putElemDecl(decl);
  @@ -3391,11 +3434,11 @@
               //
               if (curNode == orgNode)
               {
  -                curNode = new ContentSpecNode
  +                curNode = new (fMemoryManager) ContentSpecNode
                   (
                       ContentSpecNode::Choice
                       , curNode
  -                    , new ContentSpecNode(decl->getElementName())
  +                    , new (fMemoryManager) ContentSpecNode(decl->getElementName())
                   );
   
                   // Remember the top node
  @@ -3406,11 +3449,11 @@
                   ContentSpecNode* oldRight = curNode->orphanSecond();
                   curNode->setSecond
                   (
  -                    new ContentSpecNode
  +                    new (fMemoryManager) ContentSpecNode
                       (
                           ContentSpecNode::Choice
                           , oldRight
  -                        , new ContentSpecNode(decl->getElementName())
  +                        , new (fMemoryManager) ContentSpecNode(decl->getElementName())
                       )
                   );
   
  @@ -3500,7 +3543,7 @@
           ReaderMgr::LastExtEntityInfo lastInfo;
           fReaderMgr->getLastExtEntityInfo(lastInfo);
   
  -        decl = new XMLNotationDecl
  +        decl = new (fMemoryManager) XMLNotationDecl
           (
               bbName.getRawBuffer()
               , (publicId && *publicId) ? publicId : 0
  
  
  
  1.7       +12 -3     xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.hpp
  
  Index: DTDScanner.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.hpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DTDScanner.hpp	5 Feb 2003 22:07:09 -0000	1.6
  +++ DTDScanner.hpp	15 May 2003 18:54:51 -0000	1.7
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.7  2003/05/15 18:54:51  knoaman
  + * Partial implementation of the configurable memory manager.
  + *
    * Revision 1.6  2003/02/05 22:07:09  tng
    * [Bug 3111] Problem with LexicalHandler::startDTD() and LexicalHandler::endDTD().
    *
  @@ -105,7 +108,7 @@
    */
   class DocTypeHandler;
   
  -class VALIDATORS_EXPORT DTDScanner
  +class VALIDATORS_EXPORT DTDScanner : public XMemory
   {
   public:
       // -----------------------------------------------------------------------
  @@ -137,7 +140,12 @@
       // -----------------------------------------------------------------------
       //  Constructors and Destructor
       // -----------------------------------------------------------------------
  -    DTDScanner(DTDGrammar* dtdGrammar, DocTypeHandler* const docTypeHandler);
  +    DTDScanner
  +    (
  +          DTDGrammar*           dtdGrammar
  +        , DocTypeHandler* const docTypeHandler
  +        , MemoryManager* const  manager
  +    );
       virtual ~DTDScanner();
   
       // -----------------------------------------------------------------------
  @@ -286,6 +294,7 @@
       //      current reader to decide whether we are processing an external/internal
       //      declaration
       // -----------------------------------------------------------------------
  +    MemoryManager*                  fMemoryManager;
       DocTypeHandler*                 fDocTypeHandler;
       DTDAttDef*                      fDumAttDef;
       DTDElementDecl*                 fDumElemDecl;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org