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$
20 */
21
22 #if !defined(XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP
24
25 #include <xercesc/framework/psvi/XSObject.hpp>
26 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
27
28 XERCES_CPP_NAMESPACE_BEGIN
29
30 /**
31 * This class represents all Schema Facets which may possess multiple
32 * lexical values/annotations (i.e., Pattern and Enumeration facets).
33 * This is *always* owned by the validator /parser object from which
34 * it is obtained.
35 */
36
37 // forward declarations
38 class XSAnnotation;
39
40 class XMLPARSER_EXPORT XSMultiValueFacet : public XSObject
41 {
42 public:
43
44 // Constructors and Destructor
45 // -----------------------------------------------------------------------
46 /** @name Constructors */
47 //@{
48
49 /**
50 * The default constructor
51 *
52 * @param facetKind
53 * @param lexicalValues
54 * @param isFixed
55 * @param headAnnot
56 * @param xsModel
57 * @param manager The configurable memory manager
58 */
59 XSMultiValueFacet
60 (
61 XSSimpleTypeDefinition::FACET facetKind
62 , StringList* lexicalValues
63 , bool isFixed
64 , XSAnnotation* const headAnnot
65 , XSModel* const xsModel
66 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
67 );
68
69 //@};
70
71 /** @name Destructor */
72 //@{
73 ~XSMultiValueFacet();
74 //@}
75
76 //---------------------
77 /** @name XSMultiValueFacet methods */
78
79 //@{
80
81 /**
82 * @return An indication as to the facet's type; see <code>XSSimpleTypeDefinition::FACET</code>
83 */
84 XSSimpleTypeDefinition::FACET getFacetKind() const;
85
86 /**
87 * @return Returns the values of a constraining facet.
88 */
89 StringList *getLexicalFacetValues();
90
91 /**
92 * Check whether a facet value is fixed.
93 */
94 bool isFixed() const;
95
96 /**
97 * @return the annotations belonging to this facet's values
98 */
99 XSAnnotationList *getAnnotations();
100
101 //@}
102
103 //----------------------------------
104 /** methods needed by implementation */
105
106 //@{
107
108 //@}
109 private:
110
111 // -----------------------------------------------------------------------
112 // Unimplemented constructors and operators
113 // -----------------------------------------------------------------------
114 XSMultiValueFacet(const XSMultiValueFacet&);
115 XSMultiValueFacet & operator=(const XSMultiValueFacet &);
116
117 protected:
118
119 // -----------------------------------------------------------------------
120 // data members
121 // -----------------------------------------------------------------------
122 XSSimpleTypeDefinition::FACET fFacetKind;
123 bool fIsFixed;
124 StringList* fLexicalValues; // not owned by this class
125 XSAnnotationList* fXSAnnotationList;
126 };
127
128
getFacetKind() const129 inline XSSimpleTypeDefinition::FACET XSMultiValueFacet::getFacetKind() const
130 {
131 return fFacetKind;
132 }
133
isFixed() const134 inline bool XSMultiValueFacet::isFixed() const
135 {
136 return fIsFixed;
137 }
138
getLexicalFacetValues()139 inline StringList *XSMultiValueFacet::getLexicalFacetValues()
140 {
141 return fLexicalValues;
142 }
143
getAnnotations()144 inline XSAnnotationList *XSMultiValueFacet::getAnnotations()
145 {
146 return fXSAnnotationList;
147 }
148
149
150 XERCES_CPP_NAMESPACE_END
151
152 #endif
153