You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2003/07/31 19:14:27 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/schema SchemaValidator.cpp SubstitutionGroupComparator.cpp TraverseSchema.cpp XMLSchemaDescriptionImpl.cpp XMLSchemaDescriptionImpl.hpp
peiyongz 2003/07/31 10:14:27
Modified: c/src/xercesc/validators/schema SchemaValidator.cpp
SubstitutionGroupComparator.cpp TraverseSchema.cpp
XMLSchemaDescriptionImpl.cpp
XMLSchemaDescriptionImpl.hpp
Log:
Grammar embed grammar description
Revision Changes Path
1.35 +7 -8 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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- SchemaValidator.cpp 25 Jun 2003 22:38:18 -0000 1.34
+++ SchemaValidator.cpp 31 Jul 2003 17:14:27 -0000 1.35
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.35 2003/07/31 17:14:27 peiyongz
+ * Grammar embed grammar description
+ *
* Revision 1.34 2003/06/25 22:38:18 peiyongz
* to use new GrammarResolver::getGrammar()
*
@@ -793,9 +796,7 @@
// retrieve Grammar for the uri
const XMLCh* uriStr = getScanner()->getURIText(uri);
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uriStr);
if (!sGrammar) {
// Check built-in simple types
@@ -993,10 +994,10 @@
// And enumerate all the complextype info in the grammar
// and do Unique Particle Attribution Checking
- RefHashTableOfEnumerator<GrammarEntry> grammarEnum = fGrammarResolver->getGrammarEnumerator();
+ RefHashTableOfEnumerator<Grammar> grammarEnum = fGrammarResolver->getGrammarEnumerator();
while (grammarEnum.hasMoreElements())
{
- SchemaGrammar& sGrammar = (SchemaGrammar&) *(grammarEnum.nextElement().getGrammar());
+ SchemaGrammar& sGrammar = (SchemaGrammar&) grammarEnum.nextElement();
if (sGrammar.getGrammarType() != Grammar::SchemaGrammarType || sGrammar.getValidated())
continue;
@@ -1697,9 +1698,7 @@
const XMLCh* schemaURI = getScanner()->getURIStringPool()->getValueForId(derivedURI);
if (derivedURI != getScanner()->getEmptyNamespaceId()) {
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(schemaURI);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- aGrammar= (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ aGrammar= (SchemaGrammar*) fGrammarResolver->getGrammar(schemaURI);
}
if (!aGrammar) { //something is wrong
1.8 +4 -3 xml-xerces/c/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp
Index: SubstitutionGroupComparator.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SubstitutionGroupComparator.cpp 25 Jun 2003 22:38:18 -0000 1.7
+++ SubstitutionGroupComparator.cpp 31 Jul 2003 17:14:27 -0000 1.8
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.8 2003/07/31 17:14:27 peiyongz
+ * Grammar embed grammar description
+ *
* Revision 1.7 2003/06/25 22:38:18 peiyongz
* to use new GrammarResolver::getGrammar()
*
@@ -164,9 +167,7 @@
if (!uri)
return false;
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uri);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar *sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar *sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uri);
if (!sGrammar || sGrammar->getGrammarType() == Grammar::DTDGrammarType)
return false;
1.84 +29 -52 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.83
retrieving revision 1.84
diff -u -r1.83 -r1.84
--- TraverseSchema.cpp 10 Jul 2003 19:58:57 -0000 1.83
+++ TraverseSchema.cpp 31 Jul 2003 17:14:27 -0000 1.84
@@ -380,12 +380,14 @@
fTargetNSURIString = fSchemaGrammar->getTargetNamespace();
fTargetNSURI = fURIStringPool->addOrFind(fTargetNSURIString);
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(fTargetNSURIString);
- fGrammarResolver->putGrammar(gramDesc, fSchemaGrammar);
+ XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) fSchemaGrammar->getGrammarDescription();
+ gramDesc->setTargetNamespace(fTargetNSURIString);
+
+ fGrammarResolver->putGrammar(fSchemaGrammar);
fAttributeCheck.setIDRefList(fSchemaGrammar->getIDRefList());
// Save current schema info
- SchemaInfo* currInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(schemaURL, fGrammarPoolMemoryManager),
fTargetNSURIString, schemaRoot,
@@ -576,7 +578,7 @@
// --------------------------------------------------------
SchemaInfo* saveInfo = fSchemaInfo;
- fSchemaInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(includeURL, fGrammarPoolMemoryManager),
fTargetNSURIString, root,
@@ -660,6 +662,8 @@
{
XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(nameSpace);
Janitor<XMLSchemaDescription> janName(gramDesc);
+ gramDesc->setContextType(XMLSchemaDescription::CONTEXT_IMPORT);
+ gramDesc->setLocationHints(getElementAttValue(elem, SchemaSymbols::fgATT_SCHEMALOCATION));
aGrammar = fGrammarResolver->getGrammar(gramDesc);
}
@@ -756,6 +760,10 @@
// --------------------------------------------------------
SchemaInfo* saveInfo = fSchemaInfo;
fSchemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager);
+ XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) fSchemaGrammar->getGrammarDescription();
+ gramDesc->setContextType(XMLSchemaDescription::CONTEXT_IMPORT);
+ gramDesc->setLocationHints(importURL);
+
preprocessSchema(root, importURL);
fPreprocessedNodes->put((void*) elem, fSchemaInfo);
@@ -1633,9 +1641,7 @@
// ------------------------------------------------------------------
// Get grammar information
// ------------------------------------------------------------------
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* aGrammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* aGrammar = fGrammarResolver->getGrammar(uriStr);
if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
@@ -2545,9 +2551,7 @@
if (!subsElements && fTargetNSURI != subsElemURI) {
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(fURIStringPool->getValueForId(subsElemURI));
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(subsElemURI));
if (aGrammar) {
subsElements = aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI);
@@ -2578,9 +2582,7 @@
while (importingEnum.hasMoreElements()) {
const SchemaInfo& curRef = importingEnum.nextElement();
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(curRef.getTargetNSURIString());
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(curRef.getTargetNSURIString());
ValueVectorOf<SchemaElementDecl*>* subsElemList =
aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI);
@@ -2809,9 +2811,7 @@
return 0;
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* grammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* grammar = fGrammarResolver->getGrammar(uriStr);
if (grammar == 0 || grammar->getGrammarType() != Grammar::SchemaGrammarType) {
@@ -4483,9 +4483,7 @@
if ((uriStr && *uriStr) && !XMLString::equals(uriStr, fTargetNSURIString)) {
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* grammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* grammar = fGrammarResolver->getGrammar(uriStr);
if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) {
dv = ((SchemaGrammar*) grammar)->getDatatypeRegistry()->getDatatypeValidator(fBuffer.getRawBuffer());
@@ -5006,9 +5004,7 @@
if (!fSchemaInfo->isImportingNS(uriId))
return 0;
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(typeURI);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* aGrammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* aGrammar = fGrammarResolver->getGrammar(typeURI);
if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
return 0;
@@ -5083,9 +5079,7 @@
0, Grammar::TOP_LEVEL_SCOPE, wasAdded);
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(nameURI);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* grammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* grammar = fGrammarResolver->getGrammar(nameURI);
if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) {
elemDecl = (SchemaElementDecl*)
@@ -5385,9 +5379,7 @@
return;
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* grammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* grammar = fGrammarResolver->getGrammar(uriStr);
if (grammar == 0 || grammar->getGrammarType() != Grammar::SchemaGrammarType) {
@@ -6088,9 +6080,7 @@
const XMLCh* const localPart)
{
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* grammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* grammar = fGrammarResolver->getGrammar(uriStr);
if (grammar != 0 && grammar->getGrammarType() == Grammar::SchemaGrammarType) {
@@ -6398,9 +6388,7 @@
int targetNSURI = toRestore->getTargetNSURI();
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(toRestore->getTargetNSURIString());
- Janitor<XMLSchemaDescription> janName(gramDesc);
- fSchemaGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ fSchemaGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(toRestore->getTargetNSURIString());
if (!fSchemaGrammar) {
return;
@@ -6496,9 +6484,7 @@
break; // an error must have occured
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(fURIStringPool->getValueForId(chainElemURI));
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(chainElemURI));
if (!aGrammar)
break;
@@ -6527,9 +6513,7 @@
while (importingEnum.hasMoreElements()) {
const SchemaInfo& curRef = importingEnum.nextElement();
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(curRef.getTargetNSURIString());
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(curRef.getTargetNSURIString());
ValueVectorOf<SchemaElementDecl*>* subsElemList =
aGrammar->getValidSubstitutionGroups()->get(chainElemName, chainElemURI);
@@ -6563,9 +6547,7 @@
return; // an error must have occured
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(fURIStringPool->getValueForId(subsElemURI));
- Janitor<XMLSchemaDescription> janName(gramDesc);
- SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc);
+ SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(subsElemURI));
if (!aGrammar)
return;
@@ -6651,9 +6633,7 @@
return 0;
}
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uriStr);
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* aGrammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* aGrammar = fGrammarResolver->getGrammar(uriStr);
if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
@@ -6837,10 +6817,7 @@
if (elemScope != Grammar::TOP_LEVEL_SCOPE) {
if (elemURI != fTargetNSURI && elemURI != schemaURI && elemURI != fEmptyNamespaceURI) {
-
- XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(fURIStringPool->getValueForId(elemURI));
- Janitor<XMLSchemaDescription> janName(gramDesc);
- Grammar* aGrammar = fGrammarResolver->getGrammar(gramDesc);
+ Grammar* aGrammar = fGrammarResolver->getGrammar(fURIStringPool->getValueForId(elemURI));
if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
continue; // REVISIT - error message
@@ -7624,7 +7601,7 @@
// Update schema information with redefined schema
// --------------------------------------------------------
redefSchemaInfo = fSchemaInfo;
- fSchemaInfo = new (fGrammarPoolMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
+ fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
fNamespaceScope->increaseDepth(),
XMLString::replicate(includeURL, fGrammarPoolMemoryManager),
fTargetNSURIString, root,
1.3 +15 -16 xml-xerces/c/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp
Index: XMLSchemaDescriptionImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XMLSchemaDescriptionImpl.cpp 20 Jun 2003 22:19:12 -0000 1.2
+++ XMLSchemaDescriptionImpl.cpp 31 Jul 2003 17:14:27 -0000 1.3
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.3 2003/07/31 17:14:27 peiyongz
+ * Grammar embed grammar description
+ *
* Revision 1.2 2003/06/20 22:19:12 peiyongz
* Stateless Grammar Pool :: Part I
*
@@ -71,6 +74,7 @@
// Includes
// ---------------------------------------------------------------------------
#include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp>
+#include <xercesc/util/QName.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -90,8 +94,10 @@
if (targetNamespace)
fNamespace = XMLString::replicate(targetNamespace, memMgr);
+
+ fLocationHints = new (memMgr) RefArrayVectorOf<XMLCh>(4, true, memMgr);
+
/***
- fLocationHints
fAttributes
***/
}
@@ -110,9 +116,6 @@
if (fEnclosingElementName)
delete fEnclosingElementName;
- if (fAttributes)
- delete fAttributes;
-
}
const XMLCh* XMLSchemaDescriptionImpl::getGrammarKey() const
@@ -163,12 +166,9 @@
fNamespace = XMLString::replicate(newNamespace, XMLGrammarDescription::getMemoryManager());
}
-void XMLSchemaDescriptionImpl::setLocationHints(RefArrayVectorOf<XMLCh> *hints)
-{
- if (fLocationHints)
- delete fLocationHints;
-
- fLocationHints = hints;
+void XMLSchemaDescriptionImpl::setLocationHints(const XMLCh* const hint)
+{
+ fLocationHints->addElement(XMLString::replicate(hint, XMLGrammarDescription::getMemoryManager()));
}
void XMLSchemaDescriptionImpl::setTriggeringComponent(QName* const trigComponent)
@@ -176,7 +176,7 @@
if ( fTriggeringComponent)
delete fTriggeringComponent;
- fTriggeringComponent = trigComponent;
+ fTriggeringComponent = new QName(*trigComponent);
}
@@ -185,15 +185,14 @@
if (fEnclosingElementName)
delete fEnclosingElementName;
- fEnclosingElementName = encElement;
+ fEnclosingElementName = new QName(*encElement);
}
void XMLSchemaDescriptionImpl::setAttributes(XMLAttDef* const attDefs)
{
- if (fAttributes)
- delete fAttributes;
-
+ // XMLAttDef is part of the grammar that this description refers to
+ // so we reference to it instead of adopting/owning/cloning.
fAttributes = attDefs;
}
1.2 +11 -8 xml-xerces/c/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp
Index: XMLSchemaDescriptionImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XMLSchemaDescriptionImpl.hpp 20 Jun 2003 18:40:29 -0000 1.1
+++ XMLSchemaDescriptionImpl.hpp 31 Jul 2003 17:14:27 -0000 1.2
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.2 2003/07/31 17:14:27 peiyongz
+ * Grammar embed grammar description
+ *
* Revision 1.1 2003/06/20 18:40:29 peiyongz
* Stateless Grammar Pool :: Part I
*
@@ -156,7 +159,7 @@
* setLocationHints
*
*/
- virtual void setLocationHints(RefArrayVectorOf<XMLCh>* const);
+ virtual void setLocationHints(const XMLCh* const);
/**
* setTriggeringComponent
@@ -195,15 +198,15 @@
//
// fContextType
//
- // fNamespace
+ // fNamespace owned
//
- // fLocationHints
+ // fLocationHints owned
//
- // fTriggeringComponent
+ // fTriggeringComponent owned
//
- // fEnclosingElementName
+ // fEnclosingElementName owned
//
- // fAttributes
+ // fAttributes referenced
//
// -----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org