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_Classifiers;
45with AMF.String_Collections;
46with AMF.UML.Classifier_Template_Parameters;
47with AMF.UML.Classifiers.Collections;
48with AMF.UML.Collaboration_Uses.Collections;
49with AMF.UML.Communication_Paths;
50with AMF.UML.Constraints.Collections;
51with AMF.UML.Dependencies.Collections;
52with AMF.UML.Element_Imports.Collections;
53with AMF.UML.Elements.Collections;
54with AMF.UML.Features.Collections;
55with AMF.UML.Generalization_Sets.Collections;
56with AMF.UML.Generalizations.Collections;
57with AMF.UML.Named_Elements.Collections;
58with AMF.UML.Namespaces;
59with AMF.UML.Package_Imports.Collections;
60with AMF.UML.Packageable_Elements.Collections;
61with AMF.UML.Packages.Collections;
62with AMF.UML.Parameterable_Elements.Collections;
63with AMF.UML.Properties.Collections;
64with AMF.UML.Redefinable_Elements.Collections;
65with AMF.UML.Redefinable_Template_Signatures;
66with AMF.UML.String_Expressions;
67with AMF.UML.Substitutions.Collections;
68with AMF.UML.Template_Bindings.Collections;
69with AMF.UML.Template_Parameters;
70with AMF.UML.Template_Signatures;
71with AMF.UML.Types.Collections;
72with AMF.UML.Use_Cases.Collections;
73with AMF.Visitors;
74
75package AMF.Internals.UML_Communication_Paths is
76
77   type UML_Communication_Path_Proxy is
78     limited new AMF.Internals.UML_Classifiers.UML_Classifier_Proxy
79       and AMF.UML.Communication_Paths.UML_Communication_Path with null record;
80
81   overriding function Get_End_Type
82    (Self : not null access constant UML_Communication_Path_Proxy)
83       return AMF.UML.Types.Collections.Ordered_Set_Of_UML_Type;
84   --  Getter of Association::endType.
85   --
86   --  References the classifiers that are used as types of the ends of the
87   --  association.
88
89   overriding function Get_Is_Derived
90    (Self : not null access constant UML_Communication_Path_Proxy)
91       return Boolean;
92   --  Getter of Association::isDerived.
93   --
94   --  Specifies whether the association is derived from other model elements
95   --  such as other associations or constraints.
96
97   overriding procedure Set_Is_Derived
98    (Self : not null access UML_Communication_Path_Proxy;
99     To   : Boolean);
100   --  Setter of Association::isDerived.
101   --
102   --  Specifies whether the association is derived from other model elements
103   --  such as other associations or constraints.
104
105   overriding function Get_Member_End
106    (Self : not null access constant UML_Communication_Path_Proxy)
107       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property;
108   --  Getter of Association::memberEnd.
109   --
110   --  Each end represents participation of instances of the classifier
111   --  connected to the end in links of the association.
112
113   overriding function Get_Navigable_Owned_End
114    (Self : not null access constant UML_Communication_Path_Proxy)
115       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
116   --  Getter of Association::navigableOwnedEnd.
117   --
118   --  The navigable ends that are owned by the association itself.
119
120   overriding function Get_Owned_End
121    (Self : not null access constant UML_Communication_Path_Proxy)
122       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property;
123   --  Getter of Association::ownedEnd.
124   --
125   --  The ends that are owned by the association itself.
126
127   overriding function Get_Related_Element
128    (Self : not null access constant UML_Communication_Path_Proxy)
129       return AMF.UML.Elements.Collections.Set_Of_UML_Element;
130   --  Getter of Relationship::relatedElement.
131   --
132   --  Specifies the elements related by the Relationship.
133
134   overriding function Get_Attribute
135    (Self : not null access constant UML_Communication_Path_Proxy)
136       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
137   --  Getter of Classifier::attribute.
138   --
139   --  Refers to all of the Properties that are direct (i.e. not inherited or
140   --  imported) attributes of the classifier.
141
142   overriding function Get_Collaboration_Use
143    (Self : not null access constant UML_Communication_Path_Proxy)
144       return AMF.UML.Collaboration_Uses.Collections.Set_Of_UML_Collaboration_Use;
145   --  Getter of Classifier::collaborationUse.
146   --
147   --  References the collaboration uses owned by the classifier.
148
149   overriding function Get_Feature
150    (Self : not null access constant UML_Communication_Path_Proxy)
151       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
152   --  Getter of Classifier::feature.
153   --
154   --  Specifies each feature defined in the classifier.
155   --  Note that there may be members of the Classifier that are of the type
156   --  Feature but are not included in this association, e.g. inherited
157   --  features.
158
159   overriding function Get_General
160    (Self : not null access constant UML_Communication_Path_Proxy)
161       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
162   --  Getter of Classifier::general.
163   --
164   --  Specifies the general Classifiers for this Classifier.
165   --  References the general classifier in the Generalization relationship.
166
167   overriding function Get_Generalization
168    (Self : not null access constant UML_Communication_Path_Proxy)
169       return AMF.UML.Generalizations.Collections.Set_Of_UML_Generalization;
170   --  Getter of Classifier::generalization.
171   --
172   --  Specifies the Generalization relationships for this Classifier. These
173   --  Generalizations navigaten to more general classifiers in the
174   --  generalization hierarchy.
175
176   overriding function Get_Inherited_Member
177    (Self : not null access constant UML_Communication_Path_Proxy)
178       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
179   --  Getter of Classifier::inheritedMember.
180   --
181   --  Specifies all elements inherited by this classifier from the general
182   --  classifiers.
183
184   overriding function Get_Is_Abstract
185    (Self : not null access constant UML_Communication_Path_Proxy)
186       return Boolean;
187   --  Getter of Classifier::isAbstract.
188   --
189   --  If true, the Classifier does not provide a complete declaration and can
190   --  typically not be instantiated. An abstract classifier is intended to be
191   --  used by other classifiers e.g. as the target of general
192   --  metarelationships or generalization relationships.
193
194   overriding function Get_Is_Final_Specialization
195    (Self : not null access constant UML_Communication_Path_Proxy)
196       return Boolean;
197   --  Getter of Classifier::isFinalSpecialization.
198   --
199   --  If true, the Classifier cannot be specialized by generalization. Note
200   --  that this property is preserved through package merge operations; that
201   --  is, the capability to specialize a Classifier (i.e.,
202   --  isFinalSpecialization =false) must be preserved in the resulting
203   --  Classifier of a package merge operation where a Classifier with
204   --  isFinalSpecialization =false is merged with a matching Classifier with
205   --  isFinalSpecialization =true: the resulting Classifier will have
206   --  isFinalSpecialization =false.
207
208   overriding procedure Set_Is_Final_Specialization
209    (Self : not null access UML_Communication_Path_Proxy;
210     To   : Boolean);
211   --  Setter of Classifier::isFinalSpecialization.
212   --
213   --  If true, the Classifier cannot be specialized by generalization. Note
214   --  that this property is preserved through package merge operations; that
215   --  is, the capability to specialize a Classifier (i.e.,
216   --  isFinalSpecialization =false) must be preserved in the resulting
217   --  Classifier of a package merge operation where a Classifier with
218   --  isFinalSpecialization =false is merged with a matching Classifier with
219   --  isFinalSpecialization =true: the resulting Classifier will have
220   --  isFinalSpecialization =false.
221
222   overriding function Get_Owned_Template_Signature
223    (Self : not null access constant UML_Communication_Path_Proxy)
224       return AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access;
225   --  Getter of Classifier::ownedTemplateSignature.
226   --
227   --  The optional template signature specifying the formal template
228   --  parameters.
229
230   overriding procedure Set_Owned_Template_Signature
231    (Self : not null access UML_Communication_Path_Proxy;
232     To   : AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access);
233   --  Setter of Classifier::ownedTemplateSignature.
234   --
235   --  The optional template signature specifying the formal template
236   --  parameters.
237
238   overriding function Get_Owned_Use_Case
239    (Self : not null access constant UML_Communication_Path_Proxy)
240       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
241   --  Getter of Classifier::ownedUseCase.
242   --
243   --  References the use cases owned by this classifier.
244
245   overriding function Get_Powertype_Extent
246    (Self : not null access constant UML_Communication_Path_Proxy)
247       return AMF.UML.Generalization_Sets.Collections.Set_Of_UML_Generalization_Set;
248   --  Getter of Classifier::powertypeExtent.
249   --
250   --  Designates the GeneralizationSet of which the associated Classifier is
251   --  a power type.
252
253   overriding function Get_Redefined_Classifier
254    (Self : not null access constant UML_Communication_Path_Proxy)
255       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
256   --  Getter of Classifier::redefinedClassifier.
257   --
258   --  References the Classifiers that are redefined by this Classifier.
259
260   overriding function Get_Representation
261    (Self : not null access constant UML_Communication_Path_Proxy)
262       return AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access;
263   --  Getter of Classifier::representation.
264   --
265   --  References a collaboration use which indicates the collaboration that
266   --  represents this classifier.
267
268   overriding procedure Set_Representation
269    (Self : not null access UML_Communication_Path_Proxy;
270     To   : AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access);
271   --  Setter of Classifier::representation.
272   --
273   --  References a collaboration use which indicates the collaboration that
274   --  represents this classifier.
275
276   overriding function Get_Substitution
277    (Self : not null access constant UML_Communication_Path_Proxy)
278       return AMF.UML.Substitutions.Collections.Set_Of_UML_Substitution;
279   --  Getter of Classifier::substitution.
280   --
281   --  References the substitutions that are owned by this Classifier.
282
283   overriding function Get_Template_Parameter
284    (Self : not null access constant UML_Communication_Path_Proxy)
285       return AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access;
286   --  Getter of Classifier::templateParameter.
287   --
288   --  The template parameter that exposes this element as a formal parameter.
289
290   overriding procedure Set_Template_Parameter
291    (Self : not null access UML_Communication_Path_Proxy;
292     To   : AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access);
293   --  Setter of Classifier::templateParameter.
294   --
295   --  The template parameter that exposes this element as a formal parameter.
296
297   overriding function Get_Use_Case
298    (Self : not null access constant UML_Communication_Path_Proxy)
299       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
300   --  Getter of Classifier::useCase.
301   --
302   --  The set of use cases for which this Classifier is the subject.
303
304   overriding function Get_Element_Import
305    (Self : not null access constant UML_Communication_Path_Proxy)
306       return AMF.UML.Element_Imports.Collections.Set_Of_UML_Element_Import;
307   --  Getter of Namespace::elementImport.
308   --
309   --  References the ElementImports owned by the Namespace.
310
311   overriding function Get_Imported_Member
312    (Self : not null access constant UML_Communication_Path_Proxy)
313       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
314   --  Getter of Namespace::importedMember.
315   --
316   --  References the PackageableElements that are members of this Namespace
317   --  as a result of either PackageImports or ElementImports.
318
319   overriding function Get_Member
320    (Self : not null access constant UML_Communication_Path_Proxy)
321       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
322   --  Getter of Namespace::member.
323   --
324   --  A collection of NamedElements identifiable within the Namespace, either
325   --  by being owned or by being introduced by importing or inheritance.
326
327   overriding function Get_Owned_Member
328    (Self : not null access constant UML_Communication_Path_Proxy)
329       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
330   --  Getter of Namespace::ownedMember.
331   --
332   --  A collection of NamedElements owned by the Namespace.
333
334   overriding function Get_Owned_Rule
335    (Self : not null access constant UML_Communication_Path_Proxy)
336       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint;
337   --  Getter of Namespace::ownedRule.
338   --
339   --  Specifies a set of Constraints owned by this Namespace.
340
341   overriding function Get_Package_Import
342    (Self : not null access constant UML_Communication_Path_Proxy)
343       return AMF.UML.Package_Imports.Collections.Set_Of_UML_Package_Import;
344   --  Getter of Namespace::packageImport.
345   --
346   --  References the PackageImports owned by the Namespace.
347
348   overriding function Get_Client_Dependency
349    (Self : not null access constant UML_Communication_Path_Proxy)
350       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency;
351   --  Getter of NamedElement::clientDependency.
352   --
353   --  Indicates the dependencies that reference the client.
354
355   overriding function Get_Name_Expression
356    (Self : not null access constant UML_Communication_Path_Proxy)
357       return AMF.UML.String_Expressions.UML_String_Expression_Access;
358   --  Getter of NamedElement::nameExpression.
359   --
360   --  The string expression used to define the name of this named element.
361
362   overriding procedure Set_Name_Expression
363    (Self : not null access UML_Communication_Path_Proxy;
364     To   : AMF.UML.String_Expressions.UML_String_Expression_Access);
365   --  Setter of NamedElement::nameExpression.
366   --
367   --  The string expression used to define the name of this named element.
368
369   overriding function Get_Namespace
370    (Self : not null access constant UML_Communication_Path_Proxy)
371       return AMF.UML.Namespaces.UML_Namespace_Access;
372   --  Getter of NamedElement::namespace.
373   --
374   --  Specifies the namespace that owns the NamedElement.
375
376   overriding function Get_Qualified_Name
377    (Self : not null access constant UML_Communication_Path_Proxy)
378       return AMF.Optional_String;
379   --  Getter of NamedElement::qualifiedName.
380   --
381   --  A name which allows the NamedElement to be identified within a
382   --  hierarchy of nested Namespaces. It is constructed from the names of the
383   --  containing namespaces starting at the root of the hierarchy and ending
384   --  with the name of the NamedElement itself.
385
386   overriding function Get_Package
387    (Self : not null access constant UML_Communication_Path_Proxy)
388       return AMF.UML.Packages.UML_Package_Access;
389   --  Getter of Type::package.
390   --
391   --  Specifies the owning package of this classifier, if any.
392
393   overriding procedure Set_Package
394    (Self : not null access UML_Communication_Path_Proxy;
395     To   : AMF.UML.Packages.UML_Package_Access);
396   --  Setter of Type::package.
397   --
398   --  Specifies the owning package of this classifier, if any.
399
400   overriding function Get_Owning_Template_Parameter
401    (Self : not null access constant UML_Communication_Path_Proxy)
402       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
403   --  Getter of ParameterableElement::owningTemplateParameter.
404   --
405   --  The formal template parameter that owns this element.
406
407   overriding procedure Set_Owning_Template_Parameter
408    (Self : not null access UML_Communication_Path_Proxy;
409     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
410   --  Setter of ParameterableElement::owningTemplateParameter.
411   --
412   --  The formal template parameter that owns this element.
413
414   overriding function Get_Template_Parameter
415    (Self : not null access constant UML_Communication_Path_Proxy)
416       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
417   --  Getter of ParameterableElement::templateParameter.
418   --
419   --  The template parameter that exposes this element as a formal parameter.
420
421   overriding procedure Set_Template_Parameter
422    (Self : not null access UML_Communication_Path_Proxy;
423     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
424   --  Setter of ParameterableElement::templateParameter.
425   --
426   --  The template parameter that exposes this element as a formal parameter.
427
428   overriding function Get_Owned_Template_Signature
429    (Self : not null access constant UML_Communication_Path_Proxy)
430       return AMF.UML.Template_Signatures.UML_Template_Signature_Access;
431   --  Getter of TemplateableElement::ownedTemplateSignature.
432   --
433   --  The optional template signature specifying the formal template
434   --  parameters.
435
436   overriding procedure Set_Owned_Template_Signature
437    (Self : not null access UML_Communication_Path_Proxy;
438     To   : AMF.UML.Template_Signatures.UML_Template_Signature_Access);
439   --  Setter of TemplateableElement::ownedTemplateSignature.
440   --
441   --  The optional template signature specifying the formal template
442   --  parameters.
443
444   overriding function Get_Template_Binding
445    (Self : not null access constant UML_Communication_Path_Proxy)
446       return AMF.UML.Template_Bindings.Collections.Set_Of_UML_Template_Binding;
447   --  Getter of TemplateableElement::templateBinding.
448   --
449   --  The optional bindings from this element to templates.
450
451   overriding function Get_Is_Leaf
452    (Self : not null access constant UML_Communication_Path_Proxy)
453       return Boolean;
454   --  Getter of RedefinableElement::isLeaf.
455   --
456   --  Indicates whether it is possible to further redefine a
457   --  RedefinableElement. If the value is true, then it is not possible to
458   --  further redefine the RedefinableElement. Note that this property is
459   --  preserved through package merge operations; that is, the capability to
460   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
461   --  the resulting RedefinableElement of a package merge operation where a
462   --  RedefinableElement with isLeaf=false is merged with a matching
463   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
464   --  will have isLeaf=false. Default value is false.
465
466   overriding procedure Set_Is_Leaf
467    (Self : not null access UML_Communication_Path_Proxy;
468     To   : Boolean);
469   --  Setter of RedefinableElement::isLeaf.
470   --
471   --  Indicates whether it is possible to further redefine a
472   --  RedefinableElement. If the value is true, then it is not possible to
473   --  further redefine the RedefinableElement. Note that this property is
474   --  preserved through package merge operations; that is, the capability to
475   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
476   --  the resulting RedefinableElement of a package merge operation where a
477   --  RedefinableElement with isLeaf=false is merged with a matching
478   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
479   --  will have isLeaf=false. Default value is false.
480
481   overriding function Get_Redefined_Element
482    (Self : not null access constant UML_Communication_Path_Proxy)
483       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element;
484   --  Getter of RedefinableElement::redefinedElement.
485   --
486   --  The redefinable element that is being redefined by this element.
487
488   overriding function Get_Redefinition_Context
489    (Self : not null access constant UML_Communication_Path_Proxy)
490       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
491   --  Getter of RedefinableElement::redefinitionContext.
492   --
493   --  References the contexts that this element may be redefined from.
494
495   overriding function End_Type
496    (Self : not null access constant UML_Communication_Path_Proxy)
497       return AMF.UML.Types.Collections.Ordered_Set_Of_UML_Type;
498   --  Operation Association::endType.
499   --
500   --  endType is derived from the types of the member ends.
501
502   overriding function All_Features
503    (Self : not null access constant UML_Communication_Path_Proxy)
504       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
505   --  Operation Classifier::allFeatures.
506   --
507   --  The query allFeatures() gives all of the features in the namespace of
508   --  the classifier. In general, through mechanisms such as inheritance,
509   --  this will be a larger set than feature.
510
511   overriding function Conforms_To
512    (Self : not null access constant UML_Communication_Path_Proxy;
513     Other : AMF.UML.Classifiers.UML_Classifier_Access)
514       return Boolean;
515   --  Operation Classifier::conformsTo.
516   --
517   --  The query conformsTo() gives true for a classifier that defines a type
518   --  that conforms to another. This is used, for example, in the
519   --  specification of signature conformance for operations.
520
521   overriding function General
522    (Self : not null access constant UML_Communication_Path_Proxy)
523       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
524   --  Operation Classifier::general.
525   --
526   --  The general classifiers are the classifiers referenced by the
527   --  generalization relationships.
528
529   overriding function Has_Visibility_Of
530    (Self : not null access constant UML_Communication_Path_Proxy;
531     N : AMF.UML.Named_Elements.UML_Named_Element_Access)
532       return Boolean;
533   --  Operation Classifier::hasVisibilityOf.
534   --
535   --  The query hasVisibilityOf() determines whether a named element is
536   --  visible in the classifier. By default all are visible. It is only
537   --  called when the argument is something owned by a parent.
538
539   overriding function Inherit
540    (Self : not null access constant UML_Communication_Path_Proxy;
541     Inhs : AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element)
542       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
543   --  Operation Classifier::inherit.
544   --
545   --  The query inherit() defines how to inherit a set of elements. Here the
546   --  operation is defined to inherit them all. It is intended to be
547   --  redefined in circumstances where inheritance is affected by
548   --  redefinition.
549   --  The inherit operation is overridden to exclude redefined properties.
550
551   overriding function Inheritable_Members
552    (Self : not null access constant UML_Communication_Path_Proxy;
553     C : AMF.UML.Classifiers.UML_Classifier_Access)
554       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
555   --  Operation Classifier::inheritableMembers.
556   --
557   --  The query inheritableMembers() gives all of the members of a classifier
558   --  that may be inherited in one of its descendants, subject to whatever
559   --  visibility restrictions apply.
560
561   overriding function Inherited_Member
562    (Self : not null access constant UML_Communication_Path_Proxy)
563       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
564   --  Operation Classifier::inheritedMember.
565   --
566   --  The inheritedMember association is derived by inheriting the
567   --  inheritable members of the parents.
568   --  The inheritedMember association is derived by inheriting the
569   --  inheritable members of the parents.
570
571   overriding function Is_Template
572    (Self : not null access constant UML_Communication_Path_Proxy)
573       return Boolean;
574   --  Operation Classifier::isTemplate.
575   --
576   --  The query isTemplate() returns whether this templateable element is
577   --  actually a template.
578
579   overriding function May_Specialize_Type
580    (Self : not null access constant UML_Communication_Path_Proxy;
581     C : AMF.UML.Classifiers.UML_Classifier_Access)
582       return Boolean;
583   --  Operation Classifier::maySpecializeType.
584   --
585   --  The query maySpecializeType() determines whether this classifier may
586   --  have a generalization relationship to classifiers of the specified
587   --  type. By default a classifier may specialize classifiers of the same or
588   --  a more general type. It is intended to be redefined by classifiers that
589   --  have different specialization constraints.
590
591   overriding function Exclude_Collisions
592    (Self : not null access constant UML_Communication_Path_Proxy;
593     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
594       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
595   --  Operation Namespace::excludeCollisions.
596   --
597   --  The query excludeCollisions() excludes from a set of
598   --  PackageableElements any that would not be distinguishable from each
599   --  other in this namespace.
600
601   overriding function Get_Names_Of_Member
602    (Self : not null access constant UML_Communication_Path_Proxy;
603     Element : AMF.UML.Named_Elements.UML_Named_Element_Access)
604       return AMF.String_Collections.Set_Of_String;
605   --  Operation Namespace::getNamesOfMember.
606   --
607   --  The query getNamesOfMember() takes importing into account. It gives
608   --  back the set of names that an element would have in an importing
609   --  namespace, either because it is owned, or if not owned then imported
610   --  individually, or if not individually then from a package.
611   --  The query getNamesOfMember() gives a set of all of the names that a
612   --  member would have in a Namespace. In general a member can have multiple
613   --  names in a Namespace if it is imported more than once with different
614   --  aliases. The query takes account of importing. It gives back the set of
615   --  names that an element would have in an importing namespace, either
616   --  because it is owned, or if not owned then imported individually, or if
617   --  not individually then from a package.
618
619   overriding function Import_Members
620    (Self : not null access constant UML_Communication_Path_Proxy;
621     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
622       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
623   --  Operation Namespace::importMembers.
624   --
625   --  The query importMembers() defines which of a set of PackageableElements
626   --  are actually imported into the namespace. This excludes hidden ones,
627   --  i.e., those which have names that conflict with names of owned members,
628   --  and also excludes elements which would have the same name when imported.
629
630   overriding function Imported_Member
631    (Self : not null access constant UML_Communication_Path_Proxy)
632       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
633   --  Operation Namespace::importedMember.
634   --
635   --  The importedMember property is derived from the ElementImports and the
636   --  PackageImports. References the PackageableElements that are members of
637   --  this Namespace as a result of either PackageImports or ElementImports.
638
639   overriding function Members_Are_Distinguishable
640    (Self : not null access constant UML_Communication_Path_Proxy)
641       return Boolean;
642   --  Operation Namespace::membersAreDistinguishable.
643   --
644   --  The Boolean query membersAreDistinguishable() determines whether all of
645   --  the namespace's members are distinguishable within it.
646
647   overriding function Owned_Member
648    (Self : not null access constant UML_Communication_Path_Proxy)
649       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
650   --  Operation Namespace::ownedMember.
651   --
652   --  Missing derivation for Namespace::/ownedMember : NamedElement
653
654   overriding function All_Owning_Packages
655    (Self : not null access constant UML_Communication_Path_Proxy)
656       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
657   --  Operation NamedElement::allOwningPackages.
658   --
659   --  The query allOwningPackages() returns all the directly or indirectly
660   --  owning packages.
661
662   overriding function Is_Distinguishable_From
663    (Self : not null access constant UML_Communication_Path_Proxy;
664     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
665     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
666       return Boolean;
667   --  Operation NamedElement::isDistinguishableFrom.
668   --
669   --  The query isDistinguishableFrom() determines whether two NamedElements
670   --  may logically co-exist within a Namespace. By default, two named
671   --  elements are distinguishable if (a) they have unrelated types or (b)
672   --  they have related types but different names.
673
674   overriding function Namespace
675    (Self : not null access constant UML_Communication_Path_Proxy)
676       return AMF.UML.Namespaces.UML_Namespace_Access;
677   --  Operation NamedElement::namespace.
678   --
679   --  Missing derivation for NamedElement::/namespace : Namespace
680
681   overriding function Conforms_To
682    (Self : not null access constant UML_Communication_Path_Proxy;
683     Other : AMF.UML.Types.UML_Type_Access)
684       return Boolean;
685   --  Operation Type::conformsTo.
686   --
687   --  The query conformsTo() gives true for a type that conforms to another.
688   --  By default, two types do not conform to each other. This query is
689   --  intended to be redefined for specific conformance situations.
690
691   overriding function Is_Compatible_With
692    (Self : not null access constant UML_Communication_Path_Proxy;
693     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
694       return Boolean;
695   --  Operation ParameterableElement::isCompatibleWith.
696   --
697   --  The query isCompatibleWith() determines if this parameterable element
698   --  is compatible with the specified parameterable element. By default
699   --  parameterable element P is compatible with parameterable element Q if
700   --  the kind of P is the same or a subtype as the kind of Q. Subclasses
701   --  should override this operation to specify different compatibility
702   --  constraints.
703
704   overriding function Is_Template_Parameter
705    (Self : not null access constant UML_Communication_Path_Proxy)
706       return Boolean;
707   --  Operation ParameterableElement::isTemplateParameter.
708   --
709   --  The query isTemplateParameter() determines if this parameterable
710   --  element is exposed as a formal template parameter.
711
712   overriding function Parameterable_Elements
713    (Self : not null access constant UML_Communication_Path_Proxy)
714       return AMF.UML.Parameterable_Elements.Collections.Set_Of_UML_Parameterable_Element;
715   --  Operation TemplateableElement::parameterableElements.
716   --
717   --  The query parameterableElements() returns the set of elements that may
718   --  be used as the parametered elements for a template parameter of this
719   --  templateable element. By default, this set includes all the owned
720   --  elements. Subclasses may override this operation if they choose to
721   --  restrict the set of parameterable elements.
722
723   overriding function Is_Consistent_With
724    (Self : not null access constant UML_Communication_Path_Proxy;
725     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
726       return Boolean;
727   --  Operation RedefinableElement::isConsistentWith.
728   --
729   --  The query isConsistentWith() specifies, for any two RedefinableElements
730   --  in a context in which redefinition is possible, whether redefinition
731   --  would be logically consistent. By default, this is false; this
732   --  operation must be overridden for subclasses of RedefinableElement to
733   --  define the consistency conditions.
734
735   overriding function Is_Redefinition_Context_Valid
736    (Self : not null access constant UML_Communication_Path_Proxy;
737     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
738       return Boolean;
739   --  Operation RedefinableElement::isRedefinitionContextValid.
740   --
741   --  The query isRedefinitionContextValid() specifies whether the
742   --  redefinition contexts of this RedefinableElement are properly related
743   --  to the redefinition contexts of the specified RedefinableElement to
744   --  allow this element to redefine the other. By default at least one of
745   --  the redefinition contexts of this element must be a specialization of
746   --  at least one of the redefinition contexts of the specified element.
747
748   overriding procedure Enter_Element
749    (Self    : not null access constant UML_Communication_Path_Proxy;
750     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
751     Control : in out AMF.Visitors.Traverse_Control);
752   --  Dispatch call to corresponding subprogram of visitor interface.
753
754   overriding procedure Leave_Element
755    (Self    : not null access constant UML_Communication_Path_Proxy;
756     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
757     Control : in out AMF.Visitors.Traverse_Control);
758   --  Dispatch call to corresponding subprogram of visitor interface.
759
760   overriding procedure Visit_Element
761    (Self     : not null access constant UML_Communication_Path_Proxy;
762     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
763     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
764     Control  : in out AMF.Visitors.Traverse_Control);
765   --  Dispatch call to corresponding subprogram of iterator interface.
766
767end AMF.Internals.UML_Communication_Paths;
768