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