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:26:50 UTC
cvs commit: xml-xerces/c/src/xercesc/parsers AbstractDOMParser.cpp AbstractDOMParser.hpp DOMBuilderImpl.cpp DOMBuilderImpl.hpp SAX2XMLReaderImpl.cpp SAX2XMLReaderImpl.hpp SAXParser.cpp SAXParser.hpp XercesDOMParser.cpp XercesDOMParser.hpp
knoaman 2003/05/15 11:26:50
Modified: c/src/xercesc/parsers AbstractDOMParser.cpp
AbstractDOMParser.hpp DOMBuilderImpl.cpp
DOMBuilderImpl.hpp SAX2XMLReaderImpl.cpp
SAX2XMLReaderImpl.hpp SAXParser.cpp SAXParser.hpp
XercesDOMParser.cpp XercesDOMParser.hpp
Log:
Partial implementation of the configurable memory manager.
Revision Changes Path
1.40 +16 -8 xml-xerces/c/src/xercesc/parsers/AbstractDOMParser.cpp
Index: AbstractDOMParser.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/AbstractDOMParser.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- AbstractDOMParser.cpp 30 Apr 2003 15:50:23 -0000 1.39
+++ AbstractDOMParser.cpp 15 May 2003 18:26:49 -0000 1.40
@@ -102,7 +102,8 @@
// ---------------------------------------------------------------------------
// AbstractDOMParser: Constructors and Destructor
// ---------------------------------------------------------------------------
-AbstractDOMParser::AbstractDOMParser(XMLValidator* const valToAdopt) :
+AbstractDOMParser::AbstractDOMParser( XMLValidator* const valToAdopt
+ , MemoryManager* const manager) :
fCreateEntityReferenceNodes(true)
, fIncludeIgnorableWhitespace(true)
@@ -121,6 +122,8 @@
, fGrammarResolver(0)
, fURIStringPool(0)
, fValidator(valToAdopt)
+, fMemoryManager(manager)
+, fBufMgr(manager)
, fInternalSubset(fBufMgr.bidOnBuffer())
{
try
@@ -146,18 +149,18 @@
void AbstractDOMParser::initialize()
{
// Create grammar resolver and string pool to pass to the scanner
- fGrammarResolver = new GrammarResolver;
- fURIStringPool = new XMLStringPool;
+ fGrammarResolver = new (fMemoryManager) GrammarResolver(fMemoryManager);
+ fURIStringPool = new (fMemoryManager) XMLStringPool;
// Create a scanner and tell it what validator to use. Then set us
// as the document event handler so we can fill the DOM document.
- fScanner = XMLScannerResolver::getDefaultScanner(fValidator);
+ fScanner = XMLScannerResolver::getDefaultScanner(fValidator, fMemoryManager);
fScanner->setDocHandler(this);
fScanner->setDocTypeHandler(this);
fScanner->setGrammarResolver(fGrammarResolver);
fScanner->setURIStringPool(fURIStringPool);
- fNodeStack = new ValueStackOf<DOMNode*>(64);
+ fNodeStack = new (fMemoryManager) ValueStackOf<DOMNode*>(64);
this->reset();
}
@@ -187,7 +190,7 @@
if (fDocument && !fDocumentAdoptedByUser) {
if (!fDocumentVector) {
// allocate the vector if not exists yet
- fDocumentVector = new RefVectorOf<DOMDocumentImpl>(10, true) ;
+ fDocumentVector = new (fMemoryManager) RefVectorOf<DOMDocumentImpl>(10, true) ;
}
fDocumentVector->addElement(fDocument);
}
@@ -402,7 +405,12 @@
void AbstractDOMParser::useScanner(const XMLCh* const scannerName)
{
- XMLScanner* tempScanner = XMLScannerResolver::resolveScanner(scannerName, fValidator);
+ XMLScanner* tempScanner = XMLScannerResolver::resolveScanner
+ (
+ scannerName
+ , fValidator
+ , fMemoryManager
+ );
if (tempScanner) {
1.18 +10 -4 xml-xerces/c/src/xercesc/parsers/AbstractDOMParser.hpp
Index: AbstractDOMParser.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/AbstractDOMParser.hpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- AbstractDOMParser.hpp 17 Apr 2003 21:58:50 -0000 1.17
+++ AbstractDOMParser.hpp 15 May 2003 18:26:50 -0000 1.18
@@ -90,7 +90,8 @@
*/
class PARSERS_EXPORT AbstractDOMParser :
- public XMLDocumentHandler
+ public XMemory
+ , public XMLDocumentHandler
, public XMLErrorReporter
, public XMLEntityHandler
, public DocTypeHandler
@@ -1307,7 +1308,11 @@
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
- AbstractDOMParser(XMLValidator* const valToAdopt = 0);
+ AbstractDOMParser
+ (
+ XMLValidator* const valToAdopt = 0
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ );
//@}
@@ -1468,7 +1473,6 @@
bool fParseInProgress;
bool fCreateCommentNodes;
bool fDocumentAdoptedByUser;
- XMLBufferMgr fBufMgr;
XMLScanner* fScanner;
DOMNode* fCurrentParent;
DOMNode* fCurrentNode;
@@ -1480,6 +1484,8 @@
GrammarResolver* fGrammarResolver;
XMLStringPool* fURIStringPool;
XMLValidator* fValidator;
+ MemoryManager* fMemoryManager;
+ XMLBufferMgr fBufMgr;
XMLBuffer& fInternalSubset;
};
1.23 +4 -3 xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.cpp
Index: DOMBuilderImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- DOMBuilderImpl.cpp 17 Apr 2003 21:58:50 -0000 1.22
+++ DOMBuilderImpl.cpp 15 May 2003 18:26:50 -0000 1.23
@@ -87,9 +87,10 @@
// ---------------------------------------------------------------------------
// DOMBuilderImpl: Constructors and Destructor
// ---------------------------------------------------------------------------
-DOMBuilderImpl::DOMBuilderImpl(XMLValidator* const valToAdopt) :
+DOMBuilderImpl::DOMBuilderImpl( XMLValidator* const valToAdopt
+ , MemoryManager* const manager) :
-AbstractDOMParser(valToAdopt)
+AbstractDOMParser(valToAdopt, manager)
, fAutoValidation(false)
, fValidation(false)
, fErrorHandler(0)
1.13 +6 -2 xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.hpp
Index: DOMBuilderImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/DOMBuilderImpl.hpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- DOMBuilderImpl.hpp 30 Dec 2002 18:32:48 -0000 1.12
+++ DOMBuilderImpl.hpp 15 May 2003 18:26:50 -0000 1.13
@@ -96,7 +96,11 @@
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
- DOMBuilderImpl(XMLValidator* const valToAdopt = 0);
+ DOMBuilderImpl
+ (
+ XMLValidator* const valToAdopt = 0
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ );
/**
* Destructor
1.18 +50 -14 xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
Index: SAX2XMLReaderImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- SAX2XMLReaderImpl.cpp 17 Apr 2003 21:58:50 -0000 1.17
+++ SAX2XMLReaderImpl.cpp 15 May 2003 18:26:50 -0000 1.18
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.18 2003/05/15 18:26:50 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.17 2003/04/17 21:58:50 neilg
* Adding a new property,
* http://apache.org/xml/properties/security-manager, with
@@ -280,7 +283,7 @@
chOpenSquare, chLatin_d, chLatin_t, chLatin_d, chCloseSquare, chNull
};
-SAX2XMLReaderImpl::SAX2XMLReaderImpl() :
+SAX2XMLReaderImpl::SAX2XMLReaderImpl(MemoryManager* const manager) :
fNamespacePrefix(false)
, fAutoValidation(false)
@@ -304,6 +307,8 @@
, fGrammarResolver(0)
, fURIStringPool(0)
, fValidator(0)
+ , fMemoryManager(manager)
+ , fStringBuffers(manager)
{
try
{
@@ -327,17 +332,20 @@
void SAX2XMLReaderImpl::initialize()
{
// Create grammar resolver and string pool that we pass to the scanner
- fGrammarResolver = new GrammarResolver();
- fURIStringPool = new XMLStringPool();
+ fGrammarResolver = new (fMemoryManager) GrammarResolver(fMemoryManager);
+ fURIStringPool = new (fMemoryManager) XMLStringPool();
// Create a scanner and tell it what validator to use. Then set us
// as the document event handler so we can fill the DOM document.
- fScanner = XMLScannerResolver::getDefaultScanner(0);
+ fScanner = XMLScannerResolver::getDefaultScanner(0, fMemoryManager);
fScanner->setGrammarResolver(fGrammarResolver);
fScanner->setURIStringPool(fURIStringPool);
// Create the initial advanced handler list array and zero it out
- fAdvDHList = new XMLDocumentHandler*[fAdvDHListSize];
+ fAdvDHList = (XMLDocumentHandler**) fMemoryManager->allocate
+ (
+ fAdvDHListSize * sizeof(XMLDocumentHandler*)
+ );//new XMLDocumentHandler*[fAdvDHListSize];
memset(fAdvDHList, 0, sizeof(void*) * fAdvDHListSize);
// SAX2 default is for namespaces (feature http://xml.org/sax/features/namespaces) to be on
@@ -346,15 +354,15 @@
// default: schema is on
setDoSchema(true);
- fPrefixes = new RefStackOf<XMLBuffer> (10, false) ;
- fTempAttrVec = new RefVectorOf<XMLAttr> (10, false) ;
- fPrefixCounts = new ValueStackOf<unsigned int>(10) ;
+ fPrefixes = new (fMemoryManager) RefStackOf<XMLBuffer> (10, false) ;
+ fTempAttrVec = new (fMemoryManager) RefVectorOf<XMLAttr> (10, false) ;
+ fPrefixCounts = new (fMemoryManager) ValueStackOf<unsigned int>(10) ;
}
void SAX2XMLReaderImpl::cleanUp()
{
- delete [] fAdvDHList;
+ fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList;
delete fScanner;
delete fPrefixes;
delete fTempAttrVec;
@@ -373,7 +381,10 @@
{
// Calc a new size and allocate the new temp buffer
const unsigned int newSize = (unsigned int)(fAdvDHListSize * 1.5);
- XMLDocumentHandler** newList = new XMLDocumentHandler*[newSize];
+ XMLDocumentHandler** newList = (XMLDocumentHandler**) fMemoryManager->allocate
+ (
+ newSize * sizeof(XMLDocumentHandler*)
+ );//new XMLDocumentHandler*[newSize];
// Copy over the old data to the new list and zero out the rest
memcpy(newList, fAdvDHList, sizeof(void*) * fAdvDHListSize);
@@ -385,7 +396,7 @@
);
// And now clean up the old array and store the new stuff
- delete [] fAdvDHList;
+ fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList;
fAdvDHList = newList;
fAdvDHListSize = newSize;
}
@@ -1226,9 +1237,12 @@
if (isPEDecl) {
unsigned int nameLen = XMLString::stringLen(entityName);
- XMLCh* tmpName = new XMLCh[nameLen + 2];
+ XMLCh* tmpName = (XMLCh*) fMemoryManager->allocate
+ (
+ (nameLen + 2) * sizeof(XMLCh)
+ );//new XMLCh[nameLen + 2];
- tmpNameJan.reset(tmpName);
+ tmpNameJan.reset(tmpName, fMemoryManager);
tmpName[0] = chPercent;
XMLString::copyString(tmpName + 1, entityName);
entityName = tmpName;
@@ -1522,7 +1536,12 @@
}
else if (XMLString::equals(name, XMLUni::fgXercesScannerName))
{
- XMLScanner* tempScanner = XMLScannerResolver::resolveScanner((const XMLCh*) value, fValidator);
+ XMLScanner* tempScanner = XMLScannerResolver::resolveScanner
+ (
+ (const XMLCh*) value
+ , fValidator
+ , fMemoryManager
+ );
if (tempScanner) {
1.20 +25 -3 xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.hpp
Index: SAX2XMLReaderImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAX2XMLReaderImpl.hpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- SAX2XMLReaderImpl.hpp 17 Apr 2003 21:58:50 -0000 1.19
+++ SAX2XMLReaderImpl.hpp 15 May 2003 18:26:50 -0000 1.20
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.20 2003/05/15 18:26:50 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.19 2003/04/17 21:58:50 neilg
* Adding a new property,
* http://apache.org/xml/properties/security-manager, with
@@ -253,7 +256,8 @@
*/
class PARSERS_EXPORT SAX2XMLReaderImpl :
- public SAX2XMLReader
+ public XMemory
+ , public SAX2XMLReader
, public XMLDocumentHandler
, public XMLErrorReporter
, public XMLEntityHandler
@@ -266,7 +270,7 @@
/** @name Constructors and Destructor */
//@{
/** The default constructor */
- SAX2XMLReaderImpl() ;
+ SAX2XMLReaderImpl(MemoryManager* const manager) ;
/** The destructor */
~SAX2XMLReaderImpl() ;
@@ -1783,7 +1787,6 @@
VecAttributesImpl fAttrList ;
ContentHandler* fDocHandler ;
RefVectorOf<XMLAttr>* fTempAttrVec ;
- XMLBufferMgr fStringBuffers ;
RefStackOf<XMLBuffer> * fPrefixes ;
ValueStackOf<unsigned int>* fPrefixCounts ;
DTDHandler* fDTDHandler;
@@ -1796,6 +1799,8 @@
GrammarResolver* fGrammarResolver;
XMLStringPool* fURIStringPool;
XMLValidator* fValidator;
+ MemoryManager* fMemoryManager;
+ XMLBufferMgr fStringBuffers ;
// -----------------------------------------------------------------------
// internal function used to set the state of the parser
1.17 +42 -9 xml-xerces/c/src/xercesc/parsers/SAXParser.cpp
Index: SAXParser.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAXParser.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- SAXParser.cpp 17 Apr 2003 21:58:50 -0000 1.16
+++ SAXParser.cpp 15 May 2003 18:26:50 -0000 1.17
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.17 2003/05/15 18:26:50 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.16 2003/04/17 21:58:50 neilg
* Adding a new property,
* http://apache.org/xml/properties/security-manager, with
@@ -242,7 +245,8 @@
// ---------------------------------------------------------------------------
// SAXParser: Constructors and Destructor
// ---------------------------------------------------------------------------
-SAXParser::SAXParser(XMLValidator* const valToAdopt) :
+SAXParser::SAXParser( XMLValidator* const valToAdopt
+ , MemoryManager* const manager) :
fParseInProgress(false)
, fElemDepth(0)
@@ -257,6 +261,7 @@
, fGrammarResolver(0)
, fURIStringPool(0)
, fValidator(valToAdopt)
+ , fMemoryManager(manager)
{
try
{
@@ -281,22 +286,25 @@
void SAXParser::initialize()
{
// Create grammar resolver and string pool to pass to scanner
- fGrammarResolver = new GrammarResolver();
- fURIStringPool = new XMLStringPool();
+ fGrammarResolver = new (fMemoryManager) GrammarResolver(fMemoryManager);
+ fURIStringPool = new (fMemoryManager) XMLStringPool();
// Create our scanner and tell it what validator to use
- fScanner = XMLScannerResolver::getDefaultScanner(fValidator);
+ fScanner = XMLScannerResolver::getDefaultScanner(fValidator,fMemoryManager);
fScanner->setGrammarResolver(fGrammarResolver);
fScanner->setURIStringPool(fURIStringPool);
// Create the initial advanced handler list array and zero it out
- fAdvDHList = new XMLDocumentHandler*[fAdvDHListSize];
+ fAdvDHList = (XMLDocumentHandler**) fMemoryManager->allocate
+ (
+ fAdvDHListSize * sizeof(XMLDocumentHandler*)
+ );//new XMLDocumentHandler*[fAdvDHListSize];
memset(fAdvDHList, 0, sizeof(void*) * fAdvDHListSize);
}
void SAXParser::cleanUp()
{
- delete [] fAdvDHList;
+ fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList;
delete fScanner;
delete fGrammarResolver;
delete fURIStringPool;
@@ -316,7 +324,10 @@
{
// Calc a new size and allocate the new temp buffer
const unsigned int newSize = (unsigned int)(fAdvDHListSize * 1.5);
- XMLDocumentHandler** newList = new XMLDocumentHandler*[newSize];
+ XMLDocumentHandler** newList = (XMLDocumentHandler**) fMemoryManager->allocate
+ (
+ newSize * sizeof(XMLDocumentHandler*)
+ );//new XMLDocumentHandler*[newSize];
// Copy over the old data to the new list and zero out the rest
memcpy(newList, fAdvDHList, sizeof(void*) * fAdvDHListSize);
@@ -328,7 +339,7 @@
);
// And now clean up the old array and store the new stuff
- delete [] fAdvDHList;
+ fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList;
fAdvDHList = newList;
fAdvDHListSize = newSize;
}
@@ -608,7 +619,12 @@
void SAXParser::useScanner(const XMLCh* const scannerName)
{
- XMLScanner* tempScanner = XMLScannerResolver::resolveScanner(scannerName, fValidator);
+ XMLScanner* tempScanner = XMLScannerResolver::resolveScanner
+ (
+ scannerName
+ , fValidator
+ , fMemoryManager
+ );
if (tempScanner) {
1.23 +29 -3 xml-xerces/c/src/xercesc/parsers/SAXParser.hpp
Index: SAXParser.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/SAXParser.hpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- SAXParser.hpp 17 Apr 2003 21:58:50 -0000 1.22
+++ SAXParser.hpp 15 May 2003 18:26:50 -0000 1.23
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.23 2003/05/15 18:26:50 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.22 2003/04/17 21:58:50 neilg
* Adding a new property,
* http://apache.org/xml/properties/security-manager, with
@@ -260,11 +263,12 @@
class PARSERS_EXPORT SAXParser :
- public Parser
+ public XMemory
+ , public Parser
, public XMLDocumentHandler
, public XMLErrorReporter
, public XMLEntityHandler
- , public DocTypeHandler
+ , public DocTypeHandler
{
public :
// -----------------------------------------------------------------------
@@ -296,7 +300,11 @@
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
- SAXParser(XMLValidator* const valToAdopt = 0);
+ SAXParser
+ (
+ XMLValidator* const valToAdopt = 0
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ );
/**
* Destructor
@@ -2017,6 +2025,7 @@
GrammarResolver* fGrammarResolver;
XMLStringPool* fURIStringPool;
XMLValidator* fValidator;
+ MemoryManager* fMemoryManager;
XMLBuffer fElemQNameBuf;
};
1.12 +4 -3 xml-xerces/c/src/xercesc/parsers/XercesDOMParser.cpp
Index: XercesDOMParser.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/XercesDOMParser.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XercesDOMParser.cpp 9 Jan 2003 19:07:08 -0000 1.11
+++ XercesDOMParser.cpp 15 May 2003 18:26:50 -0000 1.12
@@ -83,9 +83,10 @@
// ---------------------------------------------------------------------------
// XercesDOMParser: Constructors and Destructor
// ---------------------------------------------------------------------------
-XercesDOMParser::XercesDOMParser(XMLValidator* const valToAdopt) :
+XercesDOMParser::XercesDOMParser( XMLValidator* const valToAdopt
+ , MemoryManager* const manager) :
-AbstractDOMParser(valToAdopt)
+AbstractDOMParser(valToAdopt, manager)
, fErrorHandler(0)
, fEntityResolver(0)
{
1.14 +6 -2 xml-xerces/c/src/xercesc/parsers/XercesDOMParser.hpp
Index: XercesDOMParser.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/parsers/XercesDOMParser.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- XercesDOMParser.hpp 9 Jan 2003 19:07:08 -0000 1.13
+++ XercesDOMParser.hpp 15 May 2003 18:26:50 -0000 1.14
@@ -101,7 +101,11 @@
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
- XercesDOMParser(XMLValidator* const valToAdopt = 0);
+ XercesDOMParser
+ (
+ XMLValidator* const valToAdopt = 0
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ );
/**
* Destructor
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org