1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                          Ada Modeling Framework                          --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2011, Vadim Godunko <vgodunko@gmail.com>                     --
12-- All rights reserved.                                                     --
13--                                                                          --
14-- Redistribution and use in source and binary forms, with or without       --
15-- modification, are permitted provided that the following conditions       --
16-- are met:                                                                 --
17--                                                                          --
18--  * Redistributions of source code must retain the above copyright        --
19--    notice, this list of conditions and the following disclaimer.         --
20--                                                                          --
21--  * Redistributions in binary form must reproduce the above copyright     --
22--    notice, this list of conditions and the following disclaimer in the   --
23--    documentation and/or other materials provided with the distribution.  --
24--                                                                          --
25--  * Neither the name of the Vadim Godunko, IE nor the names of its        --
26--    contributors may be used to endorse or promote products derived from  --
27--    this software without specific prior written permission.              --
28--                                                                          --
29-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      --
30-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        --
31-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR    --
32-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     --
33-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   --
34-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --
35-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   --
36-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
37-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     --
38-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS       --
39-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             --
40--                                                                          --
41------------------------------------------------------------------------------
42--  $Revision: 2324 $ $Date: 2011-12-03 13:24:03 +0400 (Sat, 03 Dec 2011) $
43------------------------------------------------------------------------------
44--  This file is generated, don't edit it.
45------------------------------------------------------------------------------
46--  A classifier is a classification of instances - it describes a set of
47--  instances that have features in common. A classifier can specify a
48--  generalization hierarchy by referencing its general classifiers.
49------------------------------------------------------------------------------
50limited with AMF.CMOF.Classifiers.Collections;
51limited with AMF.CMOF.Features.Collections;
52limited with AMF.CMOF.Named_Elements.Collections;
53with AMF.CMOF.Namespaces;
54limited with AMF.CMOF.Properties.Collections;
55with AMF.CMOF.Types;
56
57package AMF.CMOF.Classifiers is
58
59   pragma Preelaborate;
60
61   type CMOF_Classifier is limited interface
62     and AMF.CMOF.Namespaces.CMOF_Namespace
63     and AMF.CMOF.Types.CMOF_Type;
64
65   type CMOF_Classifier_Access is
66     access all CMOF_Classifier'Class;
67   for CMOF_Classifier_Access'Storage_Size use 0;
68
69   not overriding function Get_Attribute
70    (Self : not null access constant CMOF_Classifier)
71       return AMF.CMOF.Properties.Collections.Set_Of_CMOF_Property is abstract;
72   --  Getter of Classifier::attribute.
73   --
74   --  Refers to all of the Properties that are direct (i.e. not inherited or
75   --  imported) attributes of the classifier.
76
77   not overriding function Get_Feature
78    (Self : not null access constant CMOF_Classifier)
79       return AMF.CMOF.Features.Collections.Set_Of_CMOF_Feature is abstract;
80   --  Getter of Classifier::feature.
81   --
82   --  Note that there may be members of the Classifier that are of the type
83   --  Feature but are not included in this association, e.g. inherited
84   --  features.
85
86   not overriding function Get_General
87    (Self : not null access constant CMOF_Classifier)
88       return AMF.CMOF.Classifiers.Collections.Set_Of_CMOF_Classifier is abstract;
89   --  Getter of Classifier::general.
90   --
91   --  References the general classifier in the Generalization relationship.
92
93   not overriding function Get_Inherited_Member
94    (Self : not null access constant CMOF_Classifier)
95       return AMF.CMOF.Named_Elements.Collections.Set_Of_CMOF_Named_Element is abstract;
96   --  Getter of Classifier::inheritedMember.
97   --
98   --  Specifies all elements inherited by this classifier from the general
99   --  classifiers.
100
101   not overriding function Get_Is_Final_Specialization
102    (Self : not null access constant CMOF_Classifier)
103       return Boolean is abstract;
104   --  Getter of Classifier::isFinalSpecialization.
105   --
106   --  If true, the Classifier cannot be specialized by generalization. Note
107   --  that this property is preserved through package merge operations; that
108   --  is, the capability to specialize a Classifier (i.e.,
109   --  isFinalSpecialization =false) must be preserved in the resulting
110   --  Classifier of a package merge operation where a Classifier with
111   --  isFinalSpecialization =false is merged with a matching Classifier with
112   --  isFinalSpecialization =true: the resulting Classifier will have
113   --  isFinalSpecialization =false.
114
115   not overriding procedure Set_Is_Final_Specialization
116    (Self : not null access CMOF_Classifier;
117     To   : Boolean) is abstract;
118   --  Setter of Classifier::isFinalSpecialization.
119   --
120   --  If true, the Classifier cannot be specialized by generalization. Note
121   --  that this property is preserved through package merge operations; that
122   --  is, the capability to specialize a Classifier (i.e.,
123   --  isFinalSpecialization =false) must be preserved in the resulting
124   --  Classifier of a package merge operation where a Classifier with
125   --  isFinalSpecialization =false is merged with a matching Classifier with
126   --  isFinalSpecialization =true: the resulting Classifier will have
127   --  isFinalSpecialization =false.
128
129   not overriding function Conforms_To
130    (Self : not null access constant CMOF_Classifier;
131     Other : AMF.CMOF.Classifiers.CMOF_Classifier_Access)
132       return Boolean is abstract;
133   --  Operation Classifier::conformsTo.
134   --
135   --  The query conformsTo() gives true for a classifier that defines a type
136   --  that conforms to another. This is used, for example, in the
137   --  specification of signature conformance for operations.
138
139   not overriding function All_Features
140    (Self : not null access constant CMOF_Classifier)
141       return AMF.CMOF.Features.Collections.Set_Of_CMOF_Feature is abstract;
142   --  Operation Classifier::allFeatures.
143   --
144   --  The query allFeatures() gives all of the features in the namespace of
145   --  the classifier. In general, through mechanisms such as inheritance,
146   --  this will be a larger set than feature.
147
148   not overriding function General
149    (Self : not null access constant CMOF_Classifier)
150       return AMF.CMOF.Classifiers.Collections.Set_Of_CMOF_Classifier is abstract;
151   --  Operation Classifier::general.
152   --
153   --  The general classifiers are the classifiers referenced by the
154   --  generalization relationships.
155
156   not overriding function Parents
157    (Self : not null access constant CMOF_Classifier)
158       return AMF.CMOF.Classifiers.Collections.Set_Of_CMOF_Classifier is abstract;
159   --  Operation Classifier::parents.
160   --
161   --  The query parents() gives all of the immediate ancestors of a
162   --  generalized Classifier.
163
164   not overriding function Inherited_Member
165    (Self : not null access constant CMOF_Classifier)
166       return AMF.CMOF.Named_Elements.Collections.Set_Of_CMOF_Named_Element is abstract;
167   --  Operation Classifier::inheritedMember.
168   --
169   --  The inheritedMember association is derived by inheriting the
170   --  inheritable members of the parents.
171
172   not overriding function All_Parents
173    (Self : not null access constant CMOF_Classifier)
174       return AMF.CMOF.Classifiers.Collections.Set_Of_CMOF_Classifier is abstract;
175   --  Operation Classifier::allParents.
176   --
177   --  The query allParents() gives all of the direct and indirect ancestors
178   --  of a generalized Classifier.
179
180   not overriding function Inheritable_Members
181    (Self : not null access constant CMOF_Classifier;
182     C : AMF.CMOF.Classifiers.CMOF_Classifier_Access)
183       return AMF.CMOF.Named_Elements.Collections.Set_Of_CMOF_Named_Element is abstract;
184   --  Operation Classifier::inheritableMembers.
185   --
186   --  The query inheritableMembers() gives all of the members of a classifier
187   --  that may be inherited in one of its descendants, subject to whatever
188   --  visibility restrictions apply.
189
190   not overriding function Has_Visibility_Of
191    (Self : not null access constant CMOF_Classifier;
192     N : AMF.CMOF.Named_Elements.CMOF_Named_Element_Access)
193       return Boolean is abstract;
194   --  Operation Classifier::hasVisibilityOf.
195   --
196   --  The query hasVisibilityOf() determines whether a named element is
197   --  visible in the classifier. By default all are visible. It is only
198   --  called when the argument is something owned by a parent.
199
200   not overriding function Inherit
201    (Self : not null access constant CMOF_Classifier;
202     Inhs : AMF.CMOF.Named_Elements.Collections.Set_Of_CMOF_Named_Element)
203       return AMF.CMOF.Named_Elements.Collections.Set_Of_CMOF_Named_Element is abstract;
204   --  Operation Classifier::inherit.
205   --
206   --  The inherit operation is overridden to exclude redefined properties.
207
208   not overriding function May_Specialize_Type
209    (Self : not null access constant CMOF_Classifier;
210     C : AMF.CMOF.Classifiers.CMOF_Classifier_Access)
211       return Boolean is abstract;
212   --  Operation Classifier::maySpecializeType.
213   --
214   --  The query maySpecializeType() determines whether this classifier may
215   --  have a generalization relationship to classifiers of the specified
216   --  type. By default a classifier may specialize classifiers of the same or
217   --  a more general type. It is intended to be redefined by classifiers that
218   --  have different specialization constraints.
219
220end AMF.CMOF.Classifiers;
221