[prev in list] [next in list] [prev in thread] [next in thread]
List: xerces-cvs
Subject: cvs commit: xml-xerces/c/src/xercesc/validators/schema SchemaValidator.cpp SubstitutionGroupComparat
From: peiyongz () apache ! org
Date: 2003-07-31 17:14:27
[Download RAW message or body]
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic