peiyongz 2003/07/31 10:12:10 Modified: c/src/xercesc/validators/schema SchemaGrammar.cpp SchemaGrammar.hpp Log: Grammar embed grammar description Revision Changes Path 1.7 +27 -0 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SchemaGrammar.cpp 21 May 2003 21:35:31 -0000 1.6 +++ SchemaGrammar.cpp 31 Jul 2003 17:12:10 -0000 1.7 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.7 2003/07/31 17:12:10 peiyongz + * Grammar embed grammar description + * * Revision 1.6 2003/05/21 21:35:31 knoaman * Pass the memory manager. * @@ -120,6 +123,7 @@ #include <xercesc/validators/schema/SchemaSymbols.hpp> #include <xercesc/validators/schema/XercesGroupInfo.hpp> #include <xercesc/validators/schema/XercesAttGroupInfo.hpp> +#include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -142,6 +146,7 @@ , fMemoryManager(manager) , fValidated(false) , fDatatypeRegistry(manager) + , fGramDesc(0) { // // Init all the pool members. @@ -158,6 +163,9 @@ fIDRefList = new (fMemoryManager) RefHashTableOf<XMLRefInfo>(29, fMemoryManager); fDatatypeRegistry.expandRegistryToFullSchemaSet(); + //REVISIT: use grammarPool to create + fGramDesc = new (fMemoryManager) XMLSchemaDescriptionImpl(XMLUni::fgXMLNSURIName, fMemoryManager); + // // Call our own reset method. This lets us have the pool setup stuff // done in just one place (because this stame setup stuff has to be @@ -263,6 +271,25 @@ delete fNamespaceScope; delete fValidSubstitutionGroups; delete fIDRefList; + delete fGramDesc; +} + +void SchemaGrammar::setGrammarDescription( XMLGrammarDescription* gramDesc) +{ + if ((!gramDesc) || + (gramDesc->getGrammarType() != Grammar::SchemaGrammarType)) + return; + + if (fGramDesc) + delete fGramDesc; + + //adopt the grammar Description + fGramDesc = (XMLSchemaDescription*) gramDesc; +} + +XMLGrammarDescription* SchemaGrammar::getGrammarDescription() const +{ + return fGramDesc; } XERCES_CPP_NAMESPACE_END 1.8 +11 -0 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- SchemaGrammar.hpp 16 May 2003 21:43:21 -0000 1.7 +++ SchemaGrammar.hpp 31 Jul 2003 17:12:10 -0000 1.8 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2003/07/31 17:12:10 peiyongz + * Grammar embed grammar description + * * Revision 1.7 2003/05/16 21:43:21 knoaman * Memory manager implementation: Modify constructors to pass in the memory manager. * @@ -133,6 +136,7 @@ #include <xercesc/util/ValueVectorOf.hpp> #include <xercesc/validators/datatype/IDDatatypeValidator.hpp> #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp> +#include <xercesc/framework/XMLSchemaDescription.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -279,6 +283,9 @@ void setNamespaceScope(NamespaceScope* const nsScope); void setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const); + virtual void setGrammarDescription( XMLGrammarDescription*); + virtual XMLGrammarDescription* getGrammarDescription() const; + // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- @@ -347,6 +354,9 @@ // Indicates if the content of the Grammar has been pre-validated // or not (UPA checking, etc.). When using a cached grammar, no need // for pre content validation. + // + // fGramDesc: adopted + // // ----------------------------------------------------------------------- XMLCh* fTargetNamespace; RefHash3KeysIdPool<SchemaElementDecl>* fElemDeclPool; @@ -363,6 +373,7 @@ MemoryManager* fMemoryManager; bool fValidated; DatatypeValidatorFactory fDatatypeRegistry; + XMLSchemaDescription* fGramDesc; };
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]