diff --git a/src/xercesc/framework/MemBufInputSource.cpp b/src/xercesc/framework/MemBufInputSource.cpp index b425adb99db9c0c23253b25014bd34a7d62419b1..7c2d72b8ee34face2d6a85ee36b09978d3310463 100644 --- a/src/xercesc/framework/MemBufInputSource.cpp +++ b/src/xercesc/framework/MemBufInputSource.cpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.4 2003/05/16 03:11:30 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.3 2003/05/15 18:26:07 knoaman * Partial implementation of the configurable memory manager. * @@ -139,6 +142,7 @@ BinInputStream* MemBufInputSource::makeStream() const , fByteCount , fCopyBufToStream ? BinMemInputStream::BufOpt_Copy : BinMemInputStream::BufOpt_Reference + , getMemoryManager() ); } diff --git a/src/xercesc/framework/StdInInputSource.cpp b/src/xercesc/framework/StdInInputSource.cpp index 58f2b3a3d80ecf8d7033d499e48c87af3de273dd..7c6f2f95b331fd7fbb9492cfe38b152732b7b9f2 100644 --- a/src/xercesc/framework/StdInInputSource.cpp +++ b/src/xercesc/framework/StdInInputSource.cpp @@ -56,6 +56,9 @@ /** * $Log$ + * Revision 1.3 2003/05/16 03:11:30 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.2 2002/11/04 15:00:21 tng * C++ Namespace Support. * @@ -93,7 +96,7 @@ XERCES_CPP_NAMESPACE_BEGIN BinInputStream* StdInInputSource::makeStream() const { // Open a binary file stream for the standard input file handle - BinFileInputStream* retStream = new BinFileInputStream + BinFileInputStream* retStream = new (getMemoryManager()) BinFileInputStream ( XMLPlatformUtils::openStdInHandle() ); diff --git a/src/xercesc/util/BinFileInputStream.cpp b/src/xercesc/util/BinFileInputStream.cpp index 225a9e2d876946181c412abdc8e63d82f02f893d..51a240a7e90a7e7fe70a7651f5a4dc8a8fbcccad 100644 --- a/src/xercesc/util/BinFileInputStream.cpp +++ b/src/xercesc/util/BinFileInputStream.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.2 2002/11/04 15:22:03 tng * C++ Namespace Support. * @@ -107,13 +110,14 @@ BinFileInputStream::BinFileInputStream(const XMLCh* const fileName) : fSource = XMLPlatformUtils::openFile(fileName); } -BinFileInputStream::BinFileInputStream(const char* const fileName) : +BinFileInputStream::BinFileInputStream(const char* const fileName, + MemoryManager* const manager) : fSource(0) { // Transcode the file name and put a janitor on the temp buffer - XMLCh* realName = XMLString::transcode(fileName); - ArrayJanitor<XMLCh> janName(realName); + XMLCh* realName = XMLString::transcode(fileName, manager); + ArrayJanitor<XMLCh> janName(realName, manager); // Try to open the file fSource = XMLPlatformUtils::openFile(realName); diff --git a/src/xercesc/util/BinFileInputStream.hpp b/src/xercesc/util/BinFileInputStream.hpp index 6f80bf471926958466e9bf1b55cb600e48b1fc30..7d1853bd3decc964cfa7c1ce671ed346e04addff 100644 --- a/src/xercesc/util/BinFileInputStream.hpp +++ b/src/xercesc/util/BinFileInputStream.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.2 2002/11/04 15:22:03 tng * C++ Namespace Support. * @@ -97,6 +100,7 @@ public : BinFileInputStream ( const char* const fileName + , MemoryManager* const manager ); BinFileInputStream diff --git a/src/xercesc/util/BinMemInputStream.cpp b/src/xercesc/util/BinMemInputStream.cpp index de561ab12f393b69df16c3647f4e371bc95d88f7..60c86d4dca8e08c4568fc37bf510bfc91ab1512f 100644 --- a/src/xercesc/util/BinMemInputStream.cpp +++ b/src/xercesc/util/BinMemInputStream.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.2 2002/11/04 15:22:03 tng * C++ Namespace Support. * @@ -89,6 +92,7 @@ // Includes // --------------------------------------------------------------------------- #include <xercesc/util/BinMemInputStream.hpp> +#include <xercesc/framework/MemoryManager.hpp> #include <string.h> XERCES_CPP_NAMESPACE_BEGIN @@ -96,18 +100,23 @@ XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // BinMemInputStream: Constructors and Destructor // --------------------------------------------------------------------------- -BinMemInputStream::BinMemInputStream( const XMLByte* const initData - , const unsigned int capacity - , const BufOpts bufOpt) : +BinMemInputStream::BinMemInputStream( const XMLByte* const initData + , const unsigned int capacity + , const BufOpts bufOpt + , MemoryManager* const manager) : fBuffer(0) , fBufOpt(bufOpt) , fCapacity(capacity) , fCurIndex(0) + , fMemoryManager(manager) { // According to the buffer option, do the right thing if (fBufOpt == BufOpt_Copy) { - XMLByte* tmpBuf = new XMLByte[fCapacity]; + XMLByte* tmpBuf = (XMLByte*) fMemoryManager->allocate + ( + fCapacity * sizeof(XMLByte) + );//new XMLByte[fCapacity]; memcpy(tmpBuf, initData, capacity); fBuffer = tmpBuf; } @@ -124,7 +133,7 @@ BinMemInputStream::~BinMemInputStream() // cast off the const'ness in that case in order to delete it. // if ((fBufOpt == BufOpt_Adopt) || (fBufOpt == BufOpt_Copy)) - delete [] (XMLByte*)fBuffer; + fMemoryManager->deallocate((XMLByte*)fBuffer);//delete [] (XMLByte*)fBuffer; } diff --git a/src/xercesc/util/BinMemInputStream.hpp b/src/xercesc/util/BinMemInputStream.hpp index a728cae6e2f9b99f0d2f5b2d54bd79c7e071d349..b69cc7b85674206600e17d5d00edde077e0587f8 100644 --- a/src/xercesc/util/BinMemInputStream.hpp +++ b/src/xercesc/util/BinMemInputStream.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.2 2002/11/04 15:22:03 tng * C++ Namespace Support. * @@ -80,6 +83,7 @@ #define BINMEMINPUTSTREAM_HPP #include <xercesc/util/BinInputStream.hpp> +#include <xercesc/util/PlatformUtils.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -105,6 +109,7 @@ public : const XMLByte* const initData , const unsigned int capacity , const BufOpts bufOpt = BufOpt_Copy + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~BinMemInputStream(); @@ -149,6 +154,7 @@ private : BufOpts fBufOpt; unsigned int fCapacity; unsigned int fCurIndex; + MemoryManager* fMemoryManager; }; diff --git a/src/xercesc/util/RefArrayVectorOf.c b/src/xercesc/util/RefArrayVectorOf.c index a89dcbf698d671c736780b02e52a841c8cfc20ea..0f23307400dd49f1041c6d18291c3189f5667fa0 100644 --- a/src/xercesc/util/RefArrayVectorOf.c +++ b/src/xercesc/util/RefArrayVectorOf.c @@ -21,7 +21,7 @@ template <class TElem> RefArrayVectorOf<TElem>::~RefArrayVectorOf() if (fAdoptedElems) { for (unsigned int index = 0; index < fCurCount; index++) - delete[] fElemList[index]; + fMemoryManager->deallocate(fElemList[index]);//delete[] fElemList[index]; } fMemoryManager->deallocate(fElemList);//delete [] fElemList; } diff --git a/src/xercesc/util/XMLDouble.cpp b/src/xercesc/util/XMLDouble.cpp index 954f9e756cf455165ac38f9b1d61474fb05d2371..c56d0081a44a170b91b093e5638dbda0574d903a 100644 --- a/src/xercesc/util/XMLDouble.cpp +++ b/src/xercesc/util/XMLDouble.cpp @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.9 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.8 2003/03/10 20:55:58 peiyongz * Schema Errata E2-40 double/float * @@ -160,8 +163,8 @@ XMLDouble::~XMLDouble() void XMLDouble::checkBoundary(const XMLCh* const strValue) { - char *nptr = XMLString::transcode(strValue); - ArrayJanitor<char> jan1(nptr); + char *nptr = XMLString::transcode(strValue, getMemoryManager()); + ArrayJanitor<char> jan1(nptr, getMemoryManager()); int strLen = strlen(nptr); char *endptr = 0; errno = 0; diff --git a/src/xercesc/util/XMLFloat.cpp b/src/xercesc/util/XMLFloat.cpp index 6d167db926003598506e576ad6c6ead8ebdc628b..472f94c8475e53932967eb4560c9fc425fef9e9d 100644 --- a/src/xercesc/util/XMLFloat.cpp +++ b/src/xercesc/util/XMLFloat.cpp @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.10 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.9 2003/03/10 20:55:58 peiyongz * Schema Errata E2-40 double/float * @@ -155,8 +158,8 @@ XMLFloat::~XMLFloat() void XMLFloat::checkBoundary(const XMLCh* const strValue) { - char *nptr = XMLString::transcode(strValue); - ArrayJanitor<char> jan1(nptr); + char *nptr = XMLString::transcode(strValue, getMemoryManager()); + ArrayJanitor<char> jan1(nptr, getMemoryManager()); int strLen = strlen(nptr); char *endptr = 0; errno = 0; diff --git a/src/xercesc/util/XMLStringTokenizer.cpp b/src/xercesc/util/XMLStringTokenizer.cpp index ce029377d6f17bb2b5d74f6c582cc200149b35e3..5ba485e83882e902ce6cf40cdfe5472025e91a4b 100644 --- a/src/xercesc/util/XMLStringTokenizer.cpp +++ b/src/xercesc/util/XMLStringTokenizer.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2003/05/16 03:11:22 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.3 2002/12/18 14:17:54 gareth * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf. * @@ -89,18 +92,20 @@ const XMLCh fgDelimeters[] = // --------------------------------------------------------------------------- // XMLStringTokenizer: Constructors and Destructor // --------------------------------------------------------------------------- -XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr) +XMLStringTokenizer::XMLStringTokenizer( const XMLCh* const srcStr + , MemoryManager* const manager) : fOffset(0) , fStringLen(XMLString::stringLen(srcStr)) - , fString(XMLString::replicate(srcStr)) + , fString(XMLString::replicate(srcStr, manager)) , fTokens(0) + , fMemoryManager(manager) { try { - fDelimeters = XMLString::replicate(fgDelimeters); + fDelimeters = XMLString::replicate(fgDelimeters, fMemoryManager); if (fStringLen > 0) { - fTokens = new RefArrayVectorOf<XMLCh>(4, true); + fTokens = new (fMemoryManager) RefArrayVectorOf<XMLCh>(4, true); } } catch(...) { @@ -109,18 +114,20 @@ XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr) } XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr, - const XMLCh* const delim) + const XMLCh* const delim, + MemoryManager* const manager) : fOffset(0) , fStringLen(XMLString::stringLen(srcStr)) - , fString(XMLString::replicate(srcStr)) + , fString(XMLString::replicate(srcStr, manager)) , fTokens(0) + , fMemoryManager(manager) { try { - fDelimeters = XMLString::replicate(delim); + fDelimeters = XMLString::replicate(delim, fMemoryManager); if (fStringLen > 0) { - fTokens = new RefArrayVectorOf<XMLCh>(4, true); + fTokens = new (fMemoryManager) RefArrayVectorOf<XMLCh>(4, true); } } catch(...) { @@ -166,7 +173,10 @@ XMLCh* XMLStringTokenizer::nextToken() { if (tokFound) { - XMLCh* tokStr = new XMLCh[(endIndex - startIndex) + 1]; + XMLCh* tokStr = (XMLCh*) fMemoryManager->allocate + ( + (endIndex - startIndex + 1) * sizeof(XMLCh) + );//new XMLCh[(endIndex - startIndex) + 1]; XMLString::subString(tokStr, fString, startIndex, endIndex); fTokens->addElement(tokStr); diff --git a/src/xercesc/util/XMLStringTokenizer.hpp b/src/xercesc/util/XMLStringTokenizer.hpp index f4613477331deaeb0a32cff0500b85f64ce9c050..5c178f792c98f50eeb68effd912f10e04a491477 100644 --- a/src/xercesc/util/XMLStringTokenizer.hpp +++ b/src/xercesc/util/XMLStringTokenizer.hpp @@ -78,7 +78,7 @@ XERCES_CPP_NAMESPACE_BEGIN */ -class XMLUTIL_EXPORT XMLStringTokenizer + class XMLUTIL_EXPORT XMLStringTokenizer :public XMemory { public: // ----------------------------------------------------------------------- @@ -97,7 +97,8 @@ public: * @param srcStr The string to be parsed. * */ - XMLStringTokenizer(const XMLCh* const srcStr); + XMLStringTokenizer(const XMLCh* const srcStr, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Constructs a string tokenizer for the specified string. The characters @@ -107,7 +108,9 @@ public: * @param srcStr The string to be parsed. * @param delim The set of delimiters. */ - XMLStringTokenizer(const XMLCh* const srcStr, const XMLCh* const delim); + XMLStringTokenizer(const XMLCh* const srcStr + , const XMLCh* const delim + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} @@ -189,6 +192,7 @@ private: XMLCh* fString; XMLCh* fDelimeters; RefArrayVectorOf<XMLCh>* fTokens; + MemoryManager* fMemoryManager; }; @@ -197,8 +201,8 @@ private: // --------------------------------------------------------------------------- inline void XMLStringTokenizer::cleanUp() { - delete [] fString; - delete [] fDelimeters; + fMemoryManager->deallocate(fString);//delete [] fString; + fMemoryManager->deallocate(fDelimeters);//delete [] fDelimeters; delete fTokens; } diff --git a/src/xercesc/validators/DTD/DTDValidator.cpp b/src/xercesc/validators/DTD/DTDValidator.cpp index 7237995facbf9d1b0971d6535992606bdf66a374..363957ccf04c76517f5b0734e477d8c344f58b87 100644 --- a/src/xercesc/validators/DTD/DTDValidator.cpp +++ b/src/xercesc/validators/DTD/DTDValidator.cpp @@ -382,7 +382,7 @@ DTDValidator::validateAttrValue(const XMLAttDef* attDef } else { - find = new XMLRefInfo(pszTmpVal); + find = new (getScanner()->getMemoryManager()) XMLRefInfo(pszTmpVal); getScanner()->getIDRefList()->put((void*)find->getRefName(), find); } diff --git a/src/xercesc/validators/schema/SchemaValidator.cpp b/src/xercesc/validators/schema/SchemaValidator.cpp index ab547d9cd8008c2a85c1d8cb21ceb916b6b8ae46..cba57cf812f1335ff8f5d454836aa3be38dd919d 100644 --- a/src/xercesc/validators/schema/SchemaValidator.cpp +++ b/src/xercesc/validators/schema/SchemaValidator.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.30 2003/05/16 03:15:51 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.29 2003/05/15 18:57:27 knoaman * Partial implementation of the configurable memory manager. * @@ -268,7 +271,7 @@ SchemaValidator::SchemaValidator( XMLErrorReporter* const errReporter , fNil(false) , fTypeStack(0) { - fTypeStack = new ValueStackOf<ComplexTypeInfo*>(8); + fTypeStack = new (fMemoryManager) ValueStackOf<ComplexTypeInfo*>(8); } SchemaValidator::~SchemaValidator() @@ -2039,8 +2042,11 @@ SchemaValidator::checkRecurseUnordered(SchemaGrammar* const currentGrammar, XMLExcepts::Codes codeToThrow = XMLExcepts::NoError; unsigned int derivedCount= derivedNodes->size(); unsigned int baseCount = baseNodes->size(); - bool* foundIt = new bool[baseCount]; - ArrayJanitor<bool> janFoundIt(foundIt); + bool* foundIt = (bool*) fMemoryManager->allocate + ( + baseCount * sizeof(bool) + );//new bool[baseCount]; + ArrayJanitor<bool> janFoundIt(foundIt, fMemoryManager); for (unsigned k=0; k < baseCount; k++) { foundIt[k] = false; diff --git a/src/xercesc/validators/schema/SchemaValidator.hpp b/src/xercesc/validators/schema/SchemaValidator.hpp index 47af4c384beb084d548149997d95b4d1dac4a8cd..58e24f7ed17f04caf983d31fda25c85a72da30b4 100644 --- a/src/xercesc/validators/schema/SchemaValidator.hpp +++ b/src/xercesc/validators/schema/SchemaValidator.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2003/05/16 03:15:51 knoaman + * Partial implementation of the configurable memory manager. + * * Revision 1.14 2003/05/15 18:57:27 knoaman * Partial implementation of the configurable memory manager. * @@ -401,7 +404,7 @@ inline void SchemaValidator::setXsiType(const XMLCh* const prefix , const unsigned int uriId) { delete fXsiType; - fXsiType = new QName(prefix, localPart, uriId); + fXsiType = new (fMemoryManager) QName(prefix, localPart, uriId); } inline void SchemaValidator::setNillable(bool isNil) { diff --git a/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp b/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp index c3d009e3f4b1ddb6484a81816c5e2cdd2715fa62..af4f07336ba1702fead6635ba354e8d829da9931 100644 --- a/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp +++ b/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp @@ -69,7 +69,7 @@ XERCES_CPP_NAMESPACE_BEGIN class SchemaGrammar; -class VALIDATORS_EXPORT SubstitutionGroupComparator +class VALIDATORS_EXPORT SubstitutionGroupComparator : public XMemory { public: diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index ac3c0eea4152be90fe6468d732a133068a9951dc..a1eaddaf5733b2281cbe941926bb05ab1915fcb2 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -3035,7 +3035,7 @@ TraverseSchema::traverseByUnion(const DOMElement* const rootElem, if (baseTypeName && *baseTypeName) { //base was provided - get proper validator. - XMLStringTokenizer unionMembers(baseTypeName); + XMLStringTokenizer unionMembers(baseTypeName, fMemoryManager); int tokCount = unionMembers.countTokens(); for (int i = 0; i < tokCount; i++) { @@ -3673,7 +3673,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) } else { - XMLStringTokenizer tokenizer(nameSpace); + XMLStringTokenizer tokenizer(nameSpace, fMemoryManager); DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); attType = XMLAttDef::Any_List; @@ -4568,7 +4568,7 @@ int TraverseSchema::parseBlockSet(const DOMElement* const elem, return blockSet; } - XMLStringTokenizer tokenizer(blockVal); + XMLStringTokenizer tokenizer(blockVal, fMemoryManager); while (tokenizer.hasMoreTokens()) { @@ -4629,7 +4629,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem, return finalSet; } - XMLStringTokenizer tokenizer(finalVal); + XMLStringTokenizer tokenizer(finalVal, fMemoryManager); while (tokenizer.hasMoreTokens()) { diff --git a/src/xercesc/validators/schema/XSDLocator.hpp b/src/xercesc/validators/schema/XSDLocator.hpp index 7d2fef94191149a48aa6e6d2282728422a19da58..b81be9f5d3a368b6b39f6cf0ead94a283bffd822 100644 --- a/src/xercesc/validators/schema/XSDLocator.hpp +++ b/src/xercesc/validators/schema/XSDLocator.hpp @@ -66,11 +66,12 @@ #ifndef XSDLOCATOR_HPP #define XSDLOCATOR_HPP +#include <xercesc/util/XMemory.hpp> #include <xercesc/sax/Locator.hpp> XERCES_CPP_NAMESPACE_BEGIN -class VALIDATORS_EXPORT XSDLocator: public Locator +class VALIDATORS_EXPORT XSDLocator: public XMemory, public Locator { public: