/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Grammar.hpp 568078 2007-08-21 11:43:25Z amassari $ */ #if !defined(GRAMMAR_HPP) #define GRAMMAR_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLGrammarDescription; // // This abstract class specifies the interface for a Grammar // class VALIDATORS_EXPORT Grammar : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Class Specific Types // // DTDGrammarType - Indicate this Grammar is built from a DTD. // SchemaGrammarType - Indicate this Grammar is built from a Schema. // // TOP_LEVEL_SCOPE - outermost scope level (i.e. global) of a declaration. // For DTD, all element decls and attribute decls always // have TOP_LEVEL_SCOPE. For schema, it may varies if // it is inside a complex type. // // UNKNOWN_SCOPE - unknown scope level. None of the decls should have this. // // ----------------------------------------------------------------------- enum GrammarType { DTDGrammarType , SchemaGrammarType , UnKnown }; enum { // These are well-known values that must simply be larger // than any reasonable scope UNKNOWN_SCOPE = UINT_MAX - 0 , TOP_LEVEL_SCOPE = UINT_MAX - 1 }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- virtual ~Grammar(){}; // ----------------------------------------------------------------------- // Virtual Getter methods // ----------------------------------------------------------------------- virtual GrammarType getGrammarType() const =0; virtual const XMLCh* getTargetNamespace() const =0; virtual bool getValidated() const = 0; // Element Decl // this method should only be used while the grammar is being // constructed, not while it is being used // in a validation episode! virtual XMLElementDecl* findOrAddElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) = 0; virtual unsigned int getElemId ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const = 0; virtual const XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const = 0; virtual XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) = 0; virtual const XMLElementDecl* getElemDecl ( const unsigned int elemId ) const = 0; virtual XMLElementDecl* getElemDecl ( const unsigned int elemId ) = 0; // Notation virtual const XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ) const=0; virtual XMLNotationDecl* getNotationDecl ( const XMLCh* const notName )=0; // ----------------------------------------------------------------------- // Virtual Setter methods // ----------------------------------------------------------------------- virtual XMLElementDecl* putElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , const bool notDeclared = false ) = 0; virtual unsigned int putElemDecl ( XMLElementDecl* const elemDecl , const bool notDeclared = false ) = 0; virtual unsigned int putNotationDecl ( XMLNotationDecl* const notationDecl ) const=0; virtual void setValidated(const bool newState) = 0; // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- virtual void reset()=0; virtual void setGrammarDescription( XMLGrammarDescription*) = 0; virtual XMLGrammarDescription* getGrammarDescription() const = 0; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(Grammar) static void storeGrammar(XSerializeEngine& serEng , Grammar* const grammar); static Grammar* loadGrammar(XSerializeEngine& serEng); protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- Grammar(){}; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- Grammar(const Grammar&); Grammar& operator=(const Grammar&); }; XERCES_CPP_NAMESPACE_END #endif