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