1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                          Ada Modeling Framework                          --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2011-2012, 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: 2714 $ $Date: 2012-03-24 10:29:08 +0400 (Sat, 24 Mar 2012) $
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--
50--  A classifier has the capability to own collaboration uses. These
51--  collaboration uses link a collaboration with the classifier to give a
52--  description of the workings of the classifier.
53--
54--  Classifier is defined to be a kind of templateable element so that a
55--  classifier can be parameterized. It is also defined to be a kind of
56--  parameterable element so that a classifier can be a formal template
57--  parameter.
58--
59--  A classifier has the capability to own use cases. Although the owning
60--  classifier typically represents the subject to which the owned use cases
61--  apply, this is not necessarily the case. In principle, the same use case
62--  can be applied to multiple subjects, as identified by the subject
63--  association role of a use case.
64------------------------------------------------------------------------------
65limited with AMF.UML.Classifier_Template_Parameters;
66limited with AMF.UML.Classifiers.Collections;
67limited with AMF.UML.Collaboration_Uses.Collections;
68limited with AMF.UML.Features.Collections;
69limited with AMF.UML.Generalization_Sets.Collections;
70limited with AMF.UML.Generalizations.Collections;
71limited with AMF.UML.Named_Elements.Collections;
72with AMF.UML.Namespaces;
73limited with AMF.UML.Properties.Collections;
74with AMF.UML.Redefinable_Elements;
75limited with AMF.UML.Redefinable_Template_Signatures;
76limited with AMF.UML.Substitutions.Collections;
77with AMF.UML.Templateable_Elements;
78with AMF.UML.Types;
79limited with AMF.UML.Use_Cases.Collections;
80
81package AMF.UML.Classifiers is
82
83   pragma Preelaborate;
84
85   type UML_Classifier is limited interface
86     and AMF.UML.Namespaces.UML_Namespace
87     and AMF.UML.Types.UML_Type
88     and AMF.UML.Templateable_Elements.UML_Templateable_Element
89     and AMF.UML.Redefinable_Elements.UML_Redefinable_Element;
90
91   type UML_Classifier_Access is
92     access all UML_Classifier'Class;
93   for UML_Classifier_Access'Storage_Size use 0;
94
95   not overriding function Get_Attribute
96    (Self : not null access constant UML_Classifier)
97       return AMF.UML.Properties.Collections.Set_Of_UML_Property is abstract;
98   --  Getter of Classifier::attribute.
99   --
100   --  Refers to all of the Properties that are direct (i.e. not inherited or
101   --  imported) attributes of the classifier.
102
103   not overriding function Get_Collaboration_Use
104    (Self : not null access constant UML_Classifier)
105       return AMF.UML.Collaboration_Uses.Collections.Set_Of_UML_Collaboration_Use is abstract;
106   --  Getter of Classifier::collaborationUse.
107   --
108   --  References the collaboration uses owned by the classifier.
109
110   not overriding function Get_Feature
111    (Self : not null access constant UML_Classifier)
112       return AMF.UML.Features.Collections.Set_Of_UML_Feature is abstract;
113   --  Getter of Classifier::feature.
114   --
115   --  Specifies each feature defined in the classifier.
116   --  Note that there may be members of the Classifier that are of the type
117   --  Feature but are not included in this association, e.g. inherited
118   --  features.
119
120   not overriding function Get_General
121    (Self : not null access constant UML_Classifier)
122       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is abstract;
123   --  Getter of Classifier::general.
124   --
125   --  Specifies the general Classifiers for this Classifier.
126   --  References the general classifier in the Generalization relationship.
127
128   not overriding function Get_Generalization
129    (Self : not null access constant UML_Classifier)
130       return AMF.UML.Generalizations.Collections.Set_Of_UML_Generalization is abstract;
131   --  Getter of Classifier::generalization.
132   --
133   --  Specifies the Generalization relationships for this Classifier. These
134   --  Generalizations navigaten to more general classifiers in the
135   --  generalization hierarchy.
136
137   not overriding function Get_Inherited_Member
138    (Self : not null access constant UML_Classifier)
139       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element is abstract;
140   --  Getter of Classifier::inheritedMember.
141   --
142   --  Specifies all elements inherited by this classifier from the general
143   --  classifiers.
144
145   not overriding function Get_Is_Abstract
146    (Self : not null access constant UML_Classifier)
147       return Boolean is abstract;
148   --  Getter of Classifier::isAbstract.
149   --
150   --  If true, the Classifier does not provide a complete declaration and can
151   --  typically not be instantiated. An abstract classifier is intended to be
152   --  used by other classifiers e.g. as the target of general
153   --  metarelationships or generalization relationships.
154
155   not overriding procedure Set_Is_Abstract
156    (Self : not null access UML_Classifier;
157     To   : Boolean) is abstract;
158   --  Setter of Classifier::isAbstract.
159   --
160   --  If true, the Classifier does not provide a complete declaration and can
161   --  typically not be instantiated. An abstract classifier is intended to be
162   --  used by other classifiers e.g. as the target of general
163   --  metarelationships or generalization relationships.
164
165   not overriding function Get_Is_Final_Specialization
166    (Self : not null access constant UML_Classifier)
167       return Boolean is abstract;
168   --  Getter of Classifier::isFinalSpecialization.
169   --
170   --  If true, the Classifier cannot be specialized by generalization. Note
171   --  that this property is preserved through package merge operations; that
172   --  is, the capability to specialize a Classifier (i.e.,
173   --  isFinalSpecialization =false) must be preserved in the resulting
174   --  Classifier of a package merge operation where a Classifier with
175   --  isFinalSpecialization =false is merged with a matching Classifier with
176   --  isFinalSpecialization =true: the resulting Classifier will have
177   --  isFinalSpecialization =false.
178
179   not overriding procedure Set_Is_Final_Specialization
180    (Self : not null access UML_Classifier;
181     To   : Boolean) is abstract;
182   --  Setter of Classifier::isFinalSpecialization.
183   --
184   --  If true, the Classifier cannot be specialized by generalization. Note
185   --  that this property is preserved through package merge operations; that
186   --  is, the capability to specialize a Classifier (i.e.,
187   --  isFinalSpecialization =false) must be preserved in the resulting
188   --  Classifier of a package merge operation where a Classifier with
189   --  isFinalSpecialization =false is merged with a matching Classifier with
190   --  isFinalSpecialization =true: the resulting Classifier will have
191   --  isFinalSpecialization =false.
192
193   not overriding function Get_Owned_Template_Signature
194    (Self : not null access constant UML_Classifier)
195       return AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access is abstract;
196   --  Getter of Classifier::ownedTemplateSignature.
197   --
198   --  The optional template signature specifying the formal template
199   --  parameters.
200
201   not overriding procedure Set_Owned_Template_Signature
202    (Self : not null access UML_Classifier;
203     To   : AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access) is abstract;
204   --  Setter of Classifier::ownedTemplateSignature.
205   --
206   --  The optional template signature specifying the formal template
207   --  parameters.
208
209   not overriding function Get_Owned_Use_Case
210    (Self : not null access constant UML_Classifier)
211       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case is abstract;
212   --  Getter of Classifier::ownedUseCase.
213   --
214   --  References the use cases owned by this classifier.
215
216   not overriding function Get_Powertype_Extent
217    (Self : not null access constant UML_Classifier)
218       return AMF.UML.Generalization_Sets.Collections.Set_Of_UML_Generalization_Set is abstract;
219   --  Getter of Classifier::powertypeExtent.
220   --
221   --  Designates the GeneralizationSet of which the associated Classifier is
222   --  a power type.
223
224   not overriding function Get_Redefined_Classifier
225    (Self : not null access constant UML_Classifier)
226       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is abstract;
227   --  Getter of Classifier::redefinedClassifier.
228   --
229   --  References the Classifiers that are redefined by this Classifier.
230
231   not overriding function Get_Representation
232    (Self : not null access constant UML_Classifier)
233       return AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access is abstract;
234   --  Getter of Classifier::representation.
235   --
236   --  References a collaboration use which indicates the collaboration that
237   --  represents this classifier.
238
239   not overriding procedure Set_Representation
240    (Self : not null access UML_Classifier;
241     To   : AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access) is abstract;
242   --  Setter of Classifier::representation.
243   --
244   --  References a collaboration use which indicates the collaboration that
245   --  represents this classifier.
246
247   not overriding function Get_Substitution
248    (Self : not null access constant UML_Classifier)
249       return AMF.UML.Substitutions.Collections.Set_Of_UML_Substitution is abstract;
250   --  Getter of Classifier::substitution.
251   --
252   --  References the substitutions that are owned by this Classifier.
253
254   not overriding function Get_Template_Parameter
255    (Self : not null access constant UML_Classifier)
256       return AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access is abstract;
257   --  Getter of Classifier::templateParameter.
258   --
259   --  The template parameter that exposes this element as a formal parameter.
260
261   not overriding procedure Set_Template_Parameter
262    (Self : not null access UML_Classifier;
263     To   : AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access) is abstract;
264   --  Setter of Classifier::templateParameter.
265   --
266   --  The template parameter that exposes this element as a formal parameter.
267
268   not overriding function Get_Use_Case
269    (Self : not null access constant UML_Classifier)
270       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case is abstract;
271   --  Getter of Classifier::useCase.
272   --
273   --  The set of use cases for which this Classifier is the subject.
274
275   not overriding function All_Features
276    (Self : not null access constant UML_Classifier)
277       return AMF.UML.Features.Collections.Set_Of_UML_Feature is abstract;
278   --  Operation Classifier::allFeatures.
279   --
280   --  The query allFeatures() gives all of the features in the namespace of
281   --  the classifier. In general, through mechanisms such as inheritance,
282   --  this will be a larger set than feature.
283
284   not overriding function All_Parents
285    (Self : not null access constant UML_Classifier)
286       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is abstract;
287   --  Operation Classifier::allParents.
288   --
289   --  The query allParents() gives all of the direct and indirect ancestors
290   --  of a generalized Classifier.
291
292   not overriding function Conforms_To
293    (Self : not null access constant UML_Classifier;
294     Other : AMF.UML.Classifiers.UML_Classifier_Access)
295       return Boolean is abstract;
296   --  Operation Classifier::conformsTo.
297   --
298   --  The query conformsTo() gives true for a classifier that defines a type
299   --  that conforms to another. This is used, for example, in the
300   --  specification of signature conformance for operations.
301
302   not overriding function General
303    (Self : not null access constant UML_Classifier)
304       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is abstract;
305   --  Operation Classifier::general.
306   --
307   --  The general classifiers are the classifiers referenced by the
308   --  generalization relationships.
309
310   not overriding function Has_Visibility_Of
311    (Self : not null access constant UML_Classifier;
312     N : AMF.UML.Named_Elements.UML_Named_Element_Access)
313       return Boolean is abstract;
314   --  Operation Classifier::hasVisibilityOf.
315   --
316   --  The query hasVisibilityOf() determines whether a named element is
317   --  visible in the classifier. By default all are visible. It is only
318   --  called when the argument is something owned by a parent.
319
320   not overriding function Inherit
321    (Self : not null access constant UML_Classifier;
322     Inhs : AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element)
323       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element is abstract;
324   --  Operation Classifier::inherit.
325   --
326   --  The query inherit() defines how to inherit a set of elements. Here the
327   --  operation is defined to inherit them all. It is intended to be
328   --  redefined in circumstances where inheritance is affected by
329   --  redefinition.
330   --  The inherit operation is overridden to exclude redefined properties.
331
332   not overriding function Inheritable_Members
333    (Self : not null access constant UML_Classifier;
334     C : AMF.UML.Classifiers.UML_Classifier_Access)
335       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element is abstract;
336   --  Operation Classifier::inheritableMembers.
337   --
338   --  The query inheritableMembers() gives all of the members of a classifier
339   --  that may be inherited in one of its descendants, subject to whatever
340   --  visibility restrictions apply.
341
342   not overriding function Inherited_Member
343    (Self : not null access constant UML_Classifier)
344       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element is abstract;
345   --  Operation Classifier::inheritedMember.
346   --
347   --  The inheritedMember association is derived by inheriting the
348   --  inheritable members of the parents.
349   --  The inheritedMember association is derived by inheriting the
350   --  inheritable members of the parents.
351
352   overriding function Is_Template
353    (Self : not null access constant UML_Classifier)
354       return Boolean is abstract;
355   --  Operation Classifier::isTemplate.
356   --
357   --  The query isTemplate() returns whether this templateable element is
358   --  actually a template.
359
360   not overriding function May_Specialize_Type
361    (Self : not null access constant UML_Classifier;
362     C : AMF.UML.Classifiers.UML_Classifier_Access)
363       return Boolean is abstract;
364   --  Operation Classifier::maySpecializeType.
365   --
366   --  The query maySpecializeType() determines whether this classifier may
367   --  have a generalization relationship to classifiers of the specified
368   --  type. By default a classifier may specialize classifiers of the same or
369   --  a more general type. It is intended to be redefined by classifiers that
370   --  have different specialization constraints.
371
372   not overriding function Parents
373    (Self : not null access constant UML_Classifier)
374       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is abstract;
375   --  Operation Classifier::parents.
376   --
377   --  The query parents() gives all of the immediate ancestors of a
378   --  generalized Classifier.
379
380end AMF.UML.Classifiers;
381