diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index 79e6cb75105c745c9b7092e5ac811fb36bfbb78b..ed734309e92098027a154e57d114020ffe6d9fd6 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -243,6 +243,7 @@ TraverseSchema::TraverseSchema( DOMElement* const schemaRoot , fPreprocessedNodes(0) , fLocator(0) , fMemoryManager(manager) + , fGrammarPoolMemoryManager(fGrammarResolver->getGrammarPoolMemoryManager()) , fAttributeCheck(manager) { @@ -254,6 +255,7 @@ TraverseSchema::TraverseSchema( DOMElement* const schemaRoot preprocessSchema(schemaRoot, schemaURL); doTraverseSchema(schemaRoot); } + } catch(...) { @@ -324,7 +326,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (fComplexTypeRegistry == 0 ) { - fComplexTypeRegistry = new (fMemoryManager) RefHashTableOf<ComplexTypeInfo>(29, fMemoryManager); + fComplexTypeRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf<ComplexTypeInfo>(29, fGrammarPoolMemoryManager); fSchemaGrammar->setComplexTypeRegistry(fComplexTypeRegistry); } @@ -332,7 +334,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (fGroupRegistry == 0 ) { - fGroupRegistry = new (fMemoryManager) RefHashTableOf<XercesGroupInfo>(13, fMemoryManager); + fGroupRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf<XercesGroupInfo>(13, fGrammarPoolMemoryManager); fSchemaGrammar->setGroupInfoRegistry(fGroupRegistry); } @@ -340,7 +342,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (fAttGroupRegistry == 0 ) { - fAttGroupRegistry = new (fMemoryManager) RefHashTableOf<XercesAttGroupInfo>(13, fMemoryManager); + fAttGroupRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf<XercesAttGroupInfo>(13, fGrammarPoolMemoryManager); fSchemaGrammar->setAttGroupInfoRegistry(fAttGroupRegistry); } @@ -348,7 +350,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (fAttributeDeclRegistry == 0) { - fAttributeDeclRegistry = new (fMemoryManager) RefHashTableOf<XMLAttDef>(29, fMemoryManager); + fAttributeDeclRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf<XMLAttDef>(29, fGrammarPoolMemoryManager); fSchemaGrammar->setAttributeDeclRegistry(fAttributeDeclRegistry); } @@ -356,7 +358,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (fNamespaceScope == 0) { - fNamespaceScope = new (fMemoryManager) NamespaceScope(fMemoryManager); + fNamespaceScope = new (fGrammarPoolMemoryManager) NamespaceScope(fGrammarPoolMemoryManager); fNamespaceScope->reset(fEmptyNamespaceURI); fSchemaGrammar->setNamespaceScope(fNamespaceScope); } @@ -365,7 +367,7 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, if (!fValidSubstitutionGroups) { - fValidSubstitutionGroups = new (fMemoryManager) RefHash2KeysTableOf<ElemVector>(29, fMemoryManager); + fValidSubstitutionGroups = new (fGrammarPoolMemoryManager) RefHash2KeysTableOf<ElemVector>(29, fGrammarPoolMemoryManager); fSchemaGrammar->setValidSubstitutionGroups(fValidSubstitutionGroups); } @@ -383,11 +385,11 @@ void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, fAttributeCheck.setIDRefList(fSchemaGrammar->getIDRefList()); // Save current schema info - SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, + SchemaInfo* currInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, fNamespaceScope->increaseDepth(), - XMLString::replicate(schemaURL, fMemoryManager), + XMLString::replicate(schemaURL, fGrammarPoolMemoryManager), fTargetNSURIString, schemaRoot, - fMemoryManager); + fGrammarPoolMemoryManager); if (fSchemaInfo) { fSchemaInfo->addSchemaInfo(currInfo, SchemaInfo::IMPORT); @@ -522,7 +524,7 @@ void TraverseSchema::preprocessInclude(const DOMElement* const elem) { // Parse input source // ------------------------------------------------------------------ if (!fParser) - fParser = new (fMemoryManager) XSDDOMParser(0, fMemoryManager, 0); + fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0, fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); @@ -574,11 +576,11 @@ void TraverseSchema::preprocessInclude(const DOMElement* const elem) { // -------------------------------------------------------- SchemaInfo* saveInfo = fSchemaInfo; - fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, + fSchemaInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, fNamespaceScope->increaseDepth(), - XMLString::replicate(includeURL, fMemoryManager), + XMLString::replicate(includeURL, fGrammarPoolMemoryManager), fTargetNSURIString, root, - fMemoryManager); + fGrammarPoolMemoryManager); fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); @@ -709,7 +711,7 @@ void TraverseSchema::preprocessImport(const DOMElement* const elem) { // Parse input source // ------------------------------------------------------------------ if (!fParser) - fParser = new (fMemoryManager) XSDDOMParser(0, fMemoryManager, 0); + fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0, fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); @@ -752,9 +754,8 @@ void TraverseSchema::preprocessImport(const DOMElement* const elem) { // -------------------------------------------------------- // Preprocess new schema // -------------------------------------------------------- - SchemaInfo* saveInfo = fSchemaInfo; - //fSchemaGrammar = fGrammarResolver->getGrammarPool()->createSchemaGrammar(); - fSchemaGrammar = new (fMemoryManager) SchemaGrammar(fMemoryManager); + SchemaInfo* saveInfo = fSchemaInfo; + fSchemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); preprocessSchema(root, importURL); fPreprocessedNodes->put((void*) elem, fSchemaInfo); @@ -901,11 +902,11 @@ TraverseSchema::traverseChoiceSequence(const DOMElement* const elem, continue; } - contentSpecNode = new (fMemoryManager) ContentSpecNode + contentSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( eltQName , false - , fMemoryManager + , fGrammarPoolMemoryManager ); seeParticle = true; } @@ -929,7 +930,7 @@ TraverseSchema::traverseChoiceSequence(const DOMElement* const elem, continue; } - contentSpecNode = new (fMemoryManager) ContentSpecNode(*contentSpecNode); + contentSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode(*contentSpecNode); seeParticle = true; } else if (XMLString::equals(childName, SchemaSymbols::fgELT_CHOICE)) { @@ -966,28 +967,28 @@ TraverseSchema::traverseChoiceSequence(const DOMElement* const elem, right = contentSpecNode; } else { - left = new (fMemoryManager) ContentSpecNode + left = new (fGrammarPoolMemoryManager) ContentSpecNode ( (ContentSpecNode::NodeTypes) modelGroupType , left , right , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ); right = contentSpecNode; } } if (hadContent) { - left = new (fMemoryManager) ContentSpecNode + left = new (fGrammarPoolMemoryManager) ContentSpecNode ( (ContentSpecNode::NodeTypes) modelGroupType , left , right , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ); } @@ -1203,7 +1204,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOMElement* const elem, // ------------------------------------------------------------------ // Register the type // ------------------------------------------------------------------ - typeInfo = new (fMemoryManager) ComplexTypeInfo(fMemoryManager); + typeInfo = new (fGrammarPoolMemoryManager) ComplexTypeInfo(fGrammarPoolMemoryManager); if(isAnonymous) { typeInfo->setAnonymous(); } @@ -1215,7 +1216,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOMElement* const elem, if (fFullConstraintChecking) { - XSDLocator* aLocator = new (fMemoryManager) XSDLocator(); + XSDLocator* aLocator = new (fGrammarPoolMemoryManager) XSDLocator(); aLocator->setValues(fStringPool->getValueForId(fStringPool->addOrFind(fSchemaInfo->getCurrentSchemaURL())), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); @@ -1406,7 +1407,7 @@ TraverseSchema::traverseGroupDecl(const DOMElement* const elem, ContentSpecNode* specNode = 0; XercesGroupInfo* saveGroupInfo = fCurrentGroupInfo; - groupInfo = new (fMemoryManager) XercesGroupInfo(fMemoryManager); + groupInfo = new (fGrammarPoolMemoryManager) XercesGroupInfo(fGrammarPoolMemoryManager); fCurrentGroupStack->addElement(nameIndex); fCurrentGroupInfo = groupInfo; @@ -1463,7 +1464,7 @@ TraverseSchema::traverseGroupDecl(const DOMElement* const elem, if (fFullConstraintChecking) { - XSDLocator* aLocator = new (fMemoryManager) XSDLocator(); + XSDLocator* aLocator = new (fGrammarPoolMemoryManager) XSDLocator(); groupInfo->setLocator(aLocator); aLocator->setValues(fStringPool->getValueForId(fStringPool->addOrFind(fSchemaInfo->getCurrentSchemaURL())), @@ -1552,7 +1553,7 @@ TraverseSchema::traverseAttributeGroupDecl(const DOMElement* const elem, // Process contents of global attributeGroups // ------------------------------------------------------------------ XercesAttGroupInfo* saveAttGroupInfo = fCurrentAttGroupInfo; - XercesAttGroupInfo* attGroupInfo = new (fMemoryManager) XercesAttGroupInfo(fMemoryManager); + XercesAttGroupInfo* attGroupInfo = new (fGrammarPoolMemoryManager) XercesAttGroupInfo(fGrammarPoolMemoryManager); fDeclStack->addElement(elem); fCurrentAttGroupInfo = attGroupInfo; @@ -1713,38 +1714,38 @@ TraverseSchema::traverseAny(const DOMElement* const elem) { if ((!nameSpace || !*nameSpace) || XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDANY)) { - retSpecNode = new (fMemoryManager) ContentSpecNode + retSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( - new (fMemoryManager) QName + new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , fEmptyNamespaceURI - , fMemoryManager + , fGrammarPoolMemoryManager ) , false - , fMemoryManager + , fGrammarPoolMemoryManager ); retSpecNode->setType(anyType); } else if (XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDOTHER)) { - retSpecNode = new (fMemoryManager) ContentSpecNode + retSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( - new (fMemoryManager) QName + new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString - , fTargetNSURI, fMemoryManager + , fTargetNSURI, fGrammarPoolMemoryManager ) , false - , fMemoryManager + , fGrammarPoolMemoryManager ); retSpecNode->setType(anyOtherType); } else { BaseRefVectorOf<XMLCh>* nameSpaceTokens = XMLString::tokenizeString(nameSpace); - ValueVectorOf<unsigned int> uriList(8, fMemoryManager); + ValueVectorOf<unsigned int> uriList(8, fGrammarPoolMemoryManager); ContentSpecNode* firstNode = 0; ContentSpecNode* secondNode = 0; unsigned int tokensSize = nameSpaceTokens->size(); @@ -1777,16 +1778,16 @@ TraverseSchema::traverseAny(const DOMElement* const elem) { uriList.addElement(uriIndex); - firstNode = new (fMemoryManager) ContentSpecNode + firstNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( - new (fMemoryManager) QName + new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString - , uriIndex, fMemoryManager + , uriIndex, fGrammarPoolMemoryManager ) , false - , fMemoryManager + , fGrammarPoolMemoryManager ); firstNode->setType(anyLocalType); @@ -1794,14 +1795,14 @@ TraverseSchema::traverseAny(const DOMElement* const elem) { secondNode = firstNode; } else { - secondNode = new (fMemoryManager) ContentSpecNode + secondNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Choice , secondNode , firstNode , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ); } } @@ -1859,11 +1860,11 @@ TraverseSchema::traverseAll(const DOMElement* const elem) { continue; } - contentSpecNode = new (fMemoryManager) ContentSpecNode + contentSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( eltQName , false - , fMemoryManager + , fGrammarPoolMemoryManager ); checkMinMax(contentSpecNode, child, All_Element); } @@ -1882,28 +1883,28 @@ TraverseSchema::traverseAll(const DOMElement* const elem) { right = contentSpecNode; } else { - left = new (fMemoryManager) ContentSpecNode + left = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::All , left , right , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ); right = contentSpecNode; } } if (hadContent) { - left = new (fMemoryManager) ContentSpecNode + left = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::All , left , right , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ); } @@ -2207,14 +2208,14 @@ void TraverseSchema::traverseAttributeDecl(const DOMElement* const elem, } // create SchemaAttDef - SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef + SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef ( XMLUni::fgZeroLenString , name , uriIndex , attType , XMLAttDef::Implied - , fMemoryManager + , fGrammarPoolMemoryManager ); attDef->setDatatypeValidator(dv); @@ -2310,7 +2311,7 @@ QName* TraverseSchema::traverseElementDecl(const DOMElement* const elem, if (topLevel) { if (fSchemaGrammar->getElemDecl(fTargetNSURI, name, 0, Grammar::TOP_LEVEL_SCOPE) != 0) { - return new (fMemoryManager) QName(name, fTargetNSURI, fMemoryManager); + return new (fGrammarPoolMemoryManager) QName(name, fTargetNSURI, fGrammarPoolMemoryManager); } } @@ -2552,20 +2553,20 @@ QName* TraverseSchema::traverseElementDecl(const DOMElement* const elem, subsElements = aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI); if (subsElements) { - subsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*subsElements); + subsElements = new (fGrammarPoolMemoryManager) ValueVectorOf<SchemaElementDecl*>(*subsElements); fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements); } else if (fSchemaInfo->circularImportExist(subsElemURI)) { aGrammar->getValidSubstitutionGroups()->put( - subsElemBaseName, subsElemURI, new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(8, fMemoryManager)); + subsElemBaseName, subsElemURI, new (fGrammarPoolMemoryManager) ValueVectorOf<SchemaElementDecl*>(8, fGrammarPoolMemoryManager)); } } } if (!subsElements) { - subsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(8, fMemoryManager); + subsElements = new (fGrammarPoolMemoryManager) ValueVectorOf<SchemaElementDecl*>(8, fGrammarPoolMemoryManager); fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements); } @@ -2688,11 +2689,11 @@ QName* TraverseSchema::traverseElementDecl(const DOMElement* const elem, elemDecl->setContentSpec(contentSpecNode); if (isAnyType) { - elemDecl->setAttWildCard(new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, + elemDecl->setAttWildCard(new (fGrammarPoolMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, - fMemoryManager)); + fGrammarPoolMemoryManager)); } // key/keyref/unique processing @@ -2711,7 +2712,7 @@ QName* TraverseSchema::traverseElementDecl(const DOMElement* const elem, else { if (!icNodes) { - icNodes = new (fMemoryManager) ValueVectorOf<DOMElement*>(8, fMemoryManager); + icNodes = new (fGrammarPoolMemoryManager) ValueVectorOf<DOMElement*>(8, fGrammarPoolMemoryManager); } icNodes->addElement(ic); @@ -2750,7 +2751,7 @@ QName* TraverseSchema::traverseElementDecl(const DOMElement* const elem, } } - return new (fMemoryManager) QName(*elemDecl->getElementName()); + return new (fGrammarPoolMemoryManager) QName(*elemDecl->getElementName()); } const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem) { @@ -2984,7 +2985,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, // Get facets if any existing RefHashTableOf<KVStringPair>* facets = 0; RefArrayVectorOf<XMLCh>* enums = 0; - XMLBuffer pattern(128, fMemoryManager); + XMLBuffer pattern(128, fGrammarPoolMemoryManager); XMLCh fixedFlagStr[16]; unsigned int fixedFlag = 0; unsigned short scope = 0; @@ -3010,7 +3011,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, fAttributeCheck.checkAttributes(content, scope, this); if (facets == 0) { - facets = new (fMemoryManager) RefHashTableOf<KVStringPair>(29, true, fMemoryManager); + facets = new (fGrammarPoolMemoryManager) RefHashTableOf<KVStringPair>(29, true, fGrammarPoolMemoryManager); } if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) { @@ -3020,7 +3021,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, // to get the qualified name first before adding it to the // enum buffer if (!enums) { - enums = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fMemoryManager); + enums = new (fGrammarPoolMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fGrammarPoolMemoryManager); } if (baseValidator->getType() == DatatypeValidator::NOTATION) { @@ -3037,10 +3038,10 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, fBuffer.set(uriStr); fBuffer.append(chColon); fBuffer.append(localPart); - enums->addElement(XMLString::replicate(fBuffer.getRawBuffer(), fMemoryManager)); + enums->addElement(XMLString::replicate(fBuffer.getRawBuffer(), fGrammarPoolMemoryManager)); } else { - enums->addElement(XMLString::replicate(attValue, fMemoryManager)); + enums->addElement(XMLString::replicate(attValue, fGrammarPoolMemoryManager)); } } else if (XMLString::equals(facetName, SchemaSymbols::fgELT_PATTERN)) { @@ -3071,7 +3072,7 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, else { const XMLCh* facetStr = fStringPool->getValueForId(fStringPool->addOrFind(facetName)); - facets->put((void*) facetStr, new (fMemoryManager) KVStringPair(facetStr, attValue, fMemoryManager)); + facets->put((void*) facetStr, new (fGrammarPoolMemoryManager) KVStringPair(facetStr, attValue, fGrammarPoolMemoryManager)); checkFixedFacet(content, facetStr, baseValidator, fixedFlag); } } @@ -3088,14 +3089,14 @@ TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, if (!pattern.isEmpty()) { facets->put((void*) SchemaSymbols::fgELT_PATTERN, - new (fMemoryManager) KVStringPair(SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer(), fMemoryManager)); + new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer(), fGrammarPoolMemoryManager)); } if (fixedFlag) { XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10); facets->put((void*) SchemaSymbols::fgATT_FIXED, - new (fMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fMemoryManager)); + new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fGrammarPoolMemoryManager)); } try { @@ -3132,13 +3133,13 @@ TraverseSchema::traverseByUnion(const DOMElement* const rootElem, int size = 1; const XMLCh* baseTypeName = getElementAttValue(contentElem, SchemaSymbols::fgATT_MEMBERTYPES); DatatypeValidator* baseValidator = 0; - RefVectorOf<DatatypeValidator>* validators = new (fMemoryManager) RefVectorOf<DatatypeValidator>(4, false, fMemoryManager); + RefVectorOf<DatatypeValidator>* validators = new (fGrammarPoolMemoryManager) RefVectorOf<DatatypeValidator>(4, false, fGrammarPoolMemoryManager); Janitor<DVRefVector> janValidators(validators); DOMElement* content = 0; if (baseTypeName && *baseTypeName) { //base was provided - get proper validator. - XMLStringTokenizer unionMembers(baseTypeName, fMemoryManager); + XMLStringTokenizer unionMembers(baseTypeName, fGrammarPoolMemoryManager); int tokCount = unionMembers.countTokens(); for (int i = 0; i < tokCount; i++) { @@ -3424,7 +3425,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, // --------------------------------------------------------------- RefHashTableOf<KVStringPair>* facets = 0; RefArrayVectorOf<XMLCh>* enums = 0; - XMLBuffer pattern(128, fMemoryManager); + XMLBuffer pattern(128, fGrammarPoolMemoryManager); XMLCh fixedFlagStr[16]; unsigned int fixedFlag = 0; unsigned short scope = 0; @@ -3449,16 +3450,16 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, const XMLCh* attValue = content->getAttribute(SchemaSymbols::fgATT_VALUE); if (facets == 0) { - facets = new (fMemoryManager) RefHashTableOf<KVStringPair>(29, true, fMemoryManager); + facets = new (fGrammarPoolMemoryManager) RefHashTableOf<KVStringPair>(29, true, fGrammarPoolMemoryManager); } if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) { if (!enums) { - enums = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fMemoryManager); + enums = new (fGrammarPoolMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fGrammarPoolMemoryManager); } - enums->addElement(XMLString::replicate(attValue, fMemoryManager)); + enums->addElement(XMLString::replicate(attValue, fGrammarPoolMemoryManager)); } else if (XMLString::equals(facetName, SchemaSymbols::fgELT_PATTERN)) { @@ -3483,7 +3484,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, const XMLCh* facetNameStr = fStringPool->getValueForId(fStringPool->addOrFind(facetName)); - facets->put((void*) facetNameStr, new (fMemoryManager) KVStringPair(facetNameStr, attValue, fMemoryManager)); + facets->put((void*) facetNameStr, new (fGrammarPoolMemoryManager) KVStringPair(facetNameStr, attValue, fGrammarPoolMemoryManager)); checkFixedFacet(content, facetNameStr, typeInfo->getBaseDatatypeValidator(), fixedFlag); } } @@ -3498,7 +3499,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, facets->put ( (void*) SchemaSymbols::fgELT_PATTERN, - new (fMemoryManager) KVStringPair + new (fGrammarPoolMemoryManager) KVStringPair ( SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer() @@ -3510,7 +3511,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10); facets->put((void*) SchemaSymbols::fgATT_FIXED, - new (fMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fMemoryManager)); + new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fGrammarPoolMemoryManager)); } try { @@ -3763,7 +3764,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) // ------------------------------------------------------------------ int uriIndex = fEmptyNamespaceURI; XMLAttDef::AttTypes attType = XMLAttDef::Any_Any; - ValueVectorOf<unsigned int> namespaceList(8, fMemoryManager); + ValueVectorOf<unsigned int> namespaceList(8, fGrammarPoolMemoryManager); if ((!nameSpace || !*nameSpace) || XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDANY)) { @@ -3776,7 +3777,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) } else { - XMLStringTokenizer tokenizer(nameSpace, fMemoryManager); + XMLStringTokenizer tokenizer(nameSpace, fGrammarPoolMemoryManager); DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); attType = XMLAttDef::Any_List; @@ -3813,10 +3814,10 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) // ------------------------------------------------------------------ // Create wildcard attribute // ------------------------------------------------------------------ - SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, + SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, uriIndex, attType, attDefType, - fMemoryManager); + fGrammarPoolMemoryManager); if (namespaceList.size()) { @@ -3867,7 +3868,7 @@ void TraverseSchema::traverseKey(const DOMElement* const icElem, return; } - IC_Key* icKey = new (fMemoryManager) IC_Key(name, elemDecl->getBaseName(), fMemoryManager); + IC_Key* icKey = new (fGrammarPoolMemoryManager) IC_Key(name, elemDecl->getBaseName(), fGrammarPoolMemoryManager); Janitor<IC_Key> janKey(icKey); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKey); @@ -3919,7 +3920,7 @@ void TraverseSchema::traverseUnique(const DOMElement* const icElem, } if (!fIdentityConstraintNames) { - fIdentityConstraintNames = new (fMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, (bool) false, fMemoryManager); + fIdentityConstraintNames = new (fGrammarPoolMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, (bool) false, fGrammarPoolMemoryManager); } if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { @@ -3928,7 +3929,7 @@ void TraverseSchema::traverseUnique(const DOMElement* const icElem, return; } - IC_Unique* icUnique = new (fMemoryManager) IC_Unique(name, elemDecl->getBaseName(), fMemoryManager); + IC_Unique* icUnique = new (fGrammarPoolMemoryManager) IC_Unique(name, elemDecl->getBaseName(), fGrammarPoolMemoryManager); Janitor<IC_Unique> janUnique(icUnique); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icUnique); @@ -4002,7 +4003,7 @@ void TraverseSchema::traverseKeyRef(const DOMElement* const icElem, return; } - IC_KeyRef* icKeyRef = new (fMemoryManager) IC_KeyRef(name, elemDecl->getBaseName(), icKey, fMemoryManager); + IC_KeyRef* icKeyRef = new (fGrammarPoolMemoryManager) IC_KeyRef(name, elemDecl->getBaseName(), icKey, fGrammarPoolMemoryManager); Janitor<IC_KeyRef> janKeyRef(icKeyRef); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKeyRef); @@ -4099,8 +4100,8 @@ bool TraverseSchema::traverseIdentityConstraint(IdentityConstraint* const ic, // ------------------------------------------------------------------ try { - XercesXPath* sXPath = new (fMemoryManager) XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI, true, fMemoryManager); - IC_Selector* icSelector = new (fMemoryManager) IC_Selector(sXPath, ic); + XercesXPath* sXPath = new (fGrammarPoolMemoryManager) XercesXPath(fBuffer.getRawBuffer(), fStringPool, fNamespaceScope, fEmptyNamespaceURI, true, fGrammarPoolMemoryManager); + IC_Selector* icSelector = new (fGrammarPoolMemoryManager) IC_Selector(sXPath, ic); ic->setSelector(icSelector); } catch (const XPathException& e) { @@ -4151,16 +4152,16 @@ bool TraverseSchema::traverseIdentityConstraint(IdentityConstraint* const ic, try { - XercesXPath* fieldXPath = new (fMemoryManager) XercesXPath + XercesXPath* fieldXPath = new (fGrammarPoolMemoryManager) XercesXPath ( fBuffer.getRawBuffer() , fStringPool , fNamespaceScope , fEmptyNamespaceURI , false - , fMemoryManager + , fGrammarPoolMemoryManager ); - IC_Field* icField = new (fMemoryManager) IC_Field(fieldXPath, ic); + IC_Field* icField = new (fGrammarPoolMemoryManager) IC_Field(fieldXPath, ic); ic->addField(icField); } catch (const XPathException& e) { @@ -4614,9 +4615,9 @@ QName* TraverseSchema::processElementDeclRef(const DOMElement* const elem, const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(elem, prefix); - QName* eltName = new (fMemoryManager) QName(prefix , localPart, uriStr != 0 + QName* eltName = new (fGrammarPoolMemoryManager) QName(prefix , localPart, uriStr != 0 ? fURIStringPool->addOrFind(uriStr) - : fEmptyNamespaceURI, fMemoryManager); + : fEmptyNamespaceURI, fGrammarPoolMemoryManager); //if from another schema, just return the element QName if (!XMLString::equals(uriStr, fTargetNSURIString)) { @@ -4682,7 +4683,7 @@ int TraverseSchema::parseBlockSet(const DOMElement* const elem, return blockSet; } - XMLStringTokenizer tokenizer(blockVal, fMemoryManager); + XMLStringTokenizer tokenizer(blockVal, fGrammarPoolMemoryManager); while (tokenizer.hasMoreTokens()) { @@ -4743,7 +4744,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem, return finalSet; } - XMLStringTokenizer tokenizer(finalVal, fMemoryManager); + XMLStringTokenizer tokenizer(finalVal, fGrammarPoolMemoryManager); while (tokenizer.hasMoreTokens()) { @@ -5318,14 +5319,14 @@ TraverseSchema::createSchemaElementDecl(const DOMElement* const elem, } const XMLCh* prefix = getPrefix(name); - SchemaElementDecl* elemDecl = new (fMemoryManager) SchemaElementDecl + SchemaElementDecl* elemDecl = new (fGrammarPoolMemoryManager) SchemaElementDecl ( prefix , name , uriIndex , (SchemaElementDecl::ModelTypes) elemType , enclosingScope - , fMemoryManager + , fGrammarPoolMemoryManager ); elemDecl->setFinalSet(finalSet); @@ -5480,13 +5481,13 @@ void TraverseSchema::processAttributeDeclRef(const DOMElement* const elem, bool required = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_REQUIRED); bool prohibited = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_PROHIBITED); QName* attQName = refAttDef->getAttName(); - SchemaAttDef* attDef = new (fMemoryManager) SchemaAttDef(attQName->getPrefix(), + SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef(attQName->getPrefix(), attQName->getLocalPart(), attQName->getURI(), refAttValue, refAttDef->getType(), refAttDefType, - 0, fMemoryManager); + 0, fGrammarPoolMemoryManager); if (refAttDefType == XMLAttDef::Fixed) { if (required && !invalidAttUse) { @@ -5727,7 +5728,7 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, int contentContext = specNode->hasAllContent() ? Group_Ref_With_All : Not_All_Context; - specNode = new (fMemoryManager) ContentSpecNode(*specNode); + specNode = new (fGrammarPoolMemoryManager) ContentSpecNode(*specNode); checkMinMax(specNode, childElem, contentContext); } } @@ -5794,7 +5795,7 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, if (!specNode) { if (baseSpecNode) { - specNode = new (fMemoryManager) ContentSpecNode(*baseSpecNode); + specNode = new (fGrammarPoolMemoryManager) ContentSpecNode(*baseSpecNode); typeInfo->setContentSpec(specNode); typeInfo->setAdoptContentSpec(true); } @@ -5818,14 +5819,14 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, typeInfo->setAdoptContentSpec(false); typeInfo->setContentSpec ( - new (fMemoryManager) ContentSpecNode + new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence - , new (fMemoryManager) ContentSpecNode(*baseSpecNode) + , new (fGrammarPoolMemoryManager) ContentSpecNode(*baseSpecNode) , specNode , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ) ); typeInfo->setAdoptContentSpec(true); @@ -5841,16 +5842,16 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, // ------------------------------------------------------------- if (isBaseAnyType && typeDerivedBy == SchemaSymbols::XSD_EXTENSION) { - ContentSpecNode* anySpecNode = new (fMemoryManager) ContentSpecNode + ContentSpecNode* anySpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( - new (fMemoryManager) QName + new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString - , fEmptyNamespaceURI, fMemoryManager + , fEmptyNamespaceURI, fGrammarPoolMemoryManager ) , false - , fMemoryManager + , fGrammarPoolMemoryManager ); anySpecNode->setType(ContentSpecNode::Any_Lax); @@ -5866,14 +5867,14 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, typeInfo->setAdoptContentSpec(false); typeInfo->setContentSpec ( - new (fMemoryManager) ContentSpecNode + new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , anySpecNode , specNode , true , true - , fMemoryManager + , fGrammarPoolMemoryManager ) ); typeInfo->setAdoptContentSpec(true); @@ -5894,17 +5895,17 @@ void TraverseSchema::processComplexContent(const DOMElement* const ctElem, } else { // add #PCDATA leaf and set its minOccurs to 0 - ContentSpecNode* pcdataNode = new (fMemoryManager) ContentSpecNode + ContentSpecNode* pcdataNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( - new (fMemoryManager) QName + new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLElementDecl::fgPCDataElemId - , fMemoryManager + , fGrammarPoolMemoryManager ) , false - , fMemoryManager + , fGrammarPoolMemoryManager ); pcdataNode->setMinOccurs(0); @@ -6128,7 +6129,7 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, SchemaAttDef* attWildCard = 0; Janitor<SchemaAttDef> janAttWildCard(0); XercesAttGroupInfo* attGroupInfo = 0; - ValueVectorOf<XercesAttGroupInfo*> attGroupList(4, fMemoryManager); + ValueVectorOf<XercesAttGroupInfo*> attGroupList(4, fGrammarPoolMemoryManager); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { @@ -6184,7 +6185,7 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, if (!attGroupWildCard) { - attGroupWildCard = new (fMemoryManager) SchemaAttDef(attGroupInfo->anyAttributeAt(0)); + attGroupWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(attGroupInfo->anyAttributeAt(0)); for (unsigned int i= 1; i < anyAttCount; i++) { attWildCardIntersection(attGroupWildCard, attGroupInfo->anyAttributeAt(i)); @@ -6197,7 +6198,7 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, attWildCardIntersection(completeWildCard, attGroupWildCard); } else { - completeWildCard = new (fMemoryManager) SchemaAttDef(attGroupWildCard); + completeWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(attGroupWildCard); janCompleteWildCard.reset(completeWildCard); } } @@ -6227,11 +6228,11 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, if (isBaseAnyType) { - baseAttWildCard = new (fMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, + baseAttWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, - fMemoryManager); + fGrammarPoolMemoryManager); janBaseAttWildCard.reset(baseAttWildCard); } @@ -6264,7 +6265,7 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, } else { - SchemaAttDef* newWildCard = new (fMemoryManager) SchemaAttDef(baseAttWildCard); + SchemaAttDef* newWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(baseAttWildCard); typeInfo->setAttWildCard(newWildCard); } } @@ -6311,14 +6312,14 @@ void TraverseSchema::processAttributes(const DOMElement* const elem, if (attDef.getDefaultType() != XMLAttDef::Prohibited) { - SchemaAttDef* newAttDef = new (fMemoryManager) SchemaAttDef(attName->getPrefix(), + SchemaAttDef* newAttDef = new (fGrammarPoolMemoryManager) SchemaAttDef(attName->getPrefix(), attName->getLocalPart(), attName->getURI(), attDef.getValue(), attDef.getType(), attDef.getDefaultType(), attDef.getEnumeration(), - fMemoryManager); + fGrammarPoolMemoryManager); newAttDef->setDatatypeValidator(attDef.getDatatypeValidator()); typeInfo->addAttDef(newAttDef); @@ -6508,7 +6509,7 @@ TraverseSchema::buildValidSubstitutionListB(const DOMElement* const elem, break; } - validSubsElements = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubsElements); + validSubsElements = new (fGrammarPoolMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubsElements); fValidSubstitutionGroups->put((void*) chainElemName, chainElemURI, validSubsElements); } @@ -6575,7 +6576,7 @@ TraverseSchema::buildValidSubstitutionListF(const DOMElement* const elem, return; } - validSubs = new (fMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubs); + validSubs = new (fGrammarPoolMemoryManager) ValueVectorOf<SchemaElementDecl*>(*validSubs); fValidSubstitutionGroups->put((void*) subsElemName, subsElemURI, validSubs); } @@ -6953,7 +6954,7 @@ void TraverseSchema::copyAttGroupAttributes(const DOMElement* const elem, typeInfo->setAttWithTypeId(true); } - typeInfo->addAttDef(new (fMemoryManager) SchemaAttDef(attDef)); + typeInfo->addAttDef(new (fGrammarPoolMemoryManager) SchemaAttDef(attDef)); if (toAttGroup) { toAttGroup->addAttDef(attDef, true); @@ -7035,7 +7036,7 @@ TraverseSchema::attWildCardIntersection(SchemaAttDef* const resultWildCard, if (listSize) { bool found = false; - ValueVectorOf<unsigned int> tmpURIList(listSize, fMemoryManager); + ValueVectorOf<unsigned int> tmpURIList(listSize, fGrammarPoolMemoryManager); for (unsigned int i=0; i < listSize; i++) { @@ -7072,7 +7073,7 @@ TraverseSchema::attWildCardIntersection(SchemaAttDef* const resultWildCard, if (listSize) { - ValueVectorOf<unsigned int> tmpURIList(listSize, fMemoryManager); + ValueVectorOf<unsigned int> tmpURIList(listSize, fGrammarPoolMemoryManager); for (unsigned int i=0; i < listSize; i++) { @@ -7567,7 +7568,7 @@ bool TraverseSchema::openRedefinedSchema(const DOMElement* const redefineElem) { // Parse input source // ------------------------------------------------------------------ if (!fParser) - fParser = new (fMemoryManager) XSDDOMParser(0,fMemoryManager, 0); + fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0,fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); @@ -7623,11 +7624,11 @@ bool TraverseSchema::openRedefinedSchema(const DOMElement* const redefineElem) { // Update schema information with redefined schema // -------------------------------------------------------- redefSchemaInfo = fSchemaInfo; - fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, + fSchemaInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, fNamespaceScope->increaseDepth(), - XMLString::replicate(includeURL, fMemoryManager), + XMLString::replicate(includeURL, fGrammarPoolMemoryManager), fTargetNSURIString, root, - fMemoryManager); + fGrammarPoolMemoryManager); traverseSchemaHeader(root); fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); diff --git a/src/xercesc/validators/schema/TraverseSchema.hpp b/src/xercesc/validators/schema/TraverseSchema.hpp index 68d1a4953ed040f08fd9df9c6c08f2b04192c797..57431eaa08969ccf124be1cb162e2716cb09249a 100644 --- a/src/xercesc/validators/schema/TraverseSchema.hpp +++ b/src/xercesc/validators/schema/TraverseSchema.hpp @@ -778,6 +778,7 @@ private: XSDErrorReporter fXSDErrorReporter; XSDLocator* fLocator; MemoryManager* fMemoryManager; + MemoryManager* fGrammarPoolMemoryManager; GeneralAttributeCheck fAttributeCheck; friend class GeneralAttributeCheck;