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