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_XSATTRIBUTEGROUPDEFINITION_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP
24 
25 #include <xercesc/framework/psvi/XSObject.hpp>
26 
27 XERCES_CPP_NAMESPACE_BEGIN
28 
29 /**
30  * This class describes all properties of a Schema Attribute
31  * Group Definition component.
32  * This is *always* owned by the validator /parser object from which
33  * it is obtained.
34  */
35 
36 // forward declarations
37 class XSAnnotation;
38 class XSAttributeUse;
39 class XSWildcard;
40 class XercesAttGroupInfo;
41 
42 class XMLPARSER_EXPORT XSAttributeGroupDefinition : public XSObject
43 {
44 public:
45 
46     //  Constructors and Destructor
47     // -----------------------------------------------------------------------
48     /** @name Constructors */
49     //@{
50 
51     /**
52       * The default constructor
53       *
54       * @param  xercesAttGroupInfo
55       * @param  xsAttList
56       * @param  xsWildcard
57       * @param  xsAnnot
58       * @param  xsModel
59       * @param  manager     The configurable memory manager
60       */
61     XSAttributeGroupDefinition
62     (
63         XercesAttGroupInfo* const   xercesAttGroupInfo
64         , XSAttributeUseList* const xsAttList
65         , XSWildcard* const         xsWildcard
66         , XSAnnotation* const       xsAnnot
67         , XSModel* const            xsModel
68         , MemoryManager* const      manager = XMLPlatformUtils::fgMemoryManager
69     );
70 
71     //@};
72 
73     /** @name Destructor */
74     //@{
75     ~XSAttributeGroupDefinition();
76     //@}
77 
78     //---------------------
79     /** @name overridden XSObject methods */
80     //@{
81 
82     /**
83      * The name of type <code>NCName</code> of this declaration as defined in
84      * XML Namespaces.
85      */
86     const XMLCh* getName() const;
87 
88     /**
89      *  The [target namespace] of this object, or <code>null</code> if it is
90      * unspecified.
91      */
92     const XMLCh* getNamespace() const;
93 
94     /**
95      * A namespace schema information item corresponding to the target
96      * namespace of the component, if it's globally declared; or null
97      * otherwise.
98      */
99     XSNamespaceItem* getNamespaceItem();
100 
101     //@}
102 
103     //---------------------
104     /** @name XSAttributeGroupDefinition methods */
105 
106     //@{
107 
108     /**
109      * A set of [attribute uses].
110      */
111     XSAttributeUseList *getAttributeUses();
112 
113     /**
114      * Optional. A [wildcard].
115      */
116     XSWildcard *getAttributeWildcard() const;
117 
118     /**
119      * Optional. An [annotation].
120      */
121     XSAnnotation *getAnnotation() const;
122 
123     //@}
124 
125     //----------------------------------
126     /** methods needed by implementation */
127 
128     //@{
129 
130     //@}
131 private:
132 
133     // -----------------------------------------------------------------------
134     //  Unimplemented constructors and operators
135     // -----------------------------------------------------------------------
136     XSAttributeGroupDefinition(const XSAttributeGroupDefinition&);
137     XSAttributeGroupDefinition & operator=(const XSAttributeGroupDefinition &);
138 
139 protected:
140 
141     // -----------------------------------------------------------------------
142     //  data members
143     // -----------------------------------------------------------------------
144     XercesAttGroupInfo*     fXercesAttGroupInfo;
145     XSAttributeUseList*     fXSAttributeUseList;
146     XSWildcard*             fXSWildcard;
147     XSAnnotation*           fAnnotation;
148 };
149 
getAttributeUses()150 inline XSAttributeUseList* XSAttributeGroupDefinition::getAttributeUses()
151 {
152     return fXSAttributeUseList;
153 }
154 
getAttributeWildcard() const155 inline XSWildcard* XSAttributeGroupDefinition::getAttributeWildcard() const
156 {
157     return fXSWildcard;
158 }
159 
getAnnotation() const160 inline XSAnnotation* XSAttributeGroupDefinition::getAnnotation() const
161 {
162     return fAnnotation;
163 }
164 
165 XERCES_CPP_NAMESPACE_END
166 
167 #endif
168