source: icXML/icXML-devel/src/icxercesc/validators/common/Grammar.hpp @ 3153

Last change on this file since 3153 was 3104, checked in by cameron, 6 years ago

Additional files for icXML 0.9

File size: 6.9 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: Grammar.hpp 676911 2008-07-15 13:27:32Z amassari $
20 */
21
22#if !defined(XERCESC_INCLUDE_GUARD_GRAMMAR_HPP)
23#define XERCESC_INCLUDE_GUARD_GRAMMAR_HPP
24
25#include <limits.h>
26
27#include <icxercesc/framework/XMLElementDecl.hpp>
28#include <icxercesc/framework/XMLEntityDecl.hpp>
29#include <xercesc/framework/XMLNotationDecl.hpp>
30#include <xercesc/internal/XSerializable.hpp>
31
32XERCES_CPP_NAMESPACE_BEGIN
33
34class XMLGrammarDescription;
35class XMLNamespaceResolver;
36
37//
38// This abstract class specifies the interface for a Grammar
39//
40
41class VALIDATORS_EXPORT Grammar : public XSerializable, public XMemory
42{
43public:
44
45    // -----------------------------------------------------------------------
46    //  Class Specific Types
47    //
48    //  DTDGrammarType    - Indicate this Grammar is built from a DTD.
49    //  SchemaGrammarType - Indicate this Grammar is built from a Schema.
50    //
51    //  TOP_LEVEL_SCOPE - outermost scope level (i.e. global) of a declaration.
52    //                    For DTD, all element decls and attribute decls always
53    //                    have TOP_LEVEL_SCOPE.  For schema, it may vary if
54    //                    it is inside a complex type.
55    //
56    //  UNKNOWN_SCOPE   - unknown scope level.  None of the decls should have this.
57    //
58    // -----------------------------------------------------------------------
59    enum GrammarType {
60        DTDGrammarType
61      , SchemaGrammarType
62      , UnKnown
63    };
64
65    enum {
66        // These are well-known values that must simply be larger
67        // than any reasonable scope
68                 UNKNOWN_SCOPE          = UINT_MAX - 0
69           , TOP_LEVEL_SCOPE    = UINT_MAX - 1
70    };
71
72    // -----------------------------------------------------------------------
73    //  Constructors and Destructor
74    // -----------------------------------------------------------------------
75    virtual ~Grammar() {}
76
77    // -----------------------------------------------------------------------
78    //  Virtual Getter methods
79    // -----------------------------------------------------------------------
80    virtual GrammarType getGrammarType() const =0;
81    virtual const XMLCh* getTargetNamespace() const =0;
82
83
84    virtual bool getValidated() const = 0;
85
86    // Element Decl
87
88    // this method should only be used while the grammar is being
89    // constructed, not while it is being used
90    // in a validation episode!
91    virtual XMLElementDecl* findOrAddElemDecl
92    (
93        const   unsigned int    uriId
94        , const XMLCh* const    baseName
95        , const XMLCh* const    prefixName
96        , const XMLCh* const    qName
97        , unsigned int          scope
98        ,       bool&           wasAdded
99    ) = 0;
100
101    virtual XMLSize_t getElemId
102    (
103        const   unsigned int    uriId
104        , const XMLCh* const    baseName
105        , const XMLCh* const    qName
106        , unsigned int          scope
107    )   const = 0;
108
109    virtual const XMLElementDecl* getElemDecl
110    (
111        const   unsigned int    uriId
112        , const XMLCh* const    baseName
113        , const XMLCh* const    qName
114        , unsigned int          scope
115    )   const = 0;
116
117    virtual XMLElementDecl* getElemDecl
118    (
119        const   unsigned int    uriId
120        , const XMLCh* const    baseName
121        , const XMLCh* const    qName
122        , unsigned int          scope
123    ) = 0;
124
125    virtual const XMLElementDecl* getElemDecl
126    (
127        const   unsigned int    elemId
128    )   const = 0;
129
130    virtual XMLElementDecl* getElemDecl
131    (
132        const   unsigned int    elemId
133    ) = 0;
134
135    // Notation
136    virtual const XMLNotationDecl* getNotationDecl
137    (
138        const   XMLCh* const    notName
139    )   const=0;
140
141    virtual XMLNotationDecl* getNotationDecl
142    (
143        const   XMLCh* const    notName
144    )=0;
145
146    // -----------------------------------------------------------------------
147    //  Getter methods
148    // -----------------------------------------------------------------------
149
150    inline unsigned int getTargetNamespaceId() const
151    {
152        return fNamespaceId;
153    }
154
155    inline void setTargetNamespaceId(unsigned int namespaceId)
156    {
157        fNamespaceId = namespaceId;
158    }
159
160    // -----------------------------------------------------------------------
161    //  Virtual Setter methods
162    // -----------------------------------------------------------------------
163    virtual XMLElementDecl* putElemDecl
164    (
165        const   unsigned int    uriId
166        , const XMLCh* const    baseName
167        , const XMLCh* const    prefixName
168        , const XMLCh* const    qName
169        , unsigned int          scope
170        , const bool            notDeclared = false
171    ) = 0;
172
173    virtual XMLSize_t putElemDecl
174    (
175        XMLElementDecl* const elemDecl
176        , const bool          notDeclared = false
177    )   = 0;
178
179    virtual XMLSize_t putNotationDecl
180    (
181        XMLNotationDecl* const notationDecl
182    )   const=0;
183
184    virtual void setValidated(const bool newState) = 0;
185
186    // -----------------------------------------------------------------------
187    //  Virtual methods
188    // -----------------------------------------------------------------------
189    virtual void reset()=0;
190
191    virtual void                    setGrammarDescription( XMLGrammarDescription*) = 0;
192    virtual XMLGrammarDescription*  getGrammarDescription() const = 0;
193
194    /***
195     * Support for Serialization/De-serialization
196     ***/
197    DECL_XSERIALIZABLE(Grammar)
198
199        static void     storeGrammar(XSerializeEngine&        serEng
200                               , Grammar* const           grammar);
201
202        static Grammar* loadGrammar(XSerializeEngine& serEng);
203
204protected :
205    // -----------------------------------------------------------------------
206    //  Hidden constructors
207    // -----------------------------------------------------------------------
208    Grammar();
209
210private:
211    // -----------------------------------------------------------------------
212    //  Unimplemented constructors and operators
213    // -----------------------------------------------------------------------
214    Grammar(const Grammar&);
215    Grammar& operator=(const Grammar&);
216
217private:
218
219    unsigned int                                        fNamespaceId;
220};
221
222XERCES_CPP_NAMESPACE_END
223
224#endif
Note: See TracBrowser for help on using the repository browser.