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