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: 2937 $ $Date: 2012-05-01 21:07:27 +0400 (Tue, 01 May 2012) $
43------------------------------------------------------------------------------
44with AMF.Internals.UML_Classes;
45with AMF.String_Collections;
46with AMF.UML.Behaviors.Collections;
47with AMF.UML.Classes.Collections;
48with AMF.UML.Classifier_Template_Parameters;
49with AMF.UML.Classifiers.Collections;
50with AMF.UML.Collaboration_Uses.Collections;
51with AMF.UML.Connectable_Elements.Collections;
52with AMF.UML.Connectors.Collections;
53with AMF.UML.Constraints.Collections;
54with AMF.UML.Dependencies.Collections;
55with AMF.UML.Element_Imports.Collections;
56with AMF.UML.Extensions.Collections;
57with AMF.UML.Features.Collections;
58with AMF.UML.Generalization_Sets.Collections;
59with AMF.UML.Generalizations.Collections;
60with AMF.UML.Images.Collections;
61with AMF.UML.Interface_Realizations.Collections;
62with AMF.UML.Named_Elements.Collections;
63with AMF.UML.Namespaces;
64with AMF.UML.Operations.Collections;
65with AMF.UML.Package_Imports.Collections;
66with AMF.UML.Packageable_Elements.Collections;
67with AMF.UML.Packages.Collections;
68with AMF.UML.Parameterable_Elements.Collections;
69with AMF.UML.Ports.Collections;
70with AMF.UML.Profiles;
71with AMF.UML.Properties.Collections;
72with AMF.UML.Receptions.Collections;
73with AMF.UML.Redefinable_Elements.Collections;
74with AMF.UML.Redefinable_Template_Signatures;
75with AMF.UML.Stereotypes;
76with AMF.UML.String_Expressions;
77with AMF.UML.Substitutions.Collections;
78with AMF.UML.Template_Bindings.Collections;
79with AMF.UML.Template_Parameters;
80with AMF.UML.Template_Signatures;
81with AMF.UML.Types;
82with AMF.UML.Use_Cases.Collections;
83with AMF.Visitors;
84
85package AMF.Internals.UML_Stereotypes is
86
87   type UML_Stereotype_Proxy is
88     limited new AMF.Internals.UML_Classes.UML_Class_Proxy
89       and AMF.UML.Stereotypes.UML_Stereotype with null record;
90
91   overriding function Get_Icon
92    (Self : not null access constant UML_Stereotype_Proxy)
93       return AMF.UML.Images.Collections.Set_Of_UML_Image;
94   --  Getter of Stereotype::icon.
95   --
96   --  Stereotype can change the graphical appearance of the extended model
97   --  element by using attached icons. When this association is not null, it
98   --  references the location of the icon content to be displayed within
99   --  diagrams presenting the extended model elements.
100
101   overriding function Get_Profile
102    (Self : not null access constant UML_Stereotype_Proxy)
103       return AMF.UML.Profiles.UML_Profile_Access;
104   --  Getter of Stereotype::profile.
105   --
106   --  The profile that directly or indirectly contains this stereotype.
107
108   overriding function Get_Extension
109    (Self : not null access constant UML_Stereotype_Proxy)
110       return AMF.UML.Extensions.Collections.Set_Of_UML_Extension;
111   --  Getter of Class::extension.
112   --
113   --  References the Extensions that specify additional properties of the
114   --  metaclass. The property is derived from the extensions whose memberEnds
115   --  are typed by the Class.
116
117   overriding function Get_Is_Abstract
118    (Self : not null access constant UML_Stereotype_Proxy)
119       return Boolean;
120   --  Getter of Class::isAbstract.
121   --
122   --  True when a class is abstract.
123   --  If true, the Classifier does not provide a complete declaration and can
124   --  typically not be instantiated. An abstract classifier is intended to be
125   --  used by other classifiers e.g. as the target of general
126   --  metarelationships or generalization relationships.
127
128   overriding function Get_Is_Active
129    (Self : not null access constant UML_Stereotype_Proxy)
130       return Boolean;
131   --  Getter of Class::isActive.
132   --
133   --  Determines whether an object specified by this class is active or not.
134   --  If true, then the owning class is referred to as an active class. If
135   --  false, then such a class is referred to as a passive class.
136
137   overriding procedure Set_Is_Active
138    (Self : not null access UML_Stereotype_Proxy;
139     To   : Boolean);
140   --  Setter of Class::isActive.
141   --
142   --  Determines whether an object specified by this class is active or not.
143   --  If true, then the owning class is referred to as an active class. If
144   --  false, then such a class is referred to as a passive class.
145
146   overriding function Get_Nested_Classifier
147    (Self : not null access constant UML_Stereotype_Proxy)
148       return AMF.UML.Classifiers.Collections.Ordered_Set_Of_UML_Classifier;
149   --  Getter of Class::nestedClassifier.
150   --
151   --  References all the Classifiers that are defined (nested) within the
152   --  Class.
153
154   overriding function Get_Owned_Attribute
155    (Self : not null access constant UML_Stereotype_Proxy)
156       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property;
157   --  Getter of Class::ownedAttribute.
158   --
159   --  The attributes (i.e. the properties) owned by the class.
160
161   overriding function Get_Owned_Operation
162    (Self : not null access constant UML_Stereotype_Proxy)
163       return AMF.UML.Operations.Collections.Ordered_Set_Of_UML_Operation;
164   --  Getter of Class::ownedOperation.
165   --
166   --  The operations owned by the class.
167
168   overriding function Get_Owned_Reception
169    (Self : not null access constant UML_Stereotype_Proxy)
170       return AMF.UML.Receptions.Collections.Set_Of_UML_Reception;
171   --  Getter of Class::ownedReception.
172   --
173   --  Receptions that objects of this class are willing to accept.
174
175   overriding function Get_Super_Class
176    (Self : not null access constant UML_Stereotype_Proxy)
177       return AMF.UML.Classes.Collections.Set_Of_UML_Class;
178   --  Getter of Class::superClass.
179   --
180   --  This gives the superclasses of a class.
181
182   overriding function Get_Classifier_Behavior
183    (Self : not null access constant UML_Stereotype_Proxy)
184       return AMF.UML.Behaviors.UML_Behavior_Access;
185   --  Getter of BehavioredClassifier::classifierBehavior.
186   --
187   --  A behavior specification that specifies the behavior of the classifier
188   --  itself.
189
190   overriding procedure Set_Classifier_Behavior
191    (Self : not null access UML_Stereotype_Proxy;
192     To   : AMF.UML.Behaviors.UML_Behavior_Access);
193   --  Setter of BehavioredClassifier::classifierBehavior.
194   --
195   --  A behavior specification that specifies the behavior of the classifier
196   --  itself.
197
198   overriding function Get_Interface_Realization
199    (Self : not null access constant UML_Stereotype_Proxy)
200       return AMF.UML.Interface_Realizations.Collections.Set_Of_UML_Interface_Realization;
201   --  Getter of BehavioredClassifier::interfaceRealization.
202   --
203   --  The set of InterfaceRealizations owned by the BehavioredClassifier.
204   --  Interface realizations reference the Interfaces of which the
205   --  BehavioredClassifier is an implementation.
206
207   overriding function Get_Owned_Behavior
208    (Self : not null access constant UML_Stereotype_Proxy)
209       return AMF.UML.Behaviors.Collections.Set_Of_UML_Behavior;
210   --  Getter of BehavioredClassifier::ownedBehavior.
211   --
212   --  References behavior specifications owned by a classifier.
213
214   overriding function Get_Attribute
215    (Self : not null access constant UML_Stereotype_Proxy)
216       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
217   --  Getter of Classifier::attribute.
218   --
219   --  Refers to all of the Properties that are direct (i.e. not inherited or
220   --  imported) attributes of the classifier.
221
222   overriding function Get_Collaboration_Use
223    (Self : not null access constant UML_Stereotype_Proxy)
224       return AMF.UML.Collaboration_Uses.Collections.Set_Of_UML_Collaboration_Use;
225   --  Getter of Classifier::collaborationUse.
226   --
227   --  References the collaboration uses owned by the classifier.
228
229   overriding function Get_Feature
230    (Self : not null access constant UML_Stereotype_Proxy)
231       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
232   --  Getter of Classifier::feature.
233   --
234   --  Specifies each feature defined in the classifier.
235   --  Note that there may be members of the Classifier that are of the type
236   --  Feature but are not included in this association, e.g. inherited
237   --  features.
238
239   overriding function Get_General
240    (Self : not null access constant UML_Stereotype_Proxy)
241       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
242   --  Getter of Classifier::general.
243   --
244   --  Specifies the general Classifiers for this Classifier.
245   --  References the general classifier in the Generalization relationship.
246
247   overriding function Get_Generalization
248    (Self : not null access constant UML_Stereotype_Proxy)
249       return AMF.UML.Generalizations.Collections.Set_Of_UML_Generalization;
250   --  Getter of Classifier::generalization.
251   --
252   --  Specifies the Generalization relationships for this Classifier. These
253   --  Generalizations navigaten to more general classifiers in the
254   --  generalization hierarchy.
255
256   overriding function Get_Inherited_Member
257    (Self : not null access constant UML_Stereotype_Proxy)
258       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
259   --  Getter of Classifier::inheritedMember.
260   --
261   --  Specifies all elements inherited by this classifier from the general
262   --  classifiers.
263
264   overriding function Get_Is_Final_Specialization
265    (Self : not null access constant UML_Stereotype_Proxy)
266       return Boolean;
267   --  Getter of Classifier::isFinalSpecialization.
268   --
269   --  If true, the Classifier cannot be specialized by generalization. Note
270   --  that this property is preserved through package merge operations; that
271   --  is, the capability to specialize a Classifier (i.e.,
272   --  isFinalSpecialization =false) must be preserved in the resulting
273   --  Classifier of a package merge operation where a Classifier with
274   --  isFinalSpecialization =false is merged with a matching Classifier with
275   --  isFinalSpecialization =true: the resulting Classifier will have
276   --  isFinalSpecialization =false.
277
278   overriding procedure Set_Is_Final_Specialization
279    (Self : not null access UML_Stereotype_Proxy;
280     To   : Boolean);
281   --  Setter of Classifier::isFinalSpecialization.
282   --
283   --  If true, the Classifier cannot be specialized by generalization. Note
284   --  that this property is preserved through package merge operations; that
285   --  is, the capability to specialize a Classifier (i.e.,
286   --  isFinalSpecialization =false) must be preserved in the resulting
287   --  Classifier of a package merge operation where a Classifier with
288   --  isFinalSpecialization =false is merged with a matching Classifier with
289   --  isFinalSpecialization =true: the resulting Classifier will have
290   --  isFinalSpecialization =false.
291
292   overriding function Get_Owned_Template_Signature
293    (Self : not null access constant UML_Stereotype_Proxy)
294       return AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access;
295   --  Getter of Classifier::ownedTemplateSignature.
296   --
297   --  The optional template signature specifying the formal template
298   --  parameters.
299
300   overriding procedure Set_Owned_Template_Signature
301    (Self : not null access UML_Stereotype_Proxy;
302     To   : AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access);
303   --  Setter of Classifier::ownedTemplateSignature.
304   --
305   --  The optional template signature specifying the formal template
306   --  parameters.
307
308   overriding function Get_Owned_Use_Case
309    (Self : not null access constant UML_Stereotype_Proxy)
310       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
311   --  Getter of Classifier::ownedUseCase.
312   --
313   --  References the use cases owned by this classifier.
314
315   overriding function Get_Powertype_Extent
316    (Self : not null access constant UML_Stereotype_Proxy)
317       return AMF.UML.Generalization_Sets.Collections.Set_Of_UML_Generalization_Set;
318   --  Getter of Classifier::powertypeExtent.
319   --
320   --  Designates the GeneralizationSet of which the associated Classifier is
321   --  a power type.
322
323   overriding function Get_Redefined_Classifier
324    (Self : not null access constant UML_Stereotype_Proxy)
325       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
326   --  Getter of Classifier::redefinedClassifier.
327   --
328   --  References the Classifiers that are redefined by this Classifier.
329
330   overriding function Get_Representation
331    (Self : not null access constant UML_Stereotype_Proxy)
332       return AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access;
333   --  Getter of Classifier::representation.
334   --
335   --  References a collaboration use which indicates the collaboration that
336   --  represents this classifier.
337
338   overriding procedure Set_Representation
339    (Self : not null access UML_Stereotype_Proxy;
340     To   : AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access);
341   --  Setter of Classifier::representation.
342   --
343   --  References a collaboration use which indicates the collaboration that
344   --  represents this classifier.
345
346   overriding function Get_Substitution
347    (Self : not null access constant UML_Stereotype_Proxy)
348       return AMF.UML.Substitutions.Collections.Set_Of_UML_Substitution;
349   --  Getter of Classifier::substitution.
350   --
351   --  References the substitutions that are owned by this Classifier.
352
353   overriding function Get_Template_Parameter
354    (Self : not null access constant UML_Stereotype_Proxy)
355       return AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access;
356   --  Getter of Classifier::templateParameter.
357   --
358   --  The template parameter that exposes this element as a formal parameter.
359
360   overriding procedure Set_Template_Parameter
361    (Self : not null access UML_Stereotype_Proxy;
362     To   : AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access);
363   --  Setter of Classifier::templateParameter.
364   --
365   --  The template parameter that exposes this element as a formal parameter.
366
367   overriding function Get_Use_Case
368    (Self : not null access constant UML_Stereotype_Proxy)
369       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
370   --  Getter of Classifier::useCase.
371   --
372   --  The set of use cases for which this Classifier is the subject.
373
374   overriding function Get_Element_Import
375    (Self : not null access constant UML_Stereotype_Proxy)
376       return AMF.UML.Element_Imports.Collections.Set_Of_UML_Element_Import;
377   --  Getter of Namespace::elementImport.
378   --
379   --  References the ElementImports owned by the Namespace.
380
381   overriding function Get_Imported_Member
382    (Self : not null access constant UML_Stereotype_Proxy)
383       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
384   --  Getter of Namespace::importedMember.
385   --
386   --  References the PackageableElements that are members of this Namespace
387   --  as a result of either PackageImports or ElementImports.
388
389   overriding function Get_Member
390    (Self : not null access constant UML_Stereotype_Proxy)
391       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
392   --  Getter of Namespace::member.
393   --
394   --  A collection of NamedElements identifiable within the Namespace, either
395   --  by being owned or by being introduced by importing or inheritance.
396
397   overriding function Get_Owned_Member
398    (Self : not null access constant UML_Stereotype_Proxy)
399       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
400   --  Getter of Namespace::ownedMember.
401   --
402   --  A collection of NamedElements owned by the Namespace.
403
404   overriding function Get_Owned_Rule
405    (Self : not null access constant UML_Stereotype_Proxy)
406       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint;
407   --  Getter of Namespace::ownedRule.
408   --
409   --  Specifies a set of Constraints owned by this Namespace.
410
411   overriding function Get_Package_Import
412    (Self : not null access constant UML_Stereotype_Proxy)
413       return AMF.UML.Package_Imports.Collections.Set_Of_UML_Package_Import;
414   --  Getter of Namespace::packageImport.
415   --
416   --  References the PackageImports owned by the Namespace.
417
418   overriding function Get_Client_Dependency
419    (Self : not null access constant UML_Stereotype_Proxy)
420       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency;
421   --  Getter of NamedElement::clientDependency.
422   --
423   --  Indicates the dependencies that reference the client.
424
425   overriding function Get_Name_Expression
426    (Self : not null access constant UML_Stereotype_Proxy)
427       return AMF.UML.String_Expressions.UML_String_Expression_Access;
428   --  Getter of NamedElement::nameExpression.
429   --
430   --  The string expression used to define the name of this named element.
431
432   overriding procedure Set_Name_Expression
433    (Self : not null access UML_Stereotype_Proxy;
434     To   : AMF.UML.String_Expressions.UML_String_Expression_Access);
435   --  Setter of NamedElement::nameExpression.
436   --
437   --  The string expression used to define the name of this named element.
438
439   overriding function Get_Namespace
440    (Self : not null access constant UML_Stereotype_Proxy)
441       return AMF.UML.Namespaces.UML_Namespace_Access;
442   --  Getter of NamedElement::namespace.
443   --
444   --  Specifies the namespace that owns the NamedElement.
445
446   overriding function Get_Qualified_Name
447    (Self : not null access constant UML_Stereotype_Proxy)
448       return AMF.Optional_String;
449   --  Getter of NamedElement::qualifiedName.
450   --
451   --  A name which allows the NamedElement to be identified within a
452   --  hierarchy of nested Namespaces. It is constructed from the names of the
453   --  containing namespaces starting at the root of the hierarchy and ending
454   --  with the name of the NamedElement itself.
455
456   overriding function Get_Package
457    (Self : not null access constant UML_Stereotype_Proxy)
458       return AMF.UML.Packages.UML_Package_Access;
459   --  Getter of Type::package.
460   --
461   --  Specifies the owning package of this classifier, if any.
462
463   overriding procedure Set_Package
464    (Self : not null access UML_Stereotype_Proxy;
465     To   : AMF.UML.Packages.UML_Package_Access);
466   --  Setter of Type::package.
467   --
468   --  Specifies the owning package of this classifier, if any.
469
470   overriding function Get_Owning_Template_Parameter
471    (Self : not null access constant UML_Stereotype_Proxy)
472       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
473   --  Getter of ParameterableElement::owningTemplateParameter.
474   --
475   --  The formal template parameter that owns this element.
476
477   overriding procedure Set_Owning_Template_Parameter
478    (Self : not null access UML_Stereotype_Proxy;
479     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
480   --  Setter of ParameterableElement::owningTemplateParameter.
481   --
482   --  The formal template parameter that owns this element.
483
484   overriding function Get_Template_Parameter
485    (Self : not null access constant UML_Stereotype_Proxy)
486       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
487   --  Getter of ParameterableElement::templateParameter.
488   --
489   --  The template parameter that exposes this element as a formal parameter.
490
491   overriding procedure Set_Template_Parameter
492    (Self : not null access UML_Stereotype_Proxy;
493     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
494   --  Setter of ParameterableElement::templateParameter.
495   --
496   --  The template parameter that exposes this element as a formal parameter.
497
498   overriding function Get_Owned_Template_Signature
499    (Self : not null access constant UML_Stereotype_Proxy)
500       return AMF.UML.Template_Signatures.UML_Template_Signature_Access;
501   --  Getter of TemplateableElement::ownedTemplateSignature.
502   --
503   --  The optional template signature specifying the formal template
504   --  parameters.
505
506   overriding procedure Set_Owned_Template_Signature
507    (Self : not null access UML_Stereotype_Proxy;
508     To   : AMF.UML.Template_Signatures.UML_Template_Signature_Access);
509   --  Setter of TemplateableElement::ownedTemplateSignature.
510   --
511   --  The optional template signature specifying the formal template
512   --  parameters.
513
514   overriding function Get_Template_Binding
515    (Self : not null access constant UML_Stereotype_Proxy)
516       return AMF.UML.Template_Bindings.Collections.Set_Of_UML_Template_Binding;
517   --  Getter of TemplateableElement::templateBinding.
518   --
519   --  The optional bindings from this element to templates.
520
521   overriding function Get_Is_Leaf
522    (Self : not null access constant UML_Stereotype_Proxy)
523       return Boolean;
524   --  Getter of RedefinableElement::isLeaf.
525   --
526   --  Indicates whether it is possible to further redefine a
527   --  RedefinableElement. If the value is true, then it is not possible to
528   --  further redefine the RedefinableElement. Note that this property is
529   --  preserved through package merge operations; that is, the capability to
530   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
531   --  the resulting RedefinableElement of a package merge operation where a
532   --  RedefinableElement with isLeaf=false is merged with a matching
533   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
534   --  will have isLeaf=false. Default value is false.
535
536   overriding procedure Set_Is_Leaf
537    (Self : not null access UML_Stereotype_Proxy;
538     To   : Boolean);
539   --  Setter of RedefinableElement::isLeaf.
540   --
541   --  Indicates whether it is possible to further redefine a
542   --  RedefinableElement. If the value is true, then it is not possible to
543   --  further redefine the RedefinableElement. Note that this property is
544   --  preserved through package merge operations; that is, the capability to
545   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
546   --  the resulting RedefinableElement of a package merge operation where a
547   --  RedefinableElement with isLeaf=false is merged with a matching
548   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
549   --  will have isLeaf=false. Default value is false.
550
551   overriding function Get_Redefined_Element
552    (Self : not null access constant UML_Stereotype_Proxy)
553       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element;
554   --  Getter of RedefinableElement::redefinedElement.
555   --
556   --  The redefinable element that is being redefined by this element.
557
558   overriding function Get_Redefinition_Context
559    (Self : not null access constant UML_Stereotype_Proxy)
560       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
561   --  Getter of RedefinableElement::redefinitionContext.
562   --
563   --  References the contexts that this element may be redefined from.
564
565   overriding function Get_Owned_Port
566    (Self : not null access constant UML_Stereotype_Proxy)
567       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
568   --  Getter of EncapsulatedClassifier::ownedPort.
569   --
570   --  References a set of ports that an encapsulated classifier owns.
571
572   overriding function Get_Owned_Connector
573    (Self : not null access constant UML_Stereotype_Proxy)
574       return AMF.UML.Connectors.Collections.Set_Of_UML_Connector;
575   --  Getter of StructuredClassifier::ownedConnector.
576   --
577   --  References the connectors owned by the classifier.
578
579   overriding function Get_Part
580    (Self : not null access constant UML_Stereotype_Proxy)
581       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
582   --  Getter of StructuredClassifier::part.
583   --
584   --  References the properties specifying instances that the classifier owns
585   --  by composition. This association is derived, selecting those owned
586   --  properties where isComposite is true.
587
588   overriding function Get_Role
589    (Self : not null access constant UML_Stereotype_Proxy)
590       return AMF.UML.Connectable_Elements.Collections.Set_Of_UML_Connectable_Element;
591   --  Getter of StructuredClassifier::role.
592   --
593   --  References the roles that instances may play in this classifier.
594
595   overriding function Containing_Profile
596    (Self : not null access constant UML_Stereotype_Proxy)
597       return AMF.UML.Profiles.UML_Profile_Access;
598   --  Operation Stereotype::containingProfile.
599   --
600   --  The query containingProfile returns the closest profile directly or
601   --  indirectly containing this stereotype.
602
603   overriding function Profile
604    (Self : not null access constant UML_Stereotype_Proxy)
605       return AMF.UML.Profiles.UML_Profile_Access;
606   --  Operation Stereotype::profile.
607   --
608   --  A stereotype must be contained, directly or indirectly, in a profile.
609
610   overriding function Extension
611    (Self : not null access constant UML_Stereotype_Proxy)
612       return AMF.UML.Extensions.Collections.Set_Of_UML_Extension;
613   --  Operation Class::extension.
614   --
615   --  Missing derivation for Class::/extension : Extension
616
617   overriding function Inherit
618    (Self : not null access constant UML_Stereotype_Proxy;
619     Inhs : AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element)
620       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
621   --  Operation Class::inherit.
622   --
623   --  The inherit operation is overridden to exclude redefined properties.
624
625   overriding function Super_Class
626    (Self : not null access constant UML_Stereotype_Proxy)
627       return AMF.UML.Classes.Collections.Set_Of_UML_Class;
628   --  Operation Class::superClass.
629   --
630   --  Missing derivation for Class::/superClass : Class
631
632   overriding function All_Features
633    (Self : not null access constant UML_Stereotype_Proxy)
634       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
635   --  Operation Classifier::allFeatures.
636   --
637   --  The query allFeatures() gives all of the features in the namespace of
638   --  the classifier. In general, through mechanisms such as inheritance,
639   --  this will be a larger set than feature.
640
641   overriding function Conforms_To
642    (Self : not null access constant UML_Stereotype_Proxy;
643     Other : AMF.UML.Classifiers.UML_Classifier_Access)
644       return Boolean;
645   --  Operation Classifier::conformsTo.
646   --
647   --  The query conformsTo() gives true for a classifier that defines a type
648   --  that conforms to another. This is used, for example, in the
649   --  specification of signature conformance for operations.
650
651   overriding function General
652    (Self : not null access constant UML_Stereotype_Proxy)
653       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
654   --  Operation Classifier::general.
655   --
656   --  The general classifiers are the classifiers referenced by the
657   --  generalization relationships.
658
659   overriding function Has_Visibility_Of
660    (Self : not null access constant UML_Stereotype_Proxy;
661     N : AMF.UML.Named_Elements.UML_Named_Element_Access)
662       return Boolean;
663   --  Operation Classifier::hasVisibilityOf.
664   --
665   --  The query hasVisibilityOf() determines whether a named element is
666   --  visible in the classifier. By default all are visible. It is only
667   --  called when the argument is something owned by a parent.
668
669   overriding function Inheritable_Members
670    (Self : not null access constant UML_Stereotype_Proxy;
671     C : AMF.UML.Classifiers.UML_Classifier_Access)
672       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
673   --  Operation Classifier::inheritableMembers.
674   --
675   --  The query inheritableMembers() gives all of the members of a classifier
676   --  that may be inherited in one of its descendants, subject to whatever
677   --  visibility restrictions apply.
678
679   overriding function Inherited_Member
680    (Self : not null access constant UML_Stereotype_Proxy)
681       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
682   --  Operation Classifier::inheritedMember.
683   --
684   --  The inheritedMember association is derived by inheriting the
685   --  inheritable members of the parents.
686   --  The inheritedMember association is derived by inheriting the
687   --  inheritable members of the parents.
688
689   overriding function Is_Template
690    (Self : not null access constant UML_Stereotype_Proxy)
691       return Boolean;
692   --  Operation Classifier::isTemplate.
693   --
694   --  The query isTemplate() returns whether this templateable element is
695   --  actually a template.
696
697   overriding function May_Specialize_Type
698    (Self : not null access constant UML_Stereotype_Proxy;
699     C : AMF.UML.Classifiers.UML_Classifier_Access)
700       return Boolean;
701   --  Operation Classifier::maySpecializeType.
702   --
703   --  The query maySpecializeType() determines whether this classifier may
704   --  have a generalization relationship to classifiers of the specified
705   --  type. By default a classifier may specialize classifiers of the same or
706   --  a more general type. It is intended to be redefined by classifiers that
707   --  have different specialization constraints.
708
709   overriding function Exclude_Collisions
710    (Self : not null access constant UML_Stereotype_Proxy;
711     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
712       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
713   --  Operation Namespace::excludeCollisions.
714   --
715   --  The query excludeCollisions() excludes from a set of
716   --  PackageableElements any that would not be distinguishable from each
717   --  other in this namespace.
718
719   overriding function Get_Names_Of_Member
720    (Self : not null access constant UML_Stereotype_Proxy;
721     Element : AMF.UML.Named_Elements.UML_Named_Element_Access)
722       return AMF.String_Collections.Set_Of_String;
723   --  Operation Namespace::getNamesOfMember.
724   --
725   --  The query getNamesOfMember() takes importing into account. It gives
726   --  back the set of names that an element would have in an importing
727   --  namespace, either because it is owned, or if not owned then imported
728   --  individually, or if not individually then from a package.
729   --  The query getNamesOfMember() gives a set of all of the names that a
730   --  member would have in a Namespace. In general a member can have multiple
731   --  names in a Namespace if it is imported more than once with different
732   --  aliases. The query takes account of importing. It gives back the set of
733   --  names that an element would have in an importing namespace, either
734   --  because it is owned, or if not owned then imported individually, or if
735   --  not individually then from a package.
736
737   overriding function Import_Members
738    (Self : not null access constant UML_Stereotype_Proxy;
739     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
740       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
741   --  Operation Namespace::importMembers.
742   --
743   --  The query importMembers() defines which of a set of PackageableElements
744   --  are actually imported into the namespace. This excludes hidden ones,
745   --  i.e., those which have names that conflict with names of owned members,
746   --  and also excludes elements which would have the same name when imported.
747
748   overriding function Imported_Member
749    (Self : not null access constant UML_Stereotype_Proxy)
750       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
751   --  Operation Namespace::importedMember.
752   --
753   --  The importedMember property is derived from the ElementImports and the
754   --  PackageImports. References the PackageableElements that are members of
755   --  this Namespace as a result of either PackageImports or ElementImports.
756
757   overriding function Members_Are_Distinguishable
758    (Self : not null access constant UML_Stereotype_Proxy)
759       return Boolean;
760   --  Operation Namespace::membersAreDistinguishable.
761   --
762   --  The Boolean query membersAreDistinguishable() determines whether all of
763   --  the namespace's members are distinguishable within it.
764
765   overriding function Owned_Member
766    (Self : not null access constant UML_Stereotype_Proxy)
767       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
768   --  Operation Namespace::ownedMember.
769   --
770   --  Missing derivation for Namespace::/ownedMember : NamedElement
771
772   overriding function All_Owning_Packages
773    (Self : not null access constant UML_Stereotype_Proxy)
774       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
775   --  Operation NamedElement::allOwningPackages.
776   --
777   --  The query allOwningPackages() returns all the directly or indirectly
778   --  owning packages.
779
780   overriding function Is_Distinguishable_From
781    (Self : not null access constant UML_Stereotype_Proxy;
782     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
783     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
784       return Boolean;
785   --  Operation NamedElement::isDistinguishableFrom.
786   --
787   --  The query isDistinguishableFrom() determines whether two NamedElements
788   --  may logically co-exist within a Namespace. By default, two named
789   --  elements are distinguishable if (a) they have unrelated types or (b)
790   --  they have related types but different names.
791
792   overriding function Namespace
793    (Self : not null access constant UML_Stereotype_Proxy)
794       return AMF.UML.Namespaces.UML_Namespace_Access;
795   --  Operation NamedElement::namespace.
796   --
797   --  Missing derivation for NamedElement::/namespace : Namespace
798
799   overriding function Conforms_To
800    (Self : not null access constant UML_Stereotype_Proxy;
801     Other : AMF.UML.Types.UML_Type_Access)
802       return Boolean;
803   --  Operation Type::conformsTo.
804   --
805   --  The query conformsTo() gives true for a type that conforms to another.
806   --  By default, two types do not conform to each other. This query is
807   --  intended to be redefined for specific conformance situations.
808
809   overriding function Is_Compatible_With
810    (Self : not null access constant UML_Stereotype_Proxy;
811     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
812       return Boolean;
813   --  Operation ParameterableElement::isCompatibleWith.
814   --
815   --  The query isCompatibleWith() determines if this parameterable element
816   --  is compatible with the specified parameterable element. By default
817   --  parameterable element P is compatible with parameterable element Q if
818   --  the kind of P is the same or a subtype as the kind of Q. Subclasses
819   --  should override this operation to specify different compatibility
820   --  constraints.
821
822   overriding function Is_Template_Parameter
823    (Self : not null access constant UML_Stereotype_Proxy)
824       return Boolean;
825   --  Operation ParameterableElement::isTemplateParameter.
826   --
827   --  The query isTemplateParameter() determines if this parameterable
828   --  element is exposed as a formal template parameter.
829
830   overriding function Parameterable_Elements
831    (Self : not null access constant UML_Stereotype_Proxy)
832       return AMF.UML.Parameterable_Elements.Collections.Set_Of_UML_Parameterable_Element;
833   --  Operation TemplateableElement::parameterableElements.
834   --
835   --  The query parameterableElements() returns the set of elements that may
836   --  be used as the parametered elements for a template parameter of this
837   --  templateable element. By default, this set includes all the owned
838   --  elements. Subclasses may override this operation if they choose to
839   --  restrict the set of parameterable elements.
840
841   overriding function Is_Consistent_With
842    (Self : not null access constant UML_Stereotype_Proxy;
843     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
844       return Boolean;
845   --  Operation RedefinableElement::isConsistentWith.
846   --
847   --  The query isConsistentWith() specifies, for any two RedefinableElements
848   --  in a context in which redefinition is possible, whether redefinition
849   --  would be logically consistent. By default, this is false; this
850   --  operation must be overridden for subclasses of RedefinableElement to
851   --  define the consistency conditions.
852
853   overriding function Is_Redefinition_Context_Valid
854    (Self : not null access constant UML_Stereotype_Proxy;
855     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
856       return Boolean;
857   --  Operation RedefinableElement::isRedefinitionContextValid.
858   --
859   --  The query isRedefinitionContextValid() specifies whether the
860   --  redefinition contexts of this RedefinableElement are properly related
861   --  to the redefinition contexts of the specified RedefinableElement to
862   --  allow this element to redefine the other. By default at least one of
863   --  the redefinition contexts of this element must be a specialization of
864   --  at least one of the redefinition contexts of the specified element.
865
866   overriding function Owned_Port
867    (Self : not null access constant UML_Stereotype_Proxy)
868       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
869   --  Operation EncapsulatedClassifier::ownedPort.
870   --
871   --  Missing derivation for EncapsulatedClassifier::/ownedPort : Port
872
873   overriding function Part
874    (Self : not null access constant UML_Stereotype_Proxy)
875       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
876   --  Operation StructuredClassifier::part.
877   --
878   --  Missing derivation for StructuredClassifier::/part : Property
879
880   overriding procedure Enter_Element
881    (Self    : not null access constant UML_Stereotype_Proxy;
882     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
883     Control : in out AMF.Visitors.Traverse_Control);
884   --  Dispatch call to corresponding subprogram of visitor interface.
885
886   overriding procedure Leave_Element
887    (Self    : not null access constant UML_Stereotype_Proxy;
888     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
889     Control : in out AMF.Visitors.Traverse_Control);
890   --  Dispatch call to corresponding subprogram of visitor interface.
891
892   overriding procedure Visit_Element
893    (Self     : not null access constant UML_Stereotype_Proxy;
894     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
895     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
896     Control  : in out AMF.Visitors.Traverse_Control);
897   --  Dispatch call to corresponding subprogram of iterator interface.
898
899end AMF.Internals.UML_Stereotypes;
900