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:57:28 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/schema ComplexTypeInfo.cpp ComplexTypeInfo.hpp GeneralAttributeCheck.cpp GeneralAttributeCheck.hpp NamespaceScope.cpp NamespaceScope.hpp SchemaElementDecl.cpp SchemaElementDecl.hpp SchemaGrammar.cpp SchemaGrammar.hpp SchemaInfo.hpp SchemaValidator.cpp SchemaValidator.hpp TraverseSchema.cpp TraverseSchema.hpp XSDDOMParser.cpp XSDDOMParser.hpp XSDErrorReporter.hpp XercesAttGroupInfo.cpp XercesAttGroupInfo.hpp XercesGroupInfo.cpp XercesGroupInfo.hpp
knoaman 2003/05/15 11:57:28
Modified: c/src/xercesc/validators/schema ComplexTypeInfo.cpp
ComplexTypeInfo.hpp GeneralAttributeCheck.cpp
GeneralAttributeCheck.hpp NamespaceScope.cpp
NamespaceScope.hpp SchemaElementDecl.cpp
SchemaElementDecl.hpp SchemaGrammar.cpp
SchemaGrammar.hpp SchemaInfo.hpp
SchemaValidator.cpp SchemaValidator.hpp
TraverseSchema.cpp TraverseSchema.hpp
XSDDOMParser.cpp XSDDOMParser.hpp
XSDErrorReporter.hpp XercesAttGroupInfo.cpp
XercesAttGroupInfo.hpp XercesGroupInfo.cpp
XercesGroupInfo.hpp
Log:
Partial implementation of the configurable memory manager.
Revision Changes Path
1.7 +55 -42 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp
Index: ComplexTypeInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ComplexTypeInfo.cpp 29 Jan 2003 19:57:30 -0000 1.6
+++ ComplexTypeInfo.cpp 15 May 2003 18:57:27 -0000 1.7
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.7 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.6 2003/01/29 19:57:30 gareth
* API to retrive local and uri part of the type name
*
@@ -176,8 +179,9 @@
// ---------------------------------------------------------------------------
// ComplexTypeInfo: Constructors and Destructor
// ---------------------------------------------------------------------------
-ComplexTypeInfo::ComplexTypeInfo()
- : fAbstract(false)
+ComplexTypeInfo::ComplexTypeInfo(MemoryManager* const manager)
+ : fAnonymous(false)
+ , fAbstract(false)
, fAdoptContentSpec(true)
, fAttWithTypeId(false)
, fPreprocessed(false)
@@ -205,7 +209,7 @@
, fContentSpecOrgURISize(16)
, fSpecNodesToDelete(0)
, fLocator(0)
- , fAnonymous(false)
+ , fMemoryManager(manager)
{
}
@@ -213,9 +217,9 @@
ComplexTypeInfo::~ComplexTypeInfo()
{
- delete [] fTypeName;
- delete [] fTypeLocalName;
- delete [] fTypeUri;
+ fMemoryManager->deallocate(fTypeName); //delete [] fTypeName;
+ fMemoryManager->deallocate(fTypeLocalName); //delete [] fTypeLocalName;
+ fMemoryManager->deallocate(fTypeUri); //delete [] fTypeUri;
if (fAdoptContentSpec) {
delete fContentSpec;
@@ -229,8 +233,8 @@
delete fLocator;
delete fContentModel;
- delete [] fFormattedModel;
- delete [] fContentSpecOrgURI;
+ fMemoryManager->deallocate(fFormattedModel); //delete [] fFormattedModel;
+ fMemoryManager->deallocate(fContentSpecOrgURI); //delete [] fContentSpecOrgURI;
}
// ---------------------------------------------------------------------------
@@ -326,7 +330,7 @@
faultInAttDefList();
// And add a default attribute for this name
- retVal = new SchemaAttDef(prefix, baseName, uriId);
+ retVal = new (fMemoryManager) SchemaAttDef(prefix, baseName, uriId);
retVal->setElemId(getElementId());
fAttDefs->put((void*)retVal->getAttName()->getLocalPart(), uriId, retVal);
@@ -364,7 +368,7 @@
XMLValidator* const pValidator)
{
if (fContentSpec) {
- ContentSpecNode* specNode = new ContentSpecNode(*fContentSpec);
+ ContentSpecNode* specNode = new (fMemoryManager) ContentSpecNode(*fContentSpec);
XMLContentModel* cm = makeContentModel(true, specNode);
if (cm) {
@@ -383,7 +387,7 @@
{
// Use a hash modulus of 29 and tell it owns its elements
((ComplexTypeInfo*)this)->fAttDefs =
- new RefHash2KeysTableOf<SchemaAttDef>(29, true);
+ new (fMemoryManager) RefHash2KeysTableOf<SchemaAttDef>(29, true);
}
XMLCh* ComplexTypeInfo::formatContentModel() const
@@ -391,13 +395,13 @@
XMLCh* newValue = 0;
if (fContentType == SchemaElementDecl::Any)
{
- newValue = XMLString::replicate(XMLUni::fgAnyString);
+ newValue = XMLString::replicate(XMLUni::fgAnyString, fMemoryManager);
}
- else if (fContentType == SchemaElementDecl::Empty)
+ else if (fContentType == SchemaElementDecl::Empty)
{
- newValue = XMLString::replicate(XMLUni::fgEmptyString);
+ newValue = XMLString::replicate(XMLUni::fgEmptyString, fMemoryManager);
}
- else
+ else
{
//
// Use a temp XML buffer to format into. Content models could be
@@ -409,9 +413,12 @@
if (specNode) {
XMLBuffer bufFmt;
-
specNode->formatSpec(bufFmt);
- newValue = XMLString::replicate(bufFmt.getRawBuffer());
+ newValue = XMLString::replicate
+ (
+ bufFmt.getRawBuffer()
+ , fMemoryManager
+ );
}
}
return newValue;
@@ -420,14 +427,17 @@
XMLContentModel* ComplexTypeInfo::makeContentModel(const bool checkUPA, ContentSpecNode* const specNode)
{
if ((specNode || fContentSpec) && !fSpecNodesToDelete) {
- fSpecNodesToDelete = new RefVectorOf<ContentSpecNode>(8);
+ fSpecNodesToDelete = new (fMemoryManager) RefVectorOf<ContentSpecNode>(8);
}
// expand the content spec first
ContentSpecNode* aSpecNode = specNode;
if (aSpecNode) {
- fContentSpecOrgURI = new unsigned int[fContentSpecOrgURISize];
+ fContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate
+ (
+ fContentSpecOrgURISize * sizeof(unsigned int)
+ ); //new unsigned int[fContentSpecOrgURISize];
aSpecNode = convertContentSpecTree(aSpecNode, checkUPA);
fSpecNodesToDelete->addElement(aSpecNode);
}
@@ -454,7 +464,7 @@
// Just create a mixel content model object. This type of
// content model is optimized for mixed content validation.
//
- cmRet = new MixedContentModel(false, aSpecNode);
+ cmRet = new (fMemoryManager) MixedContentModel(false, aSpecNode);
}
else if (fContentType == SchemaElementDecl::Mixed_Complex) {
@@ -514,12 +524,12 @@
// All the nodes under an ALL must be additional ALL nodes and
// ELEMENTs (or ELEMENTs under ZERO_OR_ONE nodes.)
// We collapse the ELEMENTs into a single vector.
- return new AllContentModel(specNode, true);
+ return new (fMemoryManager) AllContentModel(specNode, true, fMemoryManager);
}
else if (specType == ContentSpecNode::ZeroOrOne) {
// An ALL node can appear under a ZERO_OR_ONE node.
if (specNode->getFirst()->getType() == ContentSpecNode::All) {
- return new AllContentModel(specNode->getFirst(), true);
+ return new (fMemoryManager) AllContentModel(specNode->getFirst(), true, fMemoryManager);
}
}
@@ -528,7 +538,7 @@
else if (specType == ContentSpecNode::Leaf)
{
// Create a simple content model
- return new SimpleContentModel
+ return new (fMemoryManager) SimpleContentModel
(
false
, specNode->getElement()
@@ -547,7 +557,7 @@
&& (specNode->getSecond())
&& (specNode->getSecond()->getType() == ContentSpecNode::Leaf))
{
- return new SimpleContentModel
+ return new (fMemoryManager) SimpleContentModel
(
false
, specNode->getFirst()->getElement()
@@ -567,7 +577,7 @@
//
if (specNode->getFirst()->getType() == ContentSpecNode::Leaf)
{
- return new SimpleContentModel
+ return new (fMemoryManager) SimpleContentModel
(
false
, specNode->getFirst()->getElement()
@@ -576,11 +586,11 @@
);
}
else if (specNode->getFirst()->getType() == ContentSpecNode::All)
- return new AllContentModel(specNode->getFirst(), false);
+ return new (fMemoryManager) AllContentModel(specNode->getFirst(), false, fMemoryManager);
}
else if (specType == ContentSpecNode::All)
- return new AllContentModel(specNode, false);
+ return new (fMemoryManager) AllContentModel(specNode, false, fMemoryManager);
else
{
@@ -588,7 +598,7 @@
}
// Its not any simple type of content, so create a DFA based content model
- return new DFAContentModel(false, specNode, isMixed);
+ return new (fMemoryManager) DFAContentModel(false, specNode, isMixed, fMemoryManager);
}
ContentSpecNode*
@@ -677,20 +687,20 @@
}
else if (minOccurs == 0 && maxOccurs == 1) {
- retNode = new ContentSpecNode(ContentSpecNode::ZeroOrOne, retNode, 0);
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::ZeroOrOne, retNode, 0);
}
else if (minOccurs == 0 && maxOccurs == -1) {
- retNode = new ContentSpecNode(ContentSpecNode::ZeroOrMore, retNode, 0);
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::ZeroOrMore, retNode, 0);
}
else if (minOccurs == 1 && maxOccurs == -1) {
- retNode = new ContentSpecNode(ContentSpecNode::OneOrMore, retNode, 0);
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::OneOrMore, retNode, 0);
}
else if (maxOccurs == -1) {
- retNode = new ContentSpecNode(ContentSpecNode::OneOrMore, retNode, 0);
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::OneOrMore, retNode, 0);
for (int i=0; i < (int)(minOccurs-1); i++) {
- retNode = new ContentSpecNode(ContentSpecNode::Sequence,
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
saveNode, retNode, false);
}
}
@@ -699,12 +709,12 @@
if (minOccurs == 0) {
ContentSpecNode* optional =
- new ContentSpecNode(ContentSpecNode::ZeroOrOne, saveNode, 0);
+ new (fMemoryManager) ContentSpecNode(ContentSpecNode::ZeroOrOne, saveNode, 0);
retNode = optional;
for (int i=0; i < (int)(maxOccurs-minOccurs-1); i++) {
- retNode = new ContentSpecNode(ContentSpecNode::Sequence,
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
retNode, optional, true, false);
}
}
@@ -712,11 +722,11 @@
if (minOccurs > 1) {
- retNode = new ContentSpecNode(ContentSpecNode::Sequence,
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
retNode, saveNode, true, false);
for (int i=1; i < (int)(minOccurs-1); i++) {
- retNode = new ContentSpecNode(ContentSpecNode::Sequence,
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
retNode, saveNode, true, false);
}
}
@@ -725,13 +735,13 @@
if (counter > 0) {
- ContentSpecNode* optional = new ContentSpecNode(ContentSpecNode::ZeroOrOne, saveNode, 0, false);
+ ContentSpecNode* optional = new (fMemoryManager) ContentSpecNode(ContentSpecNode::ZeroOrOne, saveNode, 0, false);
- retNode = new ContentSpecNode(ContentSpecNode::Sequence, retNode, optional);
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence, retNode, optional);
for (int j=1; j < counter; j++) {
- retNode = new ContentSpecNode(ContentSpecNode::Sequence,
+ retNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
retNode, optional, true, false);
}
}
@@ -744,7 +754,10 @@
void ComplexTypeInfo::resizeContentSpecOrgURI() {
unsigned int newSize = fContentSpecOrgURISize * 2;
- unsigned int* newContentSpecOrgURI = new unsigned int[newSize];
+ unsigned int* newContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate
+ (
+ newSize * sizeof(unsigned int)
+ ); //new unsigned int[newSize];
// Copy the existing values
unsigned int index = 0;
@@ -755,7 +768,7 @@
newContentSpecOrgURI[index] = 0;
// Delete the old array and udpate our members
- delete [] fContentSpecOrgURI;
+ fMemoryManager->deallocate(fContentSpecOrgURI); //delete [] fContentSpecOrgURI;
fContentSpecOrgURI = newContentSpecOrgURI;
fContentSpecOrgURISize = newSize;
}
1.12 +19 -14 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp
Index: ComplexTypeInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ComplexTypeInfo.hpp 5 Feb 2003 09:00:18 -0000 1.11
+++ ComplexTypeInfo.hpp 15 May 2003 18:57:27 -0000 1.12
@@ -74,7 +74,6 @@
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/RefHash2KeysTableOf.hpp>
#include <xercesc/util/RefVectorOf.hpp>
-#include <xercesc/util/Janitor.hpp>
#include <xercesc/framework/XMLElementDecl.hpp>
#include <xercesc/framework/XMLContentModel.hpp>
#include <xercesc/validators/schema/SchemaAttDef.hpp>
@@ -92,13 +91,13 @@
class XSDLocator;
-class VALIDATORS_EXPORT ComplexTypeInfo
+class VALIDATORS_EXPORT ComplexTypeInfo : public XMemory
{
public:
// -----------------------------------------------------------------------
// Public Constructors/Destructor
// -----------------------------------------------------------------------
- ComplexTypeInfo();
+ ComplexTypeInfo(MemoryManager* const manager);
~ComplexTypeInfo();
// -----------------------------------------------------------------------
@@ -213,6 +212,7 @@
// -----------------------------------------------------------------------
// Private data members
// -----------------------------------------------------------------------
+ bool fAnonymous;
bool fAbstract;
bool fAdoptContentSpec;
bool fAttWithTypeId;
@@ -241,7 +241,7 @@
unsigned int fUniqueURI;
unsigned int fContentSpecOrgURISize;
XSDLocator* fLocator;
- bool fAnonymous;
+ MemoryManager* fMemoryManager;
};
// ---------------------------------------------------------------------------
@@ -402,7 +402,10 @@
if(!fTypeLocalName) {
int index = XMLString::indexOf(fTypeName, chComma);
int length = XMLString::stringLen(fTypeName);
- XMLCh *tName = new XMLCh[length - index + 1];
+ XMLCh *tName = (XMLCh*) fMemoryManager->allocate
+ (
+ (length - index + 1) * sizeof(XMLCh)
+ ); //new XMLCh[length - index + 1];
XMLString::subString(tName, fTypeName, index + 1, length);
((ComplexTypeInfo *)this)->fTypeLocalName = tName;
}
@@ -414,7 +417,10 @@
{
if(!fTypeUri) {
int index = XMLString::indexOf(fTypeName, chComma);
- XMLCh *uri = new XMLCh[index + 1];
+ XMLCh *uri = (XMLCh*) fMemoryManager->allocate
+ (
+ (index + 1) * sizeof(XMLCh)
+ ); //new XMLCh[index + 1];
XMLString::subString(uri, fTypeName, 0, index);
((ComplexTypeInfo *)this)->fTypeUri = uri;
}
@@ -478,13 +484,12 @@
inline void ComplexTypeInfo::setTypeName(const XMLCh* const typeName) {
- delete [] fTypeName;
- delete [] fTypeLocalName;
- fTypeLocalName = 0;
- delete [] fTypeUri;
- fTypeUri = 0;
+ fMemoryManager->deallocate(fTypeName);//delete [] fTypeName;
+ fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName;
+ fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri;
+ fTypeLocalName = fTypeUri = 0;
- fTypeName = XMLString::replicate(typeName);
+ fTypeName = XMLString::replicate(typeName, fMemoryManager);
}
inline void
@@ -508,7 +513,7 @@
inline void ComplexTypeInfo::addElement(SchemaElementDecl* const elem) {
if (!fElements) {
- fElements = new RefVectorOf<SchemaElementDecl>(8, false);
+ fElements = new (fMemoryManager) RefVectorOf<SchemaElementDecl>(8, false);
}
else if (fElements->containsElement(elem)) {
return;
1.13 +8 -3 xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
Index: GeneralAttributeCheck.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- GeneralAttributeCheck.cpp 17 Jan 2003 15:35:57 -0000 1.12
+++ GeneralAttributeCheck.cpp 15 May 2003 18:57:27 -0000 1.13
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.13 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.12 2003/01/17 15:35:57 knoaman
* Fix for attribute checking of schema declarations.
*
@@ -211,8 +214,10 @@
// ---------------------------------------------------------------------------
// GeneralAttributeCheck: Constructors and Destructor
// ---------------------------------------------------------------------------
-GeneralAttributeCheck::GeneralAttributeCheck()
- : fIDRefList(0)
+GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager)
+ : fMemoryManager(manager)
+ , fIDRefList(0)
+ , fIDValidator(manager)
{
mapElements();
}
@@ -227,7 +232,7 @@
// ---------------------------------------------------------------------------
void GeneralAttributeCheck::setUpValidators() {
- DatatypeValidatorFactory dvFactory;
+ DatatypeValidatorFactory dvFactory(fMemoryManager);
dvFactory.expandRegistryToFullSchemaSet();
fNonNegIntDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER);
1.8 +6 -7 xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.hpp
Index: GeneralAttributeCheck.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- GeneralAttributeCheck.hpp 7 Mar 2003 18:17:54 -0000 1.7
+++ GeneralAttributeCheck.hpp 15 May 2003 18:57:27 -0000 1.8
@@ -69,11 +69,9 @@
// ---------------------------------------------------------------------------
// Includes
// ---------------------------------------------------------------------------
-#include <xercesc/util/RefVectorOf.hpp>
#include <xercesc/util/RefHashTableOf.hpp>
-#include <xercesc/util/RefHash2KeysTableOf.hpp>
-#include <xercesc/validators/datatype/IDDatatypeValidator.hpp>
#include <xercesc/util/ValueHashTableOf.hpp>
+#include <xercesc/validators/datatype/IDDatatypeValidator.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -84,7 +82,7 @@
class DOMElement;
-class VALIDATORS_EXPORT GeneralAttributeCheck
+class VALIDATORS_EXPORT GeneralAttributeCheck : public XMemory
{
public:
// -----------------------------------------------------------------------
@@ -219,7 +217,7 @@
// -----------------------------------------------------------------------
// Constructor/Destructor
// -----------------------------------------------------------------------
- GeneralAttributeCheck();
+ GeneralAttributeCheck(MemoryManager* const manager);
~GeneralAttributeCheck();
// -----------------------------------------------------------------------
@@ -285,8 +283,9 @@
static DatatypeValidator* fAnyURIDV;
static unsigned short fgElemAttTable[E_Count][A_Count];
static const XMLCh* fAttNames[A_Count];
- IDDatatypeValidator fIDValidator;
+ MemoryManager* fMemoryManager;
RefHashTableOf<XMLRefInfo>* fIDRefList;
+ IDDatatypeValidator fIDValidator;
};
1.3 +21 -8 xml-xerces/c/src/xercesc/validators/schema/NamespaceScope.cpp
Index: NamespaceScope.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/NamespaceScope.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NamespaceScope.cpp 4 Nov 2002 14:49:41 -0000 1.2
+++ NamespaceScope.cpp 15 May 2003 18:57:27 -0000 1.3
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.3 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.2 2002/11/04 14:49:41 tng
* C++ Namespace Support.
*
@@ -91,9 +94,13 @@
, fStackCapacity(8)
, fStackTop(0)
, fStack(0)
+ , fMemoryManager(XMLPlatformUtils::fgMemoryManager)
{
// Do an initial allocation of the stack and zero it out
- fStack = new StackElem*[fStackCapacity];
+ fStack = (StackElem**) fMemoryManager->allocate
+ (
+ fStackCapacity * sizeof(StackElem*)
+ );//new StackElem*[fStackCapacity];
memset(fStack, 0, fStackCapacity * sizeof(StackElem*));
}
@@ -110,12 +117,12 @@
break;
// Delete the row for this entry, then delete the row structure
- delete [] fStack[stackInd]->fMap;
+ fMemoryManager->deallocate(fStack[stackInd]->fMap);//delete [] fStack[stackInd]->fMap;
delete fStack[stackInd];
}
// Delete the stack array itself now
- delete [] fStack;
+ fMemoryManager->deallocate(fStack);//delete [] fStack;
}
@@ -131,7 +138,7 @@
// If this element has not been initialized yet, then initialize it
if (!fStack[fStackTop])
{
- fStack[fStackTop] = new StackElem;
+ fStack[fStackTop] = new (fMemoryManager) StackElem;
fStack[fStackTop]->fMapCapacity = 0;
fStack[fStackTop]->fMap = 0;
}
@@ -258,7 +265,10 @@
//
const unsigned int newCapacity = oldCap ?
(unsigned int)(oldCap * 1.25) : 16;
- PrefMapElem* newMap = new PrefMapElem[newCapacity];
+ PrefMapElem* newMap = (PrefMapElem*) fMemoryManager->allocate
+ (
+ newCapacity * sizeof(PrefMapElem)
+ );//new PrefMapElem[newCapacity];
//
// Copy over the old stuff. We DON'T have to zero out the new stuff
@@ -268,7 +278,7 @@
memcpy(newMap, toExpand->fMap, oldCap * sizeof(PrefMapElem));
// Delete the old map and store the new stuff
- delete [] toExpand->fMap;
+ fMemoryManager->deallocate(toExpand->fMap);//delete [] toExpand->fMap;
toExpand->fMap = newMap;
toExpand->fMapCapacity = newCapacity;
}
@@ -277,7 +287,10 @@
{
// Expand the capacity by 25% and allocate a new buffer
const unsigned int newCapacity = (unsigned int)(fStackCapacity * 1.25);
- StackElem** newStack = new StackElem*[newCapacity];
+ StackElem** newStack = (StackElem**) fMemoryManager->allocate
+ (
+ newCapacity * sizeof(StackElem*)
+ );//new StackElem*[newCapacity];
// Copy over the old stuff
memcpy(newStack, fStack, fStackCapacity * sizeof(StackElem*));
@@ -295,7 +308,7 @@
);
// Delete the old array and update our members
- delete [] fStack;
+ fMemoryManager->deallocate(fStack);//delete [] fStack;
fStack = newStack;
fStackCapacity = newCapacity;
}
1.4 +5 -5 xml-xerces/c/src/xercesc/validators/schema/NamespaceScope.hpp
Index: NamespaceScope.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/NamespaceScope.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NamespaceScope.hpp 7 Mar 2003 18:17:54 -0000 1.3
+++ NamespaceScope.hpp 15 May 2003 18:57:27 -0000 1.4
@@ -61,7 +61,6 @@
#if !defined(NAMESPACESCOPE_HPP)
#define NAMESPACESCOPE_HPP
-#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/StringPool.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -72,7 +71,7 @@
// at a particular instant in time.
//
-class VALIDATORS_EXPORT NamespaceScope
+class VALIDATORS_EXPORT NamespaceScope : public XMemory
{
public :
// -----------------------------------------------------------------------
@@ -90,13 +89,13 @@
// The fMapCapacity is how large fMap has grown so far. fMapCount
// is how many of them are valid right now.
// -----------------------------------------------------------------------
- struct PrefMapElem
+ struct PrefMapElem : public XMemory
{
unsigned int fPrefId;
unsigned int fURIId;
};
- struct StackElem
+ struct StackElem : public XMemory
{
PrefMapElem* fMap;
unsigned int fMapCapacity;
@@ -174,6 +173,7 @@
unsigned int fStackTop;
XMLStringPool fPrefixPool;
StackElem** fStack;
+ MemoryManager* fMemoryManager;
};
1.8 +15 -10 xml-xerces/c/src/xercesc/validators/schema/SchemaElementDecl.cpp
Index: SchemaElementDecl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaElementDecl.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SchemaElementDecl.cpp 29 Jan 2003 19:47:16 -0000 1.7
+++ SchemaElementDecl.cpp 15 May 2003 18:57:27 -0000 1.8
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.8 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.7 2003/01/29 19:47:16 gareth
* added DOMTypeInfo and some PSVI methods
*
@@ -151,9 +154,9 @@
// ---------------------------------------------------------------------------
// SchemaElementDecl: Constructors and Destructor
// ---------------------------------------------------------------------------
-SchemaElementDecl::SchemaElementDecl() :
-
- fModelType(Any)
+SchemaElementDecl::SchemaElementDecl(MemoryManager* const manager) :
+ XMLElementDecl(manager)
+ , fModelType(Any)
, fDatatypeValidator(0)
, fEnclosingScope(Grammar::TOP_LEVEL_SCOPE)
, fBlockSet(0)
@@ -180,8 +183,9 @@
, const int uriId
, const SchemaElementDecl::ModelTypes type
, const int enclosingScope
- ) :
- fModelType(type)
+ , MemoryManager* const manager) :
+ XMLElementDecl(manager)
+ , fModelType(type)
, fDatatypeValidator(0)
, fEnclosingScope(enclosingScope)
, fBlockSet(0)
@@ -207,8 +211,9 @@
SchemaElementDecl::SchemaElementDecl(const QName* const elementName
, const SchemaElementDecl::ModelTypes type
, const int enclosingScope
- ) :
- fModelType(type)
+ , MemoryManager* const manager) :
+ XMLElementDecl(manager)
+ , fModelType(type)
, fDatatypeValidator(0)
, fEnclosingScope(enclosingScope)
, fBlockSet(0)
@@ -233,7 +238,7 @@
SchemaElementDecl::~SchemaElementDecl()
{
- delete [] fDefaultValue;
+ getMemoryManager()->deallocate(fDefaultValue);//delete [] fDefaultValue;
delete fAttDefs;
delete fIdentityConstraints;
delete fAttWildCard;
@@ -263,7 +268,7 @@
// If no att list exist yet, then create one
if (!fAttDefs) {
// Use a hash modulus of 29 and tell it owns its elements
- ((SchemaElementDecl*)this)->fAttDefs = new RefHash2KeysTableOf<SchemaAttDef>(29, true);
+ ((SchemaElementDecl*)this)->fAttDefs = new (getMemoryManager()) RefHash2KeysTableOf<SchemaAttDef>(29, true);
}
retVal = fAttDefs->get(baseName, uriId);
@@ -272,7 +277,7 @@
if (!retVal)
{
// And add a default attribute for this name
- retVal = new SchemaAttDef(prefix, baseName, uriId);
+ retVal = new (getMemoryManager()) SchemaAttDef(prefix, baseName, uriId);
retVal->setElemId(getId());
fAttDefs->put((void*)retVal->getAttName()->getLocalPart(), uriId, retVal);
1.9 +16 -12 xml-xerces/c/src/xercesc/validators/schema/SchemaElementDecl.hpp
Index: SchemaElementDecl.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaElementDecl.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SchemaElementDecl.hpp 29 Jan 2003 19:47:16 -0000 1.8
+++ SchemaElementDecl.hpp 15 May 2003 18:57:27 -0000 1.9
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.9 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.8 2003/01/29 19:47:16 gareth
* added DOMTypeInfo and some PSVI methods
*
@@ -179,22 +182,23 @@
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
- SchemaElementDecl();
-
+ SchemaElementDecl(MemoryManager* const manager);
SchemaElementDecl
(
- const XMLCh* const prefix
- , const XMLCh* const localPart
- , const int uriId
- , const ModelTypes modelType = Any
- , const int enclosingScope = Grammar::TOP_LEVEL_SCOPE
+ const XMLCh* const prefix
+ , const XMLCh* const localPart
+ , const int uriId
+ , const ModelTypes modelType// = Any
+ , const int enclosingScope// = Grammar::TOP_LEVEL_SCOPE
+ , MemoryManager* const manager
);
SchemaElementDecl
(
- const QName* const elementName
- , const ModelTypes modelType = Any
- , const int enclosingScope = Grammar::TOP_LEVEL_SCOPE
+ const QName* const elementName
+ , const ModelTypes modelType// = Any
+ , const int enclosingScope// = Grammar::TOP_LEVEL_SCOPE
+ , MemoryManager* const manager
);
~SchemaElementDecl();
@@ -783,10 +787,10 @@
inline void SchemaElementDecl::setDefaultValue(const XMLCh* const value)
{
if (fDefaultValue) {
- delete[] fDefaultValue;
+ getMemoryManager()->deallocate(fDefaultValue);//delete[] fDefaultValue;
}
- fDefaultValue = XMLString::replicate(value);
+ fDefaultValue = XMLString::replicate(value, getMemoryManager());
}
inline void
1.4 +29 -8 xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.cpp
Index: SchemaGrammar.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SchemaGrammar.cpp 4 Nov 2002 14:49:41 -0000 1.3
+++ SchemaGrammar.cpp 15 May 2003 18:57:27 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.4 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.3 2002/11/04 14:49:41 tng
* C++ Namespace Support.
*
@@ -117,7 +120,7 @@
// ---------------------------------------------------------------------------
// SchemaGrammar: Constructors and Destructor
// ---------------------------------------------------------------------------
-SchemaGrammar::SchemaGrammar() :
+SchemaGrammar::SchemaGrammar(MemoryManager* const manager) :
fTargetNamespace(0)
, fElemDeclPool(0)
, fElemNonDeclPool(0)
@@ -130,7 +133,9 @@
, fNamespaceScope(0)
, fValidSubstitutionGroups(0)
, fIDRefList(0)
+ , fMemoryManager(manager)
, fValidated(false)
+ , fDatatypeRegistry(manager)
{
//
// Init all the pool members.
@@ -138,13 +143,13 @@
// <TBD> Investigate what the optimum values would be for the various
// pools.
//
- fElemDeclPool = new RefHash3KeysIdPool<SchemaElementDecl>(109);
+ fElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(109);
try {
- fElemNonDeclPool = new RefHash3KeysIdPool<SchemaElementDecl>(29);
- fGroupElemDeclPool = new RefHash3KeysIdPool<SchemaElementDecl>(109, false);
+ fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(29);
+ fGroupElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(109, false);
fNotationDeclPool = new NameIdPool<XMLNotationDecl>(109);
- fIDRefList = new RefHashTableOf<XMLRefInfo>(29);
+ fIDRefList = new (fMemoryManager) RefHashTableOf<XMLRefInfo>(29);
fDatatypeRegistry.expandRegistryToFullSchemaSet();
//
@@ -183,7 +188,15 @@
// if not, then add this in
if (!retVal)
{
- retVal = new SchemaElementDecl(prefixName, baseName, uriId, SchemaElementDecl::Any);
+ retVal = new (fMemoryManager) SchemaElementDecl
+ (
+ prefixName
+ , baseName
+ , uriId
+ , SchemaElementDecl::Any
+ , Grammar::TOP_LEVEL_SCOPE
+ , fMemoryManager
+ );
const unsigned int elemId = fElemNonDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal);
retVal->setId(elemId);
wasAdded = true;
@@ -202,7 +215,15 @@
, unsigned int scope
, const bool notDeclared)
{
- SchemaElementDecl* retVal = new SchemaElementDecl(prefixName, baseName, uriId, SchemaElementDecl::Any);
+ SchemaElementDecl* retVal = new (fMemoryManager) SchemaElementDecl
+ (
+ prefixName
+ , baseName
+ , uriId
+ , SchemaElementDecl::Any
+ , Grammar::TOP_LEVEL_SCOPE
+ , fMemoryManager
+ );
const unsigned int elemId = (notDeclared) ? fElemNonDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal)
: fElemDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal);
retVal->setId(elemId);
@@ -228,7 +249,7 @@
delete fElemNonDeclPool;
delete fGroupElemDeclPool;
delete fNotationDeclPool;
- delete [] fTargetNamespace;
+ fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace;
delete fAttributeDeclRegistry;
delete fComplexTypeRegistry;
delete fGroupInfoRegistry;
1.6 +11 -5 xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.hpp
Index: SchemaGrammar.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SchemaGrammar.hpp 4 Nov 2002 14:49:41 -0000 1.5
+++ SchemaGrammar.hpp 15 May 2003 18:57:27 -0000 1.6
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.6 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.5 2002/11/04 14:49:41 tng
* C++ Namespace Support.
*
@@ -159,7 +162,7 @@
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
- SchemaGrammar();
+ SchemaGrammar(MemoryManager* const manager);
virtual ~SchemaGrammar();
// -----------------------------------------------------------------------
@@ -351,11 +354,12 @@
RefHashTableOf<ComplexTypeInfo>* fComplexTypeRegistry;
RefHashTableOf<XercesGroupInfo>* fGroupInfoRegistry;
RefHashTableOf<XercesAttGroupInfo>* fAttGroupInfoRegistry;
- DatatypeValidatorFactory fDatatypeRegistry;
NamespaceScope* fNamespaceScope;
RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups;
RefHashTableOf<XMLRefInfo>* fIDRefList;
+ MemoryManager* fMemoryManager;
bool fValidated;
+ DatatypeValidatorFactory fDatatypeRegistry;
};
@@ -415,9 +419,11 @@
// -----------------------------------------------------------------------
// Setter methods
// -----------------------------------------------------------------------
-inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) {
- delete [] fTargetNamespace;
- fTargetNamespace = XMLString::replicate(targetNamespace);
+inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace)
+{
+ if (fTargetNamespace)
+ fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace;
+ fTargetNamespace = XMLString::replicate(targetNamespace, fMemoryManager);
}
inline void
1.13 +2 -2 xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.hpp
Index: SchemaInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.hpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SchemaInfo.hpp 17 Dec 2002 17:17:58 -0000 1.12
+++ SchemaInfo.hpp 15 May 2003 18:57:27 -0000 1.13
@@ -83,7 +83,7 @@
XERCES_CPP_NAMESPACE_BEGIN
-class VALIDATORS_EXPORT SchemaInfo
+class VALIDATORS_EXPORT SchemaInfo : public XMemory
{
public:
1.29 +6 -1 xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp
Index: SchemaValidator.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- SchemaValidator.cpp 6 Feb 2003 13:51:55 -0000 1.28
+++ SchemaValidator.cpp 15 May 2003 18:57:27 -0000 1.29
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.29 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.28 2003/02/06 13:51:55 gareth
* fixed bug with multiple attributes being validated by the same union type.
*
@@ -251,9 +254,11 @@
// ---------------------------------------------------------------------------
// SchemaValidator: Constructors and Destructor
// ---------------------------------------------------------------------------
-SchemaValidator::SchemaValidator(XMLErrorReporter* const errReporter) :
+SchemaValidator::SchemaValidator( XMLErrorReporter* const errReporter
+ , MemoryManager* const manager) :
XMLValidator(errReporter)
+ , fMemoryManager(manager)
, fGrammarResolver(0)
, fSchemaGrammar(0)
, fTrailing(false)
1.14 +24 -18 xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.hpp
Index: SchemaValidator.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- SchemaValidator.hpp 20 Jan 2003 19:04:48 -0000 1.13
+++ SchemaValidator.hpp 15 May 2003 18:57:27 -0000 1.14
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-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.14 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.13 2003/01/20 19:04:48 knoaman
* Fix for particle derivation checking.
*
@@ -135,19 +138,19 @@
#if !defined(SCHEMAVALIDATOR_HPP)
#define SCHEMAVALIDATOR_HPP
-#include <xercesc/framework/XMLBuffer.hpp>
#include <xercesc/framework/XMLValidator.hpp>
-#include <xercesc/util/RefVectorOf.hpp>
+#include <xercesc/framework/XMLBuffer.hpp>
#include <xercesc/util/ValueStackOf.hpp>
-#include <xercesc/validators/common/GrammarResolver.hpp>
#include <xercesc/validators/common/ContentSpecNode.hpp>
-#include <xercesc/validators/datatype/DatatypeValidator.hpp>
-#include <xercesc/validators/schema/SchemaElementDecl.hpp>
#include <xercesc/validators/schema/SchemaGrammar.hpp>
#include <xercesc/validators/schema/XSDErrorReporter.hpp>
XERCES_CPP_NAMESPACE_BEGIN
+class GrammarResolver;
+class DatatypeValidator;
+class SchemaElementDecl;
+
//
// This is a derivative of the abstract validator interface. This class
// implements a validator that supports standard XML Schema semantics.
@@ -160,7 +163,11 @@
// -----------------------------------------------------------------------
// Constructors and Destructor
// -----------------------------------------------------------------------
- SchemaValidator(XMLErrorReporter* const errReporter = 0);
+ SchemaValidator
+ (
+ XMLErrorReporter* const errReporter// = 0
+ , MemoryManager* const manager
+ );
virtual ~SchemaValidator();
// -----------------------------------------------------------------------
@@ -368,17 +375,16 @@
// fTypeStack
// Stack of complex type declarations.
// -----------------------------------------------------------------------
- SchemaGrammar* fSchemaGrammar;
- GrammarResolver* fGrammarResolver;
- QName* fXsiType;
- bool fNil;
-
- DatatypeValidator* fXsiTypeValidator;
-
- XMLBuffer fDatatypeBuffer;
- bool fTrailing;
- bool fSeenId;
- XSDErrorReporter fSchemaErrorReporter;
+ MemoryManager* fMemoryManager;
+ SchemaGrammar* fSchemaGrammar;
+ GrammarResolver* fGrammarResolver;
+ QName* fXsiType;
+ bool fNil;
+ DatatypeValidator* fXsiTypeValidator;
+ XMLBuffer fDatatypeBuffer;
+ bool fTrailing;
+ bool fSeenId;
+ XSDErrorReporter fSchemaErrorReporter;
ValueStackOf<ComplexTypeInfo*>* fTypeStack;
};
1.71 +107 -96 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp
Index: TraverseSchema.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- TraverseSchema.cpp 14 May 2003 14:42:34 -0000 1.70
+++ TraverseSchema.cpp 15 May 2003 18:57:27 -0000 1.71
@@ -195,7 +195,8 @@
, XMLScanner* const xmlScanner
, const XMLCh* const schemaURL
, XMLEntityHandler* const entityHandler
- , XMLErrorReporter* const errorReporter)
+ , XMLErrorReporter* const errorReporter
+ , MemoryManager* const manager)
: fFullConstraintChecking(false)
, fTargetNSURI(-1)
, fEmptyNamespaceURI(-1)
@@ -238,6 +239,8 @@
, fParser(0)
, fPreprocessedNodes(0)
, fLocator(0)
+ , fMemoryManager(manager)
+ , fAttributeCheck(manager)
{
try {
@@ -318,7 +321,7 @@
if (fComplexTypeRegistry == 0 ) {
- fComplexTypeRegistry = new RefHashTableOf<ComplexTypeInfo>(29);
+ fComplexTypeRegistry = new (fMemoryManager) RefHashTableOf<ComplexTypeInfo>(29);
fSchemaGrammar->setComplexTypeRegistry(fComplexTypeRegistry);
}
@@ -326,7 +329,7 @@
if (fGroupRegistry == 0 ) {
- fGroupRegistry = new RefHashTableOf<XercesGroupInfo>(13);
+ fGroupRegistry = new (fMemoryManager) RefHashTableOf<XercesGroupInfo>(13);
fSchemaGrammar->setGroupInfoRegistry(fGroupRegistry);
}
@@ -334,7 +337,7 @@
if (fAttGroupRegistry == 0 ) {
- fAttGroupRegistry = new RefHashTableOf<XercesAttGroupInfo>(13);
+ fAttGroupRegistry = new (fMemoryManager) RefHashTableOf<XercesAttGroupInfo>(13);
fSchemaGrammar->setAttGroupInfoRegistry(fAttGroupRegistry);
}
@@ -342,7 +345,7 @@
if (fAttributeDeclRegistry == 0) {
- fAttributeDeclRegistry = new RefHashTableOf<XMLAttDef>(29);
+ fAttributeDeclRegistry = new (fMemoryManager) RefHashTableOf<XMLAttDef>(29);
fSchemaGrammar->setAttributeDeclRegistry(fAttributeDeclRegistry);
}
@@ -350,7 +353,7 @@
if (fNamespaceScope == 0) {
- fNamespaceScope = new NamespaceScope();
+ fNamespaceScope = new (fMemoryManager) NamespaceScope();
fNamespaceScope->reset(fEmptyNamespaceURI);
fSchemaGrammar->setNamespaceScope(fNamespaceScope);
}
@@ -359,7 +362,7 @@
if (!fValidSubstitutionGroups) {
- fValidSubstitutionGroups = new RefHash2KeysTableOf<ElemVector>(29);
+ fValidSubstitutionGroups = new (fMemoryManager) RefHash2KeysTableOf<ElemVector>(29);
fSchemaGrammar->setValidSubstitutionGroups(fValidSubstitutionGroups);
}
@@ -375,7 +378,7 @@
fAttributeCheck.setIDRefList(fSchemaGrammar->getIDRefList());
// Save current schema info
- SchemaInfo* currInfo = new SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(schemaURL),
fTargetNSURIString, schemaRoot);
@@ -513,7 +516,7 @@
// Parse input source
// ------------------------------------------------------------------
if (!fParser)
- fParser = new XSDDOMParser;
+ fParser = new (fMemoryManager) XSDDOMParser;
fParser->setValidationScheme(XercesDOMParser::Val_Never);
fParser->setDoNamespaces(true);
@@ -565,7 +568,7 @@
// --------------------------------------------------------
SchemaInfo* saveInfo = fSchemaInfo;
- fSchemaInfo = new SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(includeURL),
fTargetNSURIString, root);
@@ -691,7 +694,7 @@
// Parse input source
// ------------------------------------------------------------------
if (!fParser)
- fParser = new XSDDOMParser;
+ fParser = new (fMemoryManager) XSDDOMParser;
fParser->setValidationScheme(XercesDOMParser::Val_Never);
fParser->setDoNamespaces(true);
@@ -735,7 +738,7 @@
// Preprocess new schema
// --------------------------------------------------------
SchemaInfo* saveInfo = fSchemaInfo;
- fSchemaGrammar = new SchemaGrammar();
+ fSchemaGrammar = new (fMemoryManager) SchemaGrammar(fMemoryManager);
preprocessSchema(root, importURL);
fPreprocessedNodes->put((void*) elem, fSchemaInfo);
@@ -804,7 +807,7 @@
}
if (!fRedefineComponents) {
- fRedefineComponents = new RefHash2KeysTableOf<XMLCh>(13, false);
+ fRedefineComponents = new (fMemoryManager) RefHash2KeysTableOf<XMLCh>(13, false);
}
SchemaInfo* redefinedInfo = fSchemaInfo;
@@ -882,7 +885,7 @@
continue;
}
- contentSpecNode = new ContentSpecNode(eltQName, false);
+ contentSpecNode = new (fMemoryManager) ContentSpecNode(eltQName, false);
seeParticle = true;
}
else if (XMLString::equals(childName, SchemaSymbols::fgELT_GROUP)) {
@@ -905,7 +908,7 @@
continue;
}
- contentSpecNode = new ContentSpecNode(*contentSpecNode);
+ contentSpecNode = new (fMemoryManager) ContentSpecNode(*contentSpecNode);
seeParticle = true;
}
else if (XMLString::equals(childName, SchemaSymbols::fgELT_CHOICE)) {
@@ -942,13 +945,13 @@
right = contentSpecNode;
}
else {
- left = new ContentSpecNode((ContentSpecNode::NodeTypes) modelGroupType, left, right);
+ left = new (fMemoryManager) ContentSpecNode((ContentSpecNode::NodeTypes) modelGroupType, left, right);
right = contentSpecNode;
}
}
if (hadContent) {
- left = new ContentSpecNode((ContentSpecNode::NodeTypes) modelGroupType, left, right);
+ left = new (fMemoryManager) ContentSpecNode((ContentSpecNode::NodeTypes) modelGroupType, left, right);
}
return left;
@@ -1163,7 +1166,7 @@
// ------------------------------------------------------------------
// Register the type
// ------------------------------------------------------------------
- typeInfo = new ComplexTypeInfo();
+ typeInfo = new (fMemoryManager) ComplexTypeInfo(fMemoryManager);
if(isAnonymous) {
typeInfo->setAnonymous();
}
@@ -1366,7 +1369,7 @@
ContentSpecNode* specNode = 0;
XercesGroupInfo* saveGroupInfo = fCurrentGroupInfo;
- groupInfo = new XercesGroupInfo();
+ groupInfo = new (fMemoryManager) XercesGroupInfo(fMemoryManager);
fCurrentGroupStack->addElement(nameIndex);
fCurrentGroupInfo = groupInfo;
@@ -1512,7 +1515,7 @@
// Process contents of global attributeGroups
// ------------------------------------------------------------------
XercesAttGroupInfo* saveAttGroupInfo = fCurrentAttGroupInfo;
- XercesAttGroupInfo* attGroupInfo = new XercesAttGroupInfo();
+ XercesAttGroupInfo* attGroupInfo = new (fMemoryManager) XercesAttGroupInfo(fMemoryManager);
fDeclStack->addElement(elem);
fCurrentAttGroupInfo = attGroupInfo;
@@ -1671,14 +1674,14 @@
if ((!nameSpace || !*nameSpace)
|| XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDANY)) {
- retSpecNode = new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
+ retSpecNode = new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
fEmptyNamespaceURI),
false);
retSpecNode->setType(anyType);
}
else if (XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDOTHER)) {
- retSpecNode = new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
+ retSpecNode = new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
fTargetNSURI),
false);
@@ -1720,7 +1723,7 @@
uriList.addElement(uriIndex);
- firstNode = new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
+ firstNode = new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
uriIndex),
false);
@@ -1730,7 +1733,7 @@
secondNode = firstNode;
}
else {
- secondNode = new ContentSpecNode(ContentSpecNode::Choice, secondNode, firstNode);
+ secondNode = new (fMemoryManager) ContentSpecNode(ContentSpecNode::Choice, secondNode, firstNode);
}
}
@@ -1787,7 +1790,7 @@
continue;
}
- contentSpecNode = new ContentSpecNode(eltQName, false);
+ contentSpecNode = new (fMemoryManager) ContentSpecNode(eltQName, false);
checkMinMax(contentSpecNode, child, All_Element);
}
else {
@@ -1805,13 +1808,13 @@
right = contentSpecNode;
}
else {
- left = new ContentSpecNode(ContentSpecNode::All, left, right);
+ left = new (fMemoryManager) ContentSpecNode(ContentSpecNode::All, left, right);
right = contentSpecNode;
}
}
if (hadContent) {
- left = new ContentSpecNode(ContentSpecNode::All, left, right);
+ left = new (fMemoryManager) ContentSpecNode(ContentSpecNode::All, left, right);
}
return left;
@@ -2114,7 +2117,7 @@
}
// create SchemaAttDef
- SchemaAttDef* attDef = new SchemaAttDef(XMLUni::fgZeroLenString, name, uriIndex, attType);
+ SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, name, uriIndex, attType);
attDef->setDatatypeValidator(dv);
@@ -2209,7 +2212,7 @@
if (topLevel) {
if (fSchemaGrammar->getElemDecl(fTargetNSURI, name, 0, Grammar::TOP_LEVEL_SCOPE) != 0) {
- return new QName(name, fTargetNSURI);
+ return new (fMemoryManager) QName(name, fTargetNSURI);
}
}
@@ -2450,20 +2453,20 @@
subsElements = aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI);
if (subsElements) {
- subsElements = new ValueVectorOf<SchemaElementDecl*>(*subsElements);
+ subsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*subsElements);
fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements);
}
else if (fSchemaInfo->circularImportExist(subsElemURI)) {
aGrammar->getValidSubstitutionGroups()->put(
- subsElemBaseName, subsElemURI, new ValueVectorOf<SchemaElementDecl*>(8));
+ subsElemBaseName, subsElemURI, new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(8));
}
}
}
if (!subsElements) {
- subsElements = new ValueVectorOf<SchemaElementDecl*>(8);
+ subsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(8);
fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements);
}
@@ -2585,7 +2588,7 @@
elemDecl->setContentSpec(contentSpecNode);
if (isAnyType) {
- elemDecl->setAttWildCard(new SchemaAttDef(XMLUni::fgZeroLenString,
+ elemDecl->setAttWildCard(new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
fEmptyNamespaceURI, XMLAttDef::Any_Any,
XMLAttDef::ProcessContents_Lax));
@@ -2607,7 +2610,7 @@
else {
if (!icNodes) {
- icNodes = new ValueVectorOf<DOMElement*>(8);
+ icNodes = new (fMemoryManager) ValueVectorOf<DOMElement*>(8);
}
icNodes->addElement(ic);
@@ -2621,9 +2624,9 @@
if (!fIC_ElementsNS) {
- fIC_ElementsNS = new RefHashTableOf<ElemVector>(13);
- fIC_NamespaceDepthNS = new RefHashTableOf<ValueVectorOf<unsigned int> >(13);
- fIC_NodeListNS = new RefHashTableOf<ValueVectorOf<DOMElement*> >(29, true, new HashPtr());
+ fIC_ElementsNS = new (fMemoryManager) RefHashTableOf<ElemVector>(13);
+ fIC_NamespaceDepthNS = new (fMemoryManager) RefHashTableOf<ValueVectorOf<unsigned int> >(13);
+ fIC_NodeListNS = new (fMemoryManager) RefHashTableOf<ValueVectorOf<DOMElement*> >(29, true, new (fMemoryManager) HashPtr());
}
if (fIC_ElementsNS->containsKey(fTargetNSURIString)) {
@@ -2634,8 +2637,8 @@
if (!fIC_Elements) {
- fIC_Elements = new ValueVectorOf<SchemaElementDecl*>(8);
- fIC_NamespaceDepth = new ValueVectorOf<unsigned int>(8);
+ fIC_Elements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(8);
+ fIC_NamespaceDepth = new (fMemoryManager) ValueVectorOf<unsigned int>(8);
fIC_ElementsNS->put((void*) fTargetNSURIString, fIC_Elements);
fIC_NamespaceDepthNS->put((void*) fTargetNSURIString, fIC_NamespaceDepth);
}
@@ -2646,7 +2649,7 @@
}
}
- return new QName(*elemDecl->getElementName());
+ return new (fMemoryManager) QName(*elemDecl->getElementName());
}
const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem) {
@@ -2904,7 +2907,7 @@
fAttributeCheck.checkAttributes(content, scope, this);
if (facets == 0) {
- facets = new RefHashTableOf<KVStringPair>(29, true);
+ facets = new (fMemoryManager) RefHashTableOf<KVStringPair>(29, true);
}
if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) {
@@ -2914,7 +2917,7 @@
// to get the qualified name first before adding it to the
// enum buffer
if (!enums) {
- enums = new RefArrayVectorOf<XMLCh>(8, true);
+ enums = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true);
}
if (baseValidator->getType() == DatatypeValidator::NOTATION) {
@@ -2965,7 +2968,7 @@
else {
const XMLCh* facetStr = fStringPool->getValueForId(fStringPool->addOrFind(facetName));
- facets->put((void*) facetStr, new KVStringPair(facetStr, attValue));
+ facets->put((void*) facetStr, new (fMemoryManager) KVStringPair(facetStr, attValue));
checkFixedFacet(content, facetStr, baseValidator, fixedFlag);
}
}
@@ -2982,14 +2985,14 @@
if (!pattern.isEmpty()) {
facets->put((void*) SchemaSymbols::fgELT_PATTERN,
- new KVStringPair(SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer()));
+ new (fMemoryManager) KVStringPair(SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer()));
}
if (fixedFlag) {
XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10);
facets->put((void*) SchemaSymbols::fgATT_FIXED,
- new KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr));
+ new (fMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr));
}
try {
@@ -3026,7 +3029,7 @@
int size = 1;
const XMLCh* baseTypeName = getElementAttValue(contentElem, SchemaSymbols::fgATT_MEMBERTYPES);
DatatypeValidator* baseValidator = 0;
- RefVectorOf<DatatypeValidator>* validators = new RefVectorOf<DatatypeValidator>(4, false);
+ RefVectorOf<DatatypeValidator>* validators = new (fMemoryManager) RefVectorOf<DatatypeValidator>(4, false);
Janitor<DVRefVector> janValidators(validators);
DOMElement* content = 0;
@@ -3343,13 +3346,13 @@
const XMLCh* attValue = content->getAttribute(SchemaSymbols::fgATT_VALUE);
if (facets == 0) {
- facets = new RefHashTableOf<KVStringPair>(29, true);
+ facets = new (fMemoryManager) RefHashTableOf<KVStringPair>(29, true);
}
if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) {
if (!enums) {
- enums = new RefArrayVectorOf<XMLCh>(8, true);
+ enums = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true);
}
enums->addElement(XMLString::replicate(attValue));
@@ -3377,7 +3380,7 @@
const XMLCh* facetNameStr =
fStringPool->getValueForId(fStringPool->addOrFind(facetName));
- facets->put((void*) facetNameStr, new KVStringPair(facetNameStr, attValue));
+ facets->put((void*) facetNameStr, new (fMemoryManager) KVStringPair(facetNameStr, attValue));
checkFixedFacet(content, facetNameStr, typeInfo->getBaseDatatypeValidator(), fixedFlag);
}
}
@@ -3392,7 +3395,7 @@
facets->put
(
(void*) SchemaSymbols::fgELT_PATTERN,
- new KVStringPair
+ new (fMemoryManager) KVStringPair
(
SchemaSymbols::fgELT_PATTERN,
pattern.getRawBuffer()
@@ -3404,7 +3407,7 @@
XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10);
facets->put((void*) SchemaSymbols::fgATT_FIXED,
- new KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr));
+ new (fMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr));
}
try {
@@ -3707,7 +3710,7 @@
// ------------------------------------------------------------------
// Create wildcard attribute
// ------------------------------------------------------------------
- SchemaAttDef* attDef = new SchemaAttDef(XMLUni::fgZeroLenString,
+ SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
uriIndex, attType, attDefType);
@@ -3751,7 +3754,7 @@
if (!fIdentityConstraintNames) {
- fIdentityConstraintNames = new RefHash2KeysTableOf<IdentityConstraint>(29, false);
+ fIdentityConstraintNames = new (fMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, false);
}
if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) {
@@ -3760,7 +3763,7 @@
return;
}
- IC_Key* icKey = new IC_Key(name, elemDecl->getBaseName());
+ IC_Key* icKey = new (fMemoryManager) IC_Key(name, elemDecl->getBaseName(), fMemoryManager);
Janitor<IC_Key> janKey(icKey);
fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKey);
@@ -3812,7 +3815,7 @@
}
if (!fIdentityConstraintNames) {
- fIdentityConstraintNames = new RefHash2KeysTableOf<IdentityConstraint>(29, false);
+ fIdentityConstraintNames = new (fMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, false);
}
if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) {
@@ -3821,7 +3824,7 @@
return;
}
- IC_Unique* icUnique = new IC_Unique(name, elemDecl->getBaseName());
+ IC_Unique* icUnique = new (fMemoryManager) IC_Unique(name, elemDecl->getBaseName(), fMemoryManager);
Janitor<IC_Unique> janUnique(icUnique);
fIdentityConstraintNames->put((void*) name, fTargetNSURI, icUnique);
@@ -3895,7 +3898,7 @@
return;
}
- IC_KeyRef* icKeyRef = new IC_KeyRef(name, elemDecl->getBaseName(), icKey);
+ IC_KeyRef* icKeyRef = new (fMemoryManager) IC_KeyRef(name, elemDecl->getBaseName(), icKey, fMemoryManager);
Janitor<IC_KeyRef> janKeyRef(icKeyRef);
fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKeyRef);
@@ -3992,8 +3995,8 @@
// ------------------------------------------------------------------
try {
- XercesXPath* sXPath = new XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI, true);
- IC_Selector* icSelector = new IC_Selector(sXPath, ic);
+ XercesXPath* sXPath = new (fMemoryManager) XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI, true);
+ IC_Selector* icSelector = new (fMemoryManager) IC_Selector(sXPath, ic);
ic->setSelector(icSelector);
}
catch (const XPathException& e) {
@@ -4044,8 +4047,8 @@
try {
- XercesXPath* fieldXPath = new XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI);
- IC_Field* icField = new IC_Field(fieldXPath, ic);
+ XercesXPath* fieldXPath = new (fMemoryManager) XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI);
+ IC_Field* icField = new (fMemoryManager) IC_Field(fieldXPath, ic);
ic->addField(icField);
}
catch (const XPathException& e) {
@@ -4497,7 +4500,7 @@
const XMLCh* prefix = getPrefix(refName);
const XMLCh* localPart = getLocalPart(refName);
const XMLCh* uriStr = resolvePrefixToURI(elem, prefix);
- QName* eltName = new QName(prefix , localPart, uriStr != 0
+ QName* eltName = new (fMemoryManager) QName(prefix , localPart, uriStr != 0
? fURIStringPool->addOrFind(uriStr)
: fEmptyNamespaceURI);
@@ -5197,10 +5200,15 @@
}
const XMLCh* prefix = getPrefix(name);
- SchemaElementDecl* elemDecl =
- new SchemaElementDecl(prefix, name, uriIndex,
- (SchemaElementDecl::ModelTypes) elemType,
- enclosingScope);
+ SchemaElementDecl* elemDecl = new (fMemoryManager) SchemaElementDecl
+ (
+ prefix
+ , name
+ , uriIndex
+ , (SchemaElementDecl::ModelTypes) elemType
+ , enclosingScope
+ , fMemoryManager
+ );
elemDecl->setFinalSet(finalSet);
elemDecl->setBlockSet(blockSet);
@@ -5352,7 +5360,7 @@
bool required = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_REQUIRED);
bool prohibited = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_PROHIBITED);
QName* attQName = refAttDef->getAttName();
- SchemaAttDef* attDef = new SchemaAttDef(attQName->getPrefix(),
+ SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef(attQName->getPrefix(),
attQName->getLocalPart(),
attQName->getURI(),
refAttValue,
@@ -5598,7 +5606,7 @@
int contentContext = specNode->hasAllContent() ? Group_Ref_With_All : Not_All_Context;
- specNode = new ContentSpecNode(*specNode);
+ specNode = new (fMemoryManager) ContentSpecNode(*specNode);
checkMinMax(specNode, childElem, contentContext);
}
}
@@ -5665,7 +5673,7 @@
if (!specNode) {
if (baseSpecNode) {
- specNode = new ContentSpecNode(*baseSpecNode);
+ specNode = new (fMemoryManager) ContentSpecNode(*baseSpecNode);
typeInfo->setContentSpec(specNode);
typeInfo->setAdoptContentSpec(true);
}
@@ -5688,8 +5696,8 @@
typeInfo->setAdoptContentSpec(false);
typeInfo->setContentSpec(
- new ContentSpecNode(ContentSpecNode::Sequence,
- new ContentSpecNode(*baseSpecNode),
+ new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence,
+ new (fMemoryManager) ContentSpecNode(*baseSpecNode),
specNode));
typeInfo->setAdoptContentSpec(true);
}
@@ -5704,7 +5712,7 @@
// -------------------------------------------------------------
if (isBaseAnyType && typeDerivedBy == SchemaSymbols::XSD_EXTENSION) {
- ContentSpecNode* anySpecNode = new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
+ ContentSpecNode* anySpecNode = new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
fEmptyNamespaceURI),
false);
@@ -5720,7 +5728,7 @@
else {
typeInfo->setAdoptContentSpec(false);
- typeInfo->setContentSpec(new ContentSpecNode(ContentSpecNode::Sequence, anySpecNode, specNode));
+ typeInfo->setContentSpec(new (fMemoryManager) ContentSpecNode(ContentSpecNode::Sequence, anySpecNode, specNode));
typeInfo->setAdoptContentSpec(true);
if (!isMixed) {
@@ -5740,7 +5748,7 @@
else {
// add #PCDATA leaf and set its minOccurs to 0
ContentSpecNode* pcdataNode =
- new ContentSpecNode(new QName(XMLUni::fgZeroLenString,
+ new (fMemoryManager) ContentSpecNode(new (fMemoryManager) QName(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
XMLElementDecl::fgPCDataElemId),
false);
@@ -6019,7 +6027,7 @@
if (!attGroupWildCard) {
- attGroupWildCard = new SchemaAttDef(attGroupInfo->anyAttributeAt(0));
+ attGroupWildCard = new (fMemoryManager) SchemaAttDef(attGroupInfo->anyAttributeAt(0));
for (unsigned int i= 1; i < anyAttCount; i++) {
attWildCardIntersection(attGroupWildCard, attGroupInfo->anyAttributeAt(i));
@@ -6032,7 +6040,7 @@
attWildCardIntersection(completeWildCard, attGroupWildCard);
}
else {
- completeWildCard = new SchemaAttDef(attGroupWildCard);
+ completeWildCard = new (fMemoryManager) SchemaAttDef(attGroupWildCard);
janCompleteWildCard.reset(completeWildCard);
}
}
@@ -6062,7 +6070,7 @@
if (isBaseAnyType) {
- baseAttWildCard = new SchemaAttDef(XMLUni::fgZeroLenString,
+ baseAttWildCard = new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString,
XMLUni::fgZeroLenString,
fEmptyNamespaceURI, XMLAttDef::Any_Any,
XMLAttDef::ProcessContents_Lax);
@@ -6098,7 +6106,7 @@
}
else {
- SchemaAttDef* newWildCard = new SchemaAttDef(baseAttWildCard);
+ SchemaAttDef* newWildCard = new (fMemoryManager) SchemaAttDef(baseAttWildCard);
typeInfo->setAttWildCard(newWildCard);
}
}
@@ -6145,7 +6153,7 @@
if (attDef.getDefaultType() != XMLAttDef::Prohibited) {
- SchemaAttDef* newAttDef = new SchemaAttDef(attName->getPrefix(),
+ SchemaAttDef* newAttDef = new (fMemoryManager) SchemaAttDef(attName->getPrefix(),
attName->getLocalPart(),
attName->getURI(),
attDef.getValue(),
@@ -6203,13 +6211,13 @@
else {
if (fScanner->getStandardUriConformant() && urlTmp.hasInvalidChar())
ThrowXML(MalformedURLException, XMLExcepts::URL_MalformedURL);
- srcToFill = new URLInputSource(urlTmp);
+ srcToFill = new (fMemoryManager) URLInputSource(urlTmp);
}
}
catch(const MalformedURLException& e) {
// Its not a URL, so lets assume its a local file name if non-standard URI is allowed
if (!fScanner->getStandardUriConformant())
- srcToFill = new LocalFileInputSource(fSchemaInfo->getCurrentSchemaURL(),normalizedURI);
+ srcToFill = new (fMemoryManager) LocalFileInputSource(fSchemaInfo->getCurrentSchemaURL(),normalizedURI);
else
throw e;
}
@@ -6337,7 +6345,7 @@
break;
}
- validSubsElements = new ValueVectorOf<SchemaElementDecl*>(*validSubsElements);
+ validSubsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubsElements);
fValidSubstitutionGroups->put((void*) chainElemName, chainElemURI, validSubsElements);
}
@@ -6401,7 +6409,7 @@
return;
}
- validSubs = new ValueVectorOf<SchemaElementDecl*>(*validSubs);
+ validSubs = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubs);
fValidSubstitutionGroups->put((void*) subsElemName, subsElemURI, validSubs);
}
@@ -6776,7 +6784,7 @@
typeInfo->setAttWithTypeId(true);
}
- typeInfo->addAttDef(new SchemaAttDef(attDef));
+ typeInfo->addAttDef(new (fMemoryManager) SchemaAttDef(attDef));
if (toAttGroup) {
toAttGroup->addAttDef(attDef, true);
@@ -7390,7 +7398,7 @@
// Parse input source
// ------------------------------------------------------------------
if (!fParser)
- fParser = new XSDDOMParser;
+ fParser = new (fMemoryManager) XSDDOMParser;
fParser->setValidationScheme(XercesDOMParser::Val_Never);
fParser->setDoNamespaces(true);
@@ -7446,7 +7454,7 @@
// Update schema information with redefined schema
// --------------------------------------------------------
redefSchemaInfo = fSchemaInfo;
- fSchemaInfo = new SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(includeURL),
fTargetNSURIString, root);
@@ -7917,18 +7925,21 @@
fDatatypeRegistry = fSchemaGrammar->getDatatypeRegistry();
fStringPool = fGrammarResolver->getStringPool();
fEmptyNamespaceURI = fScanner->getEmptyNamespaceId();
- fCurrentTypeNameStack = new ValueVectorOf<unsigned int>(8);
- fCurrentGroupStack = new ValueVectorOf<unsigned int>(8);
+ fCurrentTypeNameStack = new (fMemoryManager) ValueVectorOf<unsigned int>(8);
+ fCurrentGroupStack = new (fMemoryManager) ValueVectorOf<unsigned int>(8);
- fGlobalDeclarations = new ValueVectorOf<unsigned int>*[ENUM_ELT_SIZE];
+ fGlobalDeclarations = (ValueVectorOf<unsigned int>**) fMemoryManager->allocate
+ (
+ ENUM_ELT_SIZE * sizeof(ValueVectorOf<unsigned int>*)
+ );//new ValueVectorOf<unsigned int>*[ENUM_ELT_SIZE];
for(unsigned int i=0; i < ENUM_ELT_SIZE; i++)
- fGlobalDeclarations[i] = new ValueVectorOf<unsigned int>(8);
+ fGlobalDeclarations[i] = new (fMemoryManager) ValueVectorOf<unsigned int>(8);
- fNotationRegistry = new RefHash2KeysTableOf<XMLCh>(13, false);
- fSchemaInfoList = new RefHash2KeysTableOf<SchemaInfo>(29);
- fPreprocessedNodes = new RefHashTableOf<SchemaInfo>(29, false, new HashPtr());
+ fNotationRegistry = new (fMemoryManager) RefHash2KeysTableOf<XMLCh>(13, false);
+ fSchemaInfoList = new (fMemoryManager) RefHash2KeysTableOf<SchemaInfo>(29);
+ fPreprocessedNodes = new (fMemoryManager) RefHashTableOf<SchemaInfo>(29, false, new (fMemoryManager) HashPtr());
fLocator = new XSDLocator();
- fDeclStack = new ValueVectorOf<const DOMElement*>(16);
+ fDeclStack = new (fMemoryManager) ValueVectorOf<const DOMElement*>(16);
}
void TraverseSchema::cleanUp() {
@@ -7940,7 +7951,7 @@
for(unsigned int i=0; i < ENUM_ELT_SIZE; i++)
delete fGlobalDeclarations[i];
- delete [] fGlobalDeclarations;
+ fMemoryManager->deallocate(fGlobalDeclarations);//delete [] fGlobalDeclarations;
delete fNotationRegistry;
delete fRedefineComponents;
1.24 +5 -3 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp
Index: TraverseSchema.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- TraverseSchema.hpp 7 Mar 2003 18:17:54 -0000 1.23
+++ TraverseSchema.hpp 15 May 2003 18:57:27 -0000 1.24
@@ -107,7 +107,7 @@
class XMLErrorReporter;
-class VALIDATORS_EXPORT TraverseSchema
+class VALIDATORS_EXPORT TraverseSchema : public XMemory
{
public:
// -----------------------------------------------------------------------
@@ -123,6 +123,7 @@
, const XMLCh* const schemaURL
, XMLEntityHandler* const entityHandler
, XMLErrorReporter* const errorReporter
+ , MemoryManager* const manager
);
~TraverseSchema();
@@ -773,10 +774,11 @@
RefHash2KeysTableOf<IdentityConstraint>* fIdentityConstraintNames;
RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups;
RefHash2KeysTableOf<SchemaInfo>* fSchemaInfoList;
- GeneralAttributeCheck fAttributeCheck;
XSDDOMParser* fParser;
XSDErrorReporter fXSDErrorReporter;
XSDLocator* fLocator;
+ MemoryManager* fMemoryManager;
+ GeneralAttributeCheck fAttributeCheck;
friend class GeneralAttributeCheck;
};
1.9 +4 -3 xml-xerces/c/src/xercesc/validators/schema/XSDDOMParser.cpp
Index: XSDDOMParser.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XSDDOMParser.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XSDDOMParser.cpp 4 Nov 2002 14:49:42 -0000 1.8
+++ XSDDOMParser.cpp 15 May 2003 18:57:27 -0000 1.9
@@ -72,8 +72,9 @@
// ---------------------------------------------------------------------------
// XSDDOMParser: Constructors and Destructor
// ---------------------------------------------------------------------------
-XSDDOMParser::XSDDOMParser(XMLValidator* const valToAdopt) :
- XercesDOMParser(valToAdopt)
+XSDDOMParser::XSDDOMParser( XMLValidator* const valToAdopt
+ , MemoryManager* const manager) :
+ XercesDOMParser(valToAdopt, manager)
, fSawFatal(false)
, fUserErrorReporter(0)
{
1.7 +6 -2 xml-xerces/c/src/xercesc/validators/schema/XSDDOMParser.hpp
Index: XSDDOMParser.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XSDDOMParser.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XSDDOMParser.hpp 4 Nov 2002 14:49:42 -0000 1.6
+++ XSDDOMParser.hpp 15 May 2003 18:57:27 -0000 1.7
@@ -93,7 +93,11 @@
* @param valToAdopt Pointer to the validator instance to use. The
* parser is responsible for freeing the memory.
*/
- XSDDOMParser(XMLValidator* const valToAdopt = 0);
+ XSDDOMParser
+ (
+ XMLValidator* const valToAdopt = 0
+ , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+ );
/**
* Destructor
1.6 +3 -3 xml-xerces/c/src/xercesc/validators/schema/XSDErrorReporter.hpp
Index: XSDErrorReporter.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XSDErrorReporter.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XSDErrorReporter.hpp 7 Mar 2003 18:17:54 -0000 1.5
+++ XSDErrorReporter.hpp 15 May 2003 18:57:27 -0000 1.6
@@ -62,7 +62,7 @@
#if !defined(XSDERRORREPORTER_HPP)
#define XSDERRORREPORTER_HPP
-#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/util/XMemory.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -73,7 +73,7 @@
/**
* This class reports schema errors
*/
-class VALIDATORS_EXPORT XSDErrorReporter
+class VALIDATORS_EXPORT XSDErrorReporter : public XMemory
{
public:
// -----------------------------------------------------------------------
1.4 +5 -1 xml-xerces/c/src/xercesc/validators/schema/XercesAttGroupInfo.cpp
Index: XercesAttGroupInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XercesAttGroupInfo.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XercesAttGroupInfo.cpp 4 Nov 2002 14:49:42 -0000 1.3
+++ XercesAttGroupInfo.cpp 15 May 2003 18:57:27 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.4 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.3 2002/11/04 14:49:42 tng
* C++ Namespace Support.
*
@@ -90,11 +93,12 @@
// ---------------------------------------------------------------------------
// XercesAttGroupInfo: Constructors and Destructor
// ---------------------------------------------------------------------------
-XercesAttGroupInfo::XercesAttGroupInfo()
+XercesAttGroupInfo::XercesAttGroupInfo(MemoryManager* const manager)
: fTypeWithId(false)
, fAttributes(0)
, fAnyAttributes(0)
, fCompleteWildCard(0)
+ , fMemoryManager(manager)
{
}
1.3 +9 -8 xml-xerces/c/src/xercesc/validators/schema/XercesAttGroupInfo.hpp
Index: XercesAttGroupInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XercesAttGroupInfo.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XercesAttGroupInfo.hpp 4 Nov 2002 14:49:42 -0000 1.2
+++ XercesAttGroupInfo.hpp 15 May 2003 18:57:27 -0000 1.3
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -76,13 +76,13 @@
XERCES_CPP_NAMESPACE_BEGIN
-class VALIDATORS_EXPORT XercesAttGroupInfo
+class VALIDATORS_EXPORT XercesAttGroupInfo : public XMemory
{
public:
// -----------------------------------------------------------------------
// Public Constructors/Destructor
// -----------------------------------------------------------------------
- XercesAttGroupInfo();
+ XercesAttGroupInfo(MemoryManager* const manager);
~XercesAttGroupInfo();
// -----------------------------------------------------------------------
@@ -126,6 +126,7 @@
RefVectorOf<SchemaAttDef>* fAttributes;
RefVectorOf<SchemaAttDef>* fAnyAttributes;
SchemaAttDef* fCompleteWildCard;
+ MemoryManager* fMemoryManager;
};
// ---------------------------------------------------------------------------
@@ -212,11 +213,11 @@
const bool toClone) {
if (!fAttributes) {
- fAttributes = new RefVectorOf<SchemaAttDef>(4);
+ fAttributes = new (fMemoryManager) RefVectorOf<SchemaAttDef>(4);
}
if (toClone) {
- fAttributes->addElement(new SchemaAttDef(toAdd));
+ fAttributes->addElement(new (fMemoryManager) SchemaAttDef(toAdd));
}
else {
fAttributes->addElement(toAdd);
@@ -227,11 +228,11 @@
const bool toClone) {
if (!fAnyAttributes) {
- fAnyAttributes = new RefVectorOf<SchemaAttDef>(2);
+ fAnyAttributes = new (fMemoryManager) RefVectorOf<SchemaAttDef>(2);
}
if (toClone) {
- fAnyAttributes->addElement(new SchemaAttDef(toAdd));
+ fAnyAttributes->addElement(new (fMemoryManager) SchemaAttDef(toAdd));
}
else {
fAnyAttributes->addElement(toAdd);
1.5 +5 -2 xml-xerces/c/src/xercesc/validators/schema/XercesGroupInfo.cpp
Index: XercesGroupInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XercesGroupInfo.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XercesGroupInfo.cpp 4 Nov 2002 14:49:42 -0000 1.4
+++ XercesGroupInfo.cpp 15 May 2003 18:57:27 -0000 1.5
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.5 2003/05/15 18:57:27 knoaman
+ * Partial implementation of the configurable memory manager.
+ *
* Revision 1.4 2002/11/04 14:49:42 tng
* C++ Namespace Support.
*
@@ -88,7 +91,7 @@
// ---------------------------------------------------------------------------
// XercesGroupInfo: Constructors and Destructor
// ---------------------------------------------------------------------------
-XercesGroupInfo::XercesGroupInfo()
+XercesGroupInfo::XercesGroupInfo(MemoryManager* const manager)
: fCheckElementConsistency(true)
, fScope(-1)
, fContentSpec(0)
@@ -96,7 +99,7 @@
, fBaseGroup(0)
, fLocator(0)
{
- fElements = new RefVectorOf<SchemaElementDecl>(4, false);
+ fElements = new (manager) RefVectorOf<SchemaElementDecl>(4, false);
}
1.5 +3 -3 xml-xerces/c/src/xercesc/validators/schema/XercesGroupInfo.hpp
Index: XercesGroupInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XercesGroupInfo.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XercesGroupInfo.hpp 4 Nov 2002 14:49:42 -0000 1.4
+++ XercesGroupInfo.hpp 15 May 2003 18:57:27 -0000 1.5
@@ -83,13 +83,13 @@
class XSDLocator;
-class VALIDATORS_EXPORT XercesGroupInfo
+class VALIDATORS_EXPORT XercesGroupInfo : public XMemory
{
public:
// -----------------------------------------------------------------------
// Public Constructors/Destructor
// -----------------------------------------------------------------------
- XercesGroupInfo();
+ XercesGroupInfo(MemoryManager* const manager);
~XercesGroupInfo();
// -----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org