diff --git a/src/xercesc/internal/DGXMLScanner.cpp b/src/xercesc/internal/DGXMLScanner.cpp index c1952dc80d7abcc6bc7fdd02c7620726b65e3ea6..fb3fabbc38895e2dc2bf0bca49d47cb5e086f510 100644 --- a/src/xercesc/internal/DGXMLScanner.cpp +++ b/src/xercesc/internal/DGXMLScanner.cpp @@ -923,9 +923,7 @@ void DGXMLScanner::scanDocTypeDecl() { InputSource* sysIdSrc = resolveSystemId(sysId); Janitor<InputSource> janSysIdSrc(sysIdSrc); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(sysIdSrc->getSystemId()); - Janitor<XMLDTDDescription> janName(gramDesc); - Grammar* grammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -981,10 +979,9 @@ void DGXMLScanner::scanDocTypeDecl() unsigned int stringId = fGrammarResolver->getStringPool()->addOrFind(srcUsed->getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(stringId); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->orphanGrammar(gramDesc); - gramDesc->setRootName(sysIdStr); - fGrammarResolver->putGrammar(gramDesc, fGrammar); + fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); + ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setRootName(sysIdStr); + fGrammarResolver->putGrammar(fGrammar); } // In order to make the processing work consistently, we have to @@ -1686,8 +1683,7 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src, fValidator->reset(); fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); + fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fValidator->setGrammar(fGrammar); @@ -1708,10 +1704,9 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src, unsigned int sysId = fGrammarResolver->getStringPool()->addOrFind(src.getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(sysId); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->orphanGrammar(gramDesc); - gramDesc->setRootName(sysIdStr); - fGrammarResolver->putGrammar(gramDesc, fGrammar); + fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); + ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setRootName(sysIdStr); + fGrammarResolver->putGrammar(fGrammar); } // Handle the creation of the XML reader object for this input source. @@ -2044,8 +2039,7 @@ void DGXMLScanner::scanReset(const InputSource& src) fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); + fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fRootGrammar = 0; fValidator->setGrammar(fGrammar); @@ -2291,7 +2285,7 @@ void DGXMLScanner::scanAttrListforNameSpaces(RefVectorOf<XMLAttr>* theAttrList, // check for duplicate namespace attributes: // by checking for qualified names with the same local part and with prefixes - // which have been bound to namespace names that are identical. + // which have been bound to namespace names that are identical. XMLAttr* loopAttr; for (int attrIndex=0; attrIndex < index; attrIndex++) { loopAttr = theAttrList->elementAt(attrIndex); @@ -2304,7 +2298,7 @@ void DGXMLScanner::scanAttrListforNameSpaces(RefVectorOf<XMLAttr>* theAttrList, , elemDecl->getFullName() ); } - } + } } } diff --git a/src/xercesc/internal/IGXMLScanner.cpp b/src/xercesc/internal/IGXMLScanner.cpp index 4401eb8f06e501a4a74f26a1d063661787ae348c..cfeddbd5bda57c99ddc3e3ac6c298c43ef675539 100644 --- a/src/xercesc/internal/IGXMLScanner.cpp +++ b/src/xercesc/internal/IGXMLScanner.cpp @@ -1328,9 +1328,7 @@ void IGXMLScanner::scanDocTypeDecl() { InputSource* sysIdSrc = resolveSystemId(sysId); Janitor<InputSource> janSysIdSrc(sysIdSrc); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(sysIdSrc->getSystemId()); - Janitor<XMLDTDDescription> janName(gramDesc); - Grammar* grammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -1386,10 +1384,9 @@ void IGXMLScanner::scanDocTypeDecl() unsigned int stringId = fGrammarResolver->getStringPool()->addOrFind(srcUsed->getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(stringId); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->orphanGrammar(gramDesc); - gramDesc->setRootName(sysIdStr); - fGrammarResolver->putGrammar(gramDesc, fGrammar); + fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); + ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setRootName(sysIdStr); + fGrammarResolver->putGrammar(fGrammar); } // In order to make the processing work consistently, we have to @@ -2855,8 +2852,7 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src, } fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); + fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); @@ -2877,11 +2873,10 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src, unsigned int sysId = fGrammarResolver->getStringPool()->addOrFind(src.getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(sysId); - - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->orphanGrammar(gramDesc); - gramDesc->setRootName(sysIdStr); - fGrammarResolver->putGrammar(gramDesc, fGrammar); + + fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); + ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setRootName(sysIdStr); + fGrammarResolver->putGrammar(fGrammar); } // Handle the creation of the XML reader object for this input source. diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp index e61969cc5aa33168eaa6023a533f597b16e1c930..23563d48dd7e52f4244d2cca48922d339bc9e473 100644 --- a/src/xercesc/internal/IGXMLScanner2.cpp +++ b/src/xercesc/internal/IGXMLScanner2.cpp @@ -217,9 +217,7 @@ IGXMLScanner::buildAttList(const RefVectorOf<KVStringPair>& providedAttrs //if schema, see if we should lax or skip the validation of this attribute if (anyAttributeValidation(attWildCard, uriId, skipThisOne, laxThisOne)) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(getURIText(uriId)); - Janitor<XMLSchemaDescription> janName(gramDesc); - SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc); + SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(getURIText(uriId)); if (sGrammar && sGrammar->getGrammarType() == Grammar::SchemaGrammarType) { RefHashTableOf<XMLAttDef>* attRegistry = sGrammar->getAttributeDeclRegistry(); if (attRegistry) { @@ -457,7 +455,7 @@ IGXMLScanner::buildAttList(const RefVectorOf<KVStringPair>& providedAttrs // to the handler. We reuse its existing elements but expand it as // required. XMLAttr* curAttr; - + // check for duplicate namespace attributes: // by checking for qualified names with the same local part and with prefixes // which have been bound to namespace names that are identical. @@ -475,7 +473,7 @@ IGXMLScanner::buildAttList(const RefVectorOf<KVStringPair>& providedAttrs } } } - + if (retCount >= curAttListSize) { curAttr = new (fMemoryManager) XMLAttr @@ -889,8 +887,7 @@ void IGXMLScanner::scanReset(const InputSource& src) fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); - XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString); - fGrammarResolver->putGrammar(gramDesc, fDTDGrammar); + fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fRootGrammar = 0; @@ -1316,9 +1313,7 @@ void IGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr) void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uri); - Janitor<XMLSchemaDescription> janName(gramDesc); - Grammar* grammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* grammar = fGrammarResolver->getGrammar(uri); if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { XSDDOMParser parser(0, fMemoryManager, 0); @@ -1420,9 +1415,7 @@ void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* con fValidator->emitError(XMLValid::WrongTargetNamespace, loc, uri); } - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(newUri); - Janitor<XMLSchemaDescription> janName(gramDesc); - grammar = fGrammarResolver->getGrammar(gramDesc); + grammar = fGrammarResolver->getGrammar(newUri); } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -1447,6 +1440,10 @@ void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* con } grammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); + XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) grammar->getGrammarDescription(); + gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); + gramDesc->setLocationHints(srcToFill->getSystemId()); + TraverseSchema traverseSchema ( root @@ -1617,7 +1614,11 @@ Grammar* IGXMLScanner::loadXMLSchemaGrammar(const InputSource& src, DOMElement* root = document->getDocumentElement();// This is what we pass to TraverserSchema if (root != 0) { - SchemaGrammar* grammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); + SchemaGrammar* grammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); + XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) grammar->getGrammarDescription(); + gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); + gramDesc->setLocationHints(src.getSystemId()); + TraverseSchema traverseSchema ( root @@ -2627,9 +2628,7 @@ IGXMLScanner::scanEntityRef( const bool inAttVal bool IGXMLScanner::switchGrammar(const XMLCh* const newGrammarNameSpace) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(newGrammarNameSpace); - Janitor<XMLSchemaDescription> janName(gramDesc); - Grammar* tempGrammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* tempGrammar = fGrammarResolver->getGrammar(newGrammarNameSpace); if (!tempGrammar) { // This is a case where namespaces is on with a DTD grammar. diff --git a/src/xercesc/internal/SGXMLScanner.cpp b/src/xercesc/internal/SGXMLScanner.cpp index 2055ae9e88c292c87828ae98ab4382b1bc226c43..551f2fe9361cec7d92eddd301accd23629d1acd0 100644 --- a/src/xercesc/internal/SGXMLScanner.cpp +++ b/src/xercesc/internal/SGXMLScanner.cpp @@ -2055,9 +2055,7 @@ SGXMLScanner::buildAttList(const RefVectorOf<KVStringPair>& providedAttrs //if schema, see if we should lax or skip the validation of this attribute if (anyAttributeValidation(attWildCard, uriId, skipThisOne, laxThisOne)) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(getURIText(uriId)); - Janitor<XMLSchemaDescription> janName(gramDesc); - SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(gramDesc); + SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(getURIText(uriId)); if (sGrammar && sGrammar->getGrammarType() == Grammar::SchemaGrammarType) { RefHashTableOf<XMLAttDef>* attRegistry = sGrammar->getAttributeDeclRegistry(); if (attRegistry) { @@ -3064,9 +3062,7 @@ void SGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr) void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(uri); - Janitor<XMLSchemaDescription> janName(gramDesc); - Grammar* grammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* grammar = fGrammarResolver->getGrammar(uri); if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { XSDDOMParser parser(0, fMemoryManager, 0); @@ -3168,9 +3164,7 @@ void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* con fValidator->emitError(XMLValid::WrongTargetNamespace, loc, uri); } - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(newUri); - Janitor<XMLSchemaDescription> janName(gramDesc); - grammar = fGrammarResolver->getGrammar(gramDesc); + grammar = fGrammarResolver->getGrammar(newUri); } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -3183,6 +3177,9 @@ void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* con } grammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); + XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) grammar->getGrammarDescription(); + gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); + gramDesc->setLocationHints(srcToFill->getSystemId()); TraverseSchema traverseSchema ( @@ -3336,6 +3333,10 @@ Grammar* SGXMLScanner::loadXMLSchemaGrammar(const InputSource& src, if (root != 0) { SchemaGrammar* grammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); + XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) grammar->getGrammarDescription(); + gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); + gramDesc->setLocationHints(src.getSystemId()); + TraverseSchema traverseSchema ( root @@ -3989,9 +3990,7 @@ SGXMLScanner::scanEntityRef( const bool inAttVal bool SGXMLScanner::switchGrammar(const XMLCh* const newGrammarNameSpace) { - XMLSchemaDescription* gramDesc = fGrammarResolver->getGrammarPool()->createSchemaDescription(newGrammarNameSpace); - Janitor<XMLSchemaDescription> janName(gramDesc); - Grammar* tempGrammar = fGrammarResolver->getGrammar(gramDesc); + Grammar* tempGrammar = fGrammarResolver->getGrammar(newGrammarNameSpace); if (!tempGrammar) { tempGrammar = fSchemaGrammar; diff --git a/src/xercesc/internal/XMLGrammarPoolImpl.cpp b/src/xercesc/internal/XMLGrammarPoolImpl.cpp index eecf5430a314cd92a3bbfa2116ff45de7958b778..4a9eb663924b02fd5242bc10b452f882e74b346a 100644 --- a/src/xercesc/internal/XMLGrammarPoolImpl.cpp +++ b/src/xercesc/internal/XMLGrammarPoolImpl.cpp @@ -56,6 +56,11 @@ /* * $Log$ + * Revision 1.3 2003/07/31 17:05:03 peiyongz + * Grammar embed Grammar Description + * using getGrammar(URI) + * update GrammarDescription info + * * Revision 1.2 2003/06/20 22:19:30 peiyongz * Stateless Grammar Pool :: Part I * @@ -90,26 +95,25 @@ XMLGrammarPoolImpl::XMLGrammarPoolImpl(MemoryManager* const memMgr) :XMLGrammarPool(memMgr) ,fGrammarRegistry(0) { - fGrammarRegistry = new (memMgr) RefHashTableOf<GrammarEntry>(29, true, memMgr); + fGrammarRegistry = new (memMgr) RefHashTableOf<Grammar>(29, true, memMgr); } // ----------------------------------------------------------------------- // Implementation of Grammar Pool Interface // ----------------------------------------------------------------------- -void XMLGrammarPoolImpl::cacheGrammar(XMLGrammarDescription* const gramDesc - , Grammar* const gramToCache ) +void XMLGrammarPoolImpl::cacheGrammar(Grammar* const gramToCache ) { - if (!gramDesc || !gramToCache ) + if (!gramToCache ) return; - const XMLCh* grammarKey = gramDesc->getGrammarKey(); + const XMLCh* grammarKey = gramToCache->getGrammarDescription()->getGrammarKey(); if (fGrammarRegistry->containsKey(grammarKey)) { ThrowXML(RuntimeException, XMLExcepts::GC_ExistingGrammar); } - fGrammarRegistry->put((void*) grammarKey, new (getMemoryManager()) GrammarEntry(gramDesc, gramToCache)); + fGrammarRegistry->put((void*) grammarKey, gramToCache); } @@ -118,32 +122,16 @@ Grammar* XMLGrammarPoolImpl::retrieveGrammar(XMLGrammarDescription* const gramDe if (!gramDesc) return 0; - GrammarEntry* gramEntry = fGrammarRegistry->get(gramDesc->getGrammarKey()); + /*** + * This implementation simply use GrammarKey + */ + return fGrammarRegistry->get(gramDesc->getGrammarKey()); - if (!gramEntry) - return 0; - - return gramEntry->getGrammar(); } -Grammar* XMLGrammarPoolImpl::orphanGrammar(XMLGrammarDescription* const gramDesc) +Grammar* XMLGrammarPoolImpl::orphanGrammar(const XMLCh* const nameSpaceKey) { - if (!gramDesc) - return 0; - - GrammarEntry* gramEntry = fGrammarRegistry->orphanKey(gramDesc->getGrammarKey()); - - if (!gramEntry) - return 0; - - /*** - * Delete the grammarEntry but don't delete the grammar - */ - Grammar* theGram = gramEntry->getGrammar(); - gramEntry->nullGrammar(); - delete gramEntry; - - return theGram; + return fGrammarRegistry->orphanKey(nameSpaceKey); } void XMLGrammarPoolImpl::clear() @@ -184,30 +172,4 @@ XMLSchemaDescription* XMLGrammarPoolImpl::createSchemaDescription(const XMLCh* c return new (getMemoryManager()) XMLSchemaDescriptionImpl(targetNamespace, getMemoryManager()); } -// --------------------------------------------------------------------------- -// GrammarEntry: constructor and destructor -// --------------------------------------------------------------------------- -GrammarEntry::GrammarEntry(XMLGrammarDescription* const gramDesc - , Grammar* const grammar) -:fDescription(gramDesc) -,fGrammar(grammar) -{ -} - -/** - * - * A GrammarEntry is desctructed in two ways - * . from clear(), we need to destroy the GrammarDescription and Grammar - * . from orphanGrammar() - * - */ -GrammarEntry::~GrammarEntry() -{ - if (fDescription) - delete fDescription; - - if (fGrammar) - delete fGrammar; -} - XERCES_CPP_NAMESPACE_END diff --git a/src/xercesc/internal/XMLGrammarPoolImpl.hpp b/src/xercesc/internal/XMLGrammarPoolImpl.hpp index 29b98910c04445cab1f3ba1ae09b32ac4c5461e8..668e7dad90e6691e58caa6a4adb44244a46b1902 100644 --- a/src/xercesc/internal/XMLGrammarPoolImpl.hpp +++ b/src/xercesc/internal/XMLGrammarPoolImpl.hpp @@ -56,6 +56,11 @@ /* * $Log$ + * Revision 1.3 2003/07/31 17:05:03 peiyongz + * Grammar embed Grammar Description + * using getGrammar(URI) + * update GrammarDescription info + * * Revision 1.2 2003/06/23 21:06:21 peiyongz * to solve unresolved symbol on Solaris * @@ -74,8 +79,6 @@ XERCES_CPP_NAMESPACE_BEGIN -class GrammarEntry; - class XMLUTIL_EXPORT XMLGrammarPoolImpl : public XMLGrammarPool { public : @@ -97,12 +100,10 @@ public : /** * cacheGrammar * - * @param gramDesc: the grammar description * @param gramToCache: the Grammar to be cached in the grammar pool * */ - virtual void cacheGrammar(XMLGrammarDescription* const gramDesc - , Grammar* const gramToCache); + virtual void cacheGrammar(Grammar* const gramToCache); /** @@ -120,11 +121,10 @@ public : * * grammar removed from the grammar pool and owned by the caller * - * @param gramDesc: the Grammar Description used to search for grammar - * cached in the grammar pool + * @param nameSpaceKey: Key sed to search for grammar in the grammar pool * */ - virtual Grammar* orphanGrammar(XMLGrammarDescription* const); + virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); /** * clear @@ -196,56 +196,10 @@ private: // container // // ----------------------------------------------------------------------- - RefHashTableOf<GrammarEntry>* fGrammarRegistry; + RefHashTableOf<Grammar>* fGrammarRegistry; }; -/** - * Helper class, ought to be nested class - */ -class GrammarEntry : public XMemory -{ -public: - GrammarEntry(XMLGrammarDescription* const gramDesc - , Grammar* const grammar); - - ~GrammarEntry(); - - inline XMLGrammarDescription* getDescription() const; - - inline Grammar* getGrammar() const; - - inline void nullGrammar(); - - inline void nullDescription(); - -private: - - XMLGrammarDescription* fDescription; - Grammar* fGrammar; - -}; - -inline XMLGrammarDescription* GrammarEntry::getDescription() const -{ - return fDescription; -} - -inline Grammar* GrammarEntry::getGrammar() const -{ - return fGrammar; -} - -inline void GrammarEntry::nullGrammar() -{ - fGrammar = 0; -} - -inline void GrammarEntry::nullDescription() -{ - fDescription = 0; -} - XERCES_CPP_NAMESPACE_END #endif