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: XSConstants.hpp 527149 2007-04-10 14:56:39Z amassari $
20  */
21 
22 #if !defined(XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP
24 
25 #include <xercesc/util/RefVectorOf.hpp>
26 #include <xercesc/util/RefArrayVectorOf.hpp>
27 
28 XERCES_CPP_NAMESPACE_BEGIN
29 
30 /**
31  * This contains constants needed in the schema component model.
32  */
33 
34 // forward definitions for typedefs
35 class XSAnnotation;
36 class XSAttributeUse;
37 class XSFacet;
38 class XSMultiValueFacet;
39 class XSNamespaceItem;
40 class XSParticle;
41 class XSSimpleTypeDefinition;
42 
43 // these typedefs are intended to help hide dependence on utility
44 // classes, as well as to define more intuitive names for commonly
45 // used concepts.
46 
47 typedef RefVectorOf <XSAnnotation> XSAnnotationList;
48 typedef RefVectorOf <XSAttributeUse> XSAttributeUseList;
49 typedef RefVectorOf <XSFacet> XSFacetList;
50 typedef RefVectorOf <XSMultiValueFacet> XSMultiValueFacetList;
51 typedef RefVectorOf <XSNamespaceItem> XSNamespaceItemList;
52 typedef RefVectorOf <XSParticle> XSParticleList;
53 typedef RefVectorOf <XSSimpleTypeDefinition> XSSimpleTypeDefinitionList;
54 typedef RefArrayVectorOf <XMLCh> StringList;
55 
56 class XMLPARSER_EXPORT XSConstants
57 {
58 public:
59 
60     // XML Schema Components
61     enum COMPONENT_TYPE {
62 	    /**
63 	     * The object describes an attribute declaration.
64 	     */
65 	      ATTRIBUTE_DECLARATION     = 1,
66 	    /**
67 	     * The object describes an element declaration.
68 	     */
69 	      ELEMENT_DECLARATION       = 2,
70 	    /**
71 	     * The object describes a complex type or simple type definition.
72 	     */
73 	      TYPE_DEFINITION           = 3,
74 	    /**
75 	     * The object describes an attribute use definition.
76 	     */
77 	      ATTRIBUTE_USE             = 4,
78 	    /**
79 	     * The object describes an attribute group definition.
80 	     */
81 	      ATTRIBUTE_GROUP_DEFINITION= 5,
82 	    /**
83 	     * The object describes a model group definition.
84 	     */
85 	      MODEL_GROUP_DEFINITION    = 6,
86 	    /**
87 	     * A model group.
88 	     */
89 	      MODEL_GROUP               = 7,
90 	    /**
91 	     * The object describes a particle.
92 	     */
93 	      PARTICLE                  = 8,
94 	    /**
95 	     * The object describes a wildcard.
96 	     */
97 	      WILDCARD                  = 9,
98 	    /**
99 	     * The object describes an identity constraint definition.
100 	     */
101 	      IDENTITY_CONSTRAINT       = 10,
102 	    /**
103 	     * The object describes a notation declaration.
104 	     */
105 	      NOTATION_DECLARATION      = 11,
106 	    /**
107 	     * The object describes an annotation.
108 	     */
109 	      ANNOTATION                = 12,
110 	    /**
111 	     * The object describes a constraining facet.
112 	     */
113 	      FACET                     = 13,
114 
115 	    /**
116 	     * The object describes enumeration/pattern facets.
117 	     */
118 	      MULTIVALUE_FACET           = 14
119     };
120 
121     // Derivation constants
122     enum DERIVATION_TYPE {
123 	    /**
124 	     * No constraint is available.
125 	     */
126 	     DERIVATION_NONE     = 0,
127 	    /**
128 	     * <code>XSTypeDefinition</code> final set or
129 	     * <code>XSElementDeclaration</code> disallowed substitution group.
130 	     */
131 	     DERIVATION_EXTENSION      = 1,
132 	    /**
133 	     * <code>XSTypeDefinition</code> final set or
134 	     * <code>XSElementDeclaration</code> disallowed substitution group.
135 	     */
136 	     DERIVATION_RESTRICTION    = 2,
137 	    /**
138 	     * <code>XSTypeDefinition</code> final set.
139 	     */
140 	     DERIVATION_SUBSTITUTION   = 4,
141 	    /**
142 	     * <code>XSTypeDefinition</code> final set.
143 	     */
144 	     DERIVATION_UNION          = 8,
145 	    /**
146 	     * <code>XSTypeDefinition</code> final set.
147 	     */
148 	     DERIVATION_LIST           = 16
149     };
150 
151     // Scope
152     enum SCOPE {
153 	    /**
154 	     * The scope of a declaration within named model groups or attribute
155 	     * groups is <code>absent</code>. The scope of such declaration is
156 	     * determined when it is used in the construction of complex type
157 	     * definitions.
158 	     */
159 	     SCOPE_ABSENT              = 0,
160 	    /**
161 	     * A scope of <code>global</code> identifies top-level declarations.
162 	     */
163 	     SCOPE_GLOBAL              = 1,
164 	    /**
165 	     * <code>Locally scoped</code> declarations are available for use only
166 	     * within the complex type.
167 	     */
168 	     SCOPE_LOCAL               = 2
169     };
170 
171     // Value Constraint
172     enum VALUE_CONSTRAINT {
173 	    /**
174 	     * Indicates that the component does not have any value constraint.
175 	     */
176 	     VALUE_CONSTRAINT_NONE          = 0,
177 	    /**
178 	     * Indicates that there is a default value constraint.
179 	     */
180 	     VALUE_CONSTRAINT_DEFAULT       = 1,
181 	    /**
182 	     * Indicates that there is a fixed value constraint for this attribute.
183 	     */
184 	     VALUE_CONSTRAINT_FIXED         = 2
185     };
186 
187 private:
188     // -----------------------------------------------------------------------
189     //  Unimplemented constructors and operators
190     // -----------------------------------------------------------------------
191     XSConstants();
192 };
193 
194 XERCES_CPP_NAMESPACE_END
195 
196 #endif
197