source: NonGTP/Xerces/xerces-c_2_8_0/include/xercesc/framework/XMLContentModel.hpp @ 2674

Revision 2674, 4.5 KB checked in by mattausch, 16 years ago (diff)
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: XMLContentModel.hpp 568078 2007-08-21 11:43:25Z amassari $
20 */
21
22
23#if !defined(CONTENTMODEL_HPP)
24#define CONTENTMODEL_HPP
25
26#include <xercesc/util/XMemory.hpp>
27#include <xercesc/util/QName.hpp>
28
29XERCES_CPP_NAMESPACE_BEGIN
30
31class ContentLeafNameTypeVector;
32class GrammarResolver;
33class XMLStringPool;
34class XMLValidator;
35class SchemaGrammar;
36
37/**
38 *  This class defines the abstract interface for all content models. All
39 *  elements have a content model against which (if validating) its content
40 *  is checked. Each type of validator (DTD, Schema, etc...) can have
41 *  different types of content models, and even with each type of validator
42 *  there can be specialized content models. So this simple class provides
43 *  the abstract API via which all the types of contents models are dealt
44 *  with generically. Its pretty simple.
45 */
46class XMLPARSER_EXPORT XMLContentModel : public XMemory
47{
48public:
49    // ---------------------------------------------------------------------------
50    //  Public static data
51    //
52    //  gInvalidTrans
53    //      This value represents an invalid transition in each line of the
54    //      transition table.
55    //
56    //  gEOCFakeId
57    //  gEpsilonFakeId
58    //      We have to put in a couple of special CMLeaf nodes to represent
59    //      special values, using fake element ids that we know won't conflict
60    //      with real element ids.
61    //
62    //
63    // ---------------------------------------------------------------------------
64    static const unsigned int   gInvalidTrans;
65    static const unsigned int   gEOCFakeId;
66    static const unsigned int   gEpsilonFakeId;
67
68    // -----------------------------------------------------------------------
69    //  Constructors are hidden, only the virtual Destructor is exposed
70    // -----------------------------------------------------------------------
71    /** @name Destructor */
72    //@{
73    virtual ~XMLContentModel()
74    {
75    }
76    //@}
77
78
79    // -----------------------------------------------------------------------
80    //  The virtual content model interface provided by derived classes
81    // -----------------------------------------------------------------------
82        virtual int validateContent
83    (
84        QName** const         children
85      , const unsigned int    childCount
86      , const unsigned int    emptyNamespaceId
87    ) const = 0;
88
89        virtual int validateContentSpecial
90    (
91        QName** const           children
92      , const unsigned int      childCount
93      , const unsigned int      emptyNamespaceId
94      , GrammarResolver*  const pGrammarResolver
95      , XMLStringPool*    const pStringPool
96    ) const =0;
97
98        virtual void checkUniqueParticleAttribution
99    (
100        SchemaGrammar*    const pGrammar
101      , GrammarResolver*  const pGrammarResolver
102      , XMLStringPool*    const pStringPool
103      , XMLValidator*     const pValidator
104      , unsigned int*     const pContentSpecOrgURI
105      , const XMLCh*            pComplexTypeName = 0
106    ) =0;
107
108    virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector()
109          const = 0;
110
111    virtual unsigned int getNextState(const unsigned int currentState,
112                                      const unsigned int elementIndex) const = 0;
113
114protected :
115    // -----------------------------------------------------------------------
116    //  Hidden Constructors
117    // -----------------------------------------------------------------------
118    XMLContentModel()
119    {
120    }
121
122
123private :
124    // -----------------------------------------------------------------------
125    //  Unimplemented constructors and operators
126    // -----------------------------------------------------------------------
127    XMLContentModel(const XMLContentModel&);
128    XMLContentModel& operator=(const XMLContentModel&);
129};
130
131XERCES_CPP_NAMESPACE_END
132
133#endif
Note: See TracBrowser for help on using the repository browser.