00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(XMLGRAMMARPOOL_HPP)
00023 #define XMLGRAMMARPOOL_HPP
00024
00025 #include <xercesc/util/PlatformUtils.hpp>
00026 #include <xercesc/util/RefHashTableOf.hpp>
00027 #include <xercesc/util/XMemory.hpp>
00028 #include <xercesc/framework/psvi/XSModel.hpp>
00029
00030
00031 XERCES_CPP_NAMESPACE_BEGIN
00032
00033 class Grammar;
00034 class XMLGrammarDescription;
00035 class DTDGrammar;
00036 class SchemaGrammar;
00037 class XMLDTDDescription;
00038 class XMLSchemaDescription;
00039 class XMLStringPool;
00040 class BinInputStream;
00041 class BinOutputStream;
00042
00043 class XMLGrammarPool : public XMemory
00044 {
00045 public :
00046
00048
00050
00055 virtual ~XMLGrammarPool(){};
00057
00058
00060
00062
00076 virtual bool cacheGrammar(Grammar* const gramToCache) = 0;
00077
00085 virtual Grammar* retrieveGrammar(XMLGrammarDescription* const gramDesc) = 0;
00086
00087
00096 virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey) = 0;
00097
00098
00104 virtual RefHashTableOfEnumerator<Grammar> getGrammarEnumerator() const = 0;
00105
00112 virtual bool clear() = 0;
00113
00123 virtual void lockPool() = 0;
00124
00135 virtual void unlockPool() = 0;
00136
00138
00139
00141
00143
00148 virtual DTDGrammar* createDTDGrammar() = 0;
00149
00154 virtual SchemaGrammar* createSchemaGrammar() = 0;
00155
00160 virtual XMLDTDDescription* createDTDDescription(const XMLCh* const systemId) = 0;
00165 virtual XMLSchemaDescription* createSchemaDescription(const XMLCh* const targetNamespace) = 0;
00166
00168
00169
00171
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187 virtual XSModel *getXSModel() = 0;
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204 virtual XSModel *getXSModel(bool& XSModelWasChanged)
00205 {
00206 XSModelWasChanged = true;
00207 return getXSModel();
00208 }
00209
00210
00211
00212
00214
00216
00221 inline MemoryManager* getMemoryManager()
00222 {
00223 return fMemMgr;
00224 }
00225
00232 virtual XMLStringPool *getURIStringPool() = 0;
00234
00235
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291 virtual void serializeGrammars(BinOutputStream* const) = 0;
00292 virtual void deserializeGrammars(BinInputStream* const) = 0;
00293
00294
00295
00296
00297
00298 inline void setIgnoreSerializedAnnotations(const bool flag)
00299 {
00300 fIgnoreSerializedAnnotations = flag;
00301 };
00302 inline bool getIgnoreSerializedAnnotations() const
00303 {
00304 return fIgnoreSerializedAnnotations;
00305 };
00306
00307 protected :
00308
00310
00312 XMLGrammarPool(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager)
00313 :fMemMgr(memMgr)
00314 ,fIgnoreSerializedAnnotations(false)
00315 {
00316 };
00318
00319 private :
00320
00322
00324 XMLGrammarPool(const XMLGrammarPool& );
00325 XMLGrammarPool& operator=(const XMLGrammarPool& );
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336 MemoryManager* const fMemMgr;
00337 bool fIgnoreSerializedAnnotations;
00338
00339 };
00340
00341 XERCES_CPP_NAMESPACE_END
00342
00343 #endif