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_State_Machines;
45with AMF.String_Collections;
46with AMF.UML.Behavioral_Features;
47with AMF.UML.Behaviored_Classifiers;
48with AMF.UML.Behaviors.Collections;
49with AMF.UML.Classes.Collections;
50with AMF.UML.Classifier_Template_Parameters;
51with AMF.UML.Classifiers.Collections;
52with AMF.UML.Collaboration_Uses.Collections;
53with AMF.UML.Connectable_Elements.Collections;
54with AMF.UML.Connectors.Collections;
55with AMF.UML.Constraints.Collections;
56with AMF.UML.Dependencies.Collections;
57with AMF.UML.Element_Imports.Collections;
58with AMF.UML.Extensions.Collections;
59with AMF.UML.Features.Collections;
60with AMF.UML.Generalization_Sets.Collections;
61with AMF.UML.Generalizations.Collections;
62with AMF.UML.Interface_Realizations.Collections;
63with AMF.UML.Named_Elements.Collections;
64with AMF.UML.Namespaces;
65with AMF.UML.Operations.Collections;
66with AMF.UML.Package_Imports.Collections;
67with AMF.UML.Packageable_Elements.Collections;
68with AMF.UML.Packages.Collections;
69with AMF.UML.Parameter_Sets.Collections;
70with AMF.UML.Parameterable_Elements.Collections;
71with AMF.UML.Parameters.Collections;
72with AMF.UML.Ports.Collections;
73with AMF.UML.Properties.Collections;
74with AMF.UML.Protocol_Conformances.Collections;
75with AMF.UML.Protocol_State_Machines;
76with AMF.UML.Pseudostates.Collections;
77with AMF.UML.Receptions.Collections;
78with AMF.UML.Redefinable_Elements.Collections;
79with AMF.UML.Redefinable_Template_Signatures;
80with AMF.UML.Regions.Collections;
81with AMF.UML.State_Machines.Collections;
82with AMF.UML.States.Collections;
83with AMF.UML.String_Expressions;
84with AMF.UML.Substitutions.Collections;
85with AMF.UML.Template_Bindings.Collections;
86with AMF.UML.Template_Parameters;
87with AMF.UML.Template_Signatures;
88with AMF.UML.Types;
89with AMF.UML.Use_Cases.Collections;
90with AMF.Visitors;
91
92package AMF.Internals.UML_Protocol_State_Machines is
93
94   type UML_Protocol_State_Machine_Proxy is
95     limited new AMF.Internals.UML_State_Machines.UML_State_Machine_Proxy
96       and AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine with null record;
97
98   overriding function Get_Conformance
99    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
100       return AMF.UML.Protocol_Conformances.Collections.Set_Of_UML_Protocol_Conformance;
101   --  Getter of ProtocolStateMachine::conformance.
102   --
103   --  Conformance between protocol state machines.
104
105   overriding function Get_Connection_Point
106    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
107       return AMF.UML.Pseudostates.Collections.Set_Of_UML_Pseudostate;
108   --  Getter of StateMachine::connectionPoint.
109   --
110   --  The connection points defined for this state machine. They represent
111   --  the interface of the state machine when used as part of submachine
112   --  state.
113
114   overriding function Get_Extended_State_Machine
115    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
116       return AMF.UML.State_Machines.Collections.Set_Of_UML_State_Machine;
117   --  Getter of StateMachine::extendedStateMachine.
118   --
119   --  The state machines of which this is an extension.
120
121   overriding function Get_Region
122    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
123       return AMF.UML.Regions.Collections.Set_Of_UML_Region;
124   --  Getter of StateMachine::region.
125   --
126   --  The regions owned directly by the state machine.
127
128   overriding function Get_Submachine_State
129    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
130       return AMF.UML.States.Collections.Set_Of_UML_State;
131   --  Getter of StateMachine::submachineState.
132   --
133   --  References the submachine(s) in case of a submachine state. Multiple
134   --  machines are referenced in case of a concurrent state.
135
136   overriding function Get_Context
137    (Self : not null access constant UML_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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_Protocol_State_Machine_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 LCA
725    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
726     S1 : AMF.UML.States.UML_State_Access;
727     S2 : AMF.UML.States.UML_State_Access)
728       return AMF.UML.Namespaces.UML_Namespace_Access;
729   --  Operation StateMachine::LCA.
730   --
731   --  The operation LCA(s1,s2) returns an orthogonal state or region which is
732   --  the least common ancestor of states s1 and s2, based on the
733   --  statemachine containment hierarchy.
734
735   overriding function Ancestor
736    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
737     S1 : AMF.UML.States.UML_State_Access;
738     S2 : AMF.UML.States.UML_State_Access)
739       return Boolean;
740   --  Operation StateMachine::ancestor.
741   --
742   --  The query ancestor(s1, s2) checks whether s1 is an ancestor state of
743   --  state s2.
744
745   overriding function Is_Consistent_With
746    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
747     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
748       return Boolean;
749   --  Operation StateMachine::isConsistentWith.
750   --
751   --  The query isConsistentWith() specifies that a redefining state machine
752   --  is consistent with a redefined state machine provided that the
753   --  redefining state machine is an extension of the redefined state
754   --  machine: Regions are inherited and regions can be added, inherited
755   --  regions can be redefined. In case of multiple redefining state
756   --  machines, extension implies that the redefining state machine gets
757   --  orthogonal regions for each of the redefined state machines.
758
759   overriding function Is_Redefinition_Context_Valid
760    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
761     Redefined : AMF.UML.State_Machines.UML_State_Machine_Access)
762       return Boolean;
763   --  Operation StateMachine::isRedefinitionContextValid.
764   --
765   --  The query isRedefinitionContextValid() specifies whether the
766   --  redefinition contexts of a statemachine are properly related to the
767   --  redefinition contexts of the specified statemachine to allow this
768   --  element to redefine the other. The containing classifier of a
769   --  redefining statemachine must redefine the containing classifier of the
770   --  redefined statemachine.
771
772   overriding function Context
773    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
774       return AMF.UML.Behaviored_Classifiers.UML_Behaviored_Classifier_Access;
775   --  Operation Behavior::context.
776   --
777   --  Missing derivation for Behavior::/context : BehavioredClassifier
778
779   overriding function Extension
780    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
781       return AMF.UML.Extensions.Collections.Set_Of_UML_Extension;
782   --  Operation Class::extension.
783   --
784   --  Missing derivation for Class::/extension : Extension
785
786   overriding function Inherit
787    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
788     Inhs : AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element)
789       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
790   --  Operation Class::inherit.
791   --
792   --  The inherit operation is overridden to exclude redefined properties.
793
794   overriding function Super_Class
795    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
796       return AMF.UML.Classes.Collections.Set_Of_UML_Class;
797   --  Operation Class::superClass.
798   --
799   --  Missing derivation for Class::/superClass : Class
800
801   overriding function All_Features
802    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
803       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
804   --  Operation Classifier::allFeatures.
805   --
806   --  The query allFeatures() gives all of the features in the namespace of
807   --  the classifier. In general, through mechanisms such as inheritance,
808   --  this will be a larger set than feature.
809
810   overriding function Conforms_To
811    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
812     Other : AMF.UML.Classifiers.UML_Classifier_Access)
813       return Boolean;
814   --  Operation Classifier::conformsTo.
815   --
816   --  The query conformsTo() gives true for a classifier that defines a type
817   --  that conforms to another. This is used, for example, in the
818   --  specification of signature conformance for operations.
819
820   overriding function General
821    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
822       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
823   --  Operation Classifier::general.
824   --
825   --  The general classifiers are the classifiers referenced by the
826   --  generalization relationships.
827
828   overriding function Has_Visibility_Of
829    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
830     N : AMF.UML.Named_Elements.UML_Named_Element_Access)
831       return Boolean;
832   --  Operation Classifier::hasVisibilityOf.
833   --
834   --  The query hasVisibilityOf() determines whether a named element is
835   --  visible in the classifier. By default all are visible. It is only
836   --  called when the argument is something owned by a parent.
837
838   overriding function Inheritable_Members
839    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
840     C : AMF.UML.Classifiers.UML_Classifier_Access)
841       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
842   --  Operation Classifier::inheritableMembers.
843   --
844   --  The query inheritableMembers() gives all of the members of a classifier
845   --  that may be inherited in one of its descendants, subject to whatever
846   --  visibility restrictions apply.
847
848   overriding function Inherited_Member
849    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
850       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
851   --  Operation Classifier::inheritedMember.
852   --
853   --  The inheritedMember association is derived by inheriting the
854   --  inheritable members of the parents.
855   --  The inheritedMember association is derived by inheriting the
856   --  inheritable members of the parents.
857
858   overriding function Is_Template
859    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
860       return Boolean;
861   --  Operation Classifier::isTemplate.
862   --
863   --  The query isTemplate() returns whether this templateable element is
864   --  actually a template.
865
866   overriding function May_Specialize_Type
867    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
868     C : AMF.UML.Classifiers.UML_Classifier_Access)
869       return Boolean;
870   --  Operation Classifier::maySpecializeType.
871   --
872   --  The query maySpecializeType() determines whether this classifier may
873   --  have a generalization relationship to classifiers of the specified
874   --  type. By default a classifier may specialize classifiers of the same or
875   --  a more general type. It is intended to be redefined by classifiers that
876   --  have different specialization constraints.
877
878   overriding function Exclude_Collisions
879    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
880     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
881       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
882   --  Operation Namespace::excludeCollisions.
883   --
884   --  The query excludeCollisions() excludes from a set of
885   --  PackageableElements any that would not be distinguishable from each
886   --  other in this namespace.
887
888   overriding function Get_Names_Of_Member
889    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
890     Element : AMF.UML.Named_Elements.UML_Named_Element_Access)
891       return AMF.String_Collections.Set_Of_String;
892   --  Operation Namespace::getNamesOfMember.
893   --
894   --  The query getNamesOfMember() takes importing into account. It gives
895   --  back the set of names that an element would have in an importing
896   --  namespace, either because it is owned, or if not owned then imported
897   --  individually, or if not individually then from a package.
898   --  The query getNamesOfMember() gives a set of all of the names that a
899   --  member would have in a Namespace. In general a member can have multiple
900   --  names in a Namespace if it is imported more than once with different
901   --  aliases. The query takes account of importing. It gives back the set of
902   --  names that an element would have in an importing namespace, either
903   --  because it is owned, or if not owned then imported individually, or if
904   --  not individually then from a package.
905
906   overriding function Import_Members
907    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
908     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
909       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
910   --  Operation Namespace::importMembers.
911   --
912   --  The query importMembers() defines which of a set of PackageableElements
913   --  are actually imported into the namespace. This excludes hidden ones,
914   --  i.e., those which have names that conflict with names of owned members,
915   --  and also excludes elements which would have the same name when imported.
916
917   overriding function Imported_Member
918    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
919       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
920   --  Operation Namespace::importedMember.
921   --
922   --  The importedMember property is derived from the ElementImports and the
923   --  PackageImports. References the PackageableElements that are members of
924   --  this Namespace as a result of either PackageImports or ElementImports.
925
926   overriding function Members_Are_Distinguishable
927    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
928       return Boolean;
929   --  Operation Namespace::membersAreDistinguishable.
930   --
931   --  The Boolean query membersAreDistinguishable() determines whether all of
932   --  the namespace's members are distinguishable within it.
933
934   overriding function Owned_Member
935    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
936       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
937   --  Operation Namespace::ownedMember.
938   --
939   --  Missing derivation for Namespace::/ownedMember : NamedElement
940
941   overriding function All_Owning_Packages
942    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
943       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
944   --  Operation NamedElement::allOwningPackages.
945   --
946   --  The query allOwningPackages() returns all the directly or indirectly
947   --  owning packages.
948
949   overriding function Is_Distinguishable_From
950    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
951     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
952     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
953       return Boolean;
954   --  Operation NamedElement::isDistinguishableFrom.
955   --
956   --  The query isDistinguishableFrom() determines whether two NamedElements
957   --  may logically co-exist within a Namespace. By default, two named
958   --  elements are distinguishable if (a) they have unrelated types or (b)
959   --  they have related types but different names.
960
961   overriding function Namespace
962    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
963       return AMF.UML.Namespaces.UML_Namespace_Access;
964   --  Operation NamedElement::namespace.
965   --
966   --  Missing derivation for NamedElement::/namespace : Namespace
967
968   overriding function Conforms_To
969    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
970     Other : AMF.UML.Types.UML_Type_Access)
971       return Boolean;
972   --  Operation Type::conformsTo.
973   --
974   --  The query conformsTo() gives true for a type that conforms to another.
975   --  By default, two types do not conform to each other. This query is
976   --  intended to be redefined for specific conformance situations.
977
978   overriding function Is_Compatible_With
979    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
980     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
981       return Boolean;
982   --  Operation ParameterableElement::isCompatibleWith.
983   --
984   --  The query isCompatibleWith() determines if this parameterable element
985   --  is compatible with the specified parameterable element. By default
986   --  parameterable element P is compatible with parameterable element Q if
987   --  the kind of P is the same or a subtype as the kind of Q. Subclasses
988   --  should override this operation to specify different compatibility
989   --  constraints.
990
991   overriding function Is_Template_Parameter
992    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
993       return Boolean;
994   --  Operation ParameterableElement::isTemplateParameter.
995   --
996   --  The query isTemplateParameter() determines if this parameterable
997   --  element is exposed as a formal template parameter.
998
999   overriding function Parameterable_Elements
1000    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
1001       return AMF.UML.Parameterable_Elements.Collections.Set_Of_UML_Parameterable_Element;
1002   --  Operation TemplateableElement::parameterableElements.
1003   --
1004   --  The query parameterableElements() returns the set of elements that may
1005   --  be used as the parametered elements for a template parameter of this
1006   --  templateable element. By default, this set includes all the owned
1007   --  elements. Subclasses may override this operation if they choose to
1008   --  restrict the set of parameterable elements.
1009
1010   overriding function Is_Redefinition_Context_Valid
1011    (Self : not null access constant UML_Protocol_State_Machine_Proxy;
1012     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
1013       return Boolean;
1014   --  Operation RedefinableElement::isRedefinitionContextValid.
1015   --
1016   --  The query isRedefinitionContextValid() specifies whether the
1017   --  redefinition contexts of this RedefinableElement are properly related
1018   --  to the redefinition contexts of the specified RedefinableElement to
1019   --  allow this element to redefine the other. By default at least one of
1020   --  the redefinition contexts of this element must be a specialization of
1021   --  at least one of the redefinition contexts of the specified element.
1022
1023   overriding function Owned_Port
1024    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
1025       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
1026   --  Operation EncapsulatedClassifier::ownedPort.
1027   --
1028   --  Missing derivation for EncapsulatedClassifier::/ownedPort : Port
1029
1030   overriding function Part
1031    (Self : not null access constant UML_Protocol_State_Machine_Proxy)
1032       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
1033   --  Operation StructuredClassifier::part.
1034   --
1035   --  Missing derivation for StructuredClassifier::/part : Property
1036
1037   overriding procedure Enter_Element
1038    (Self    : not null access constant UML_Protocol_State_Machine_Proxy;
1039     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1040     Control : in out AMF.Visitors.Traverse_Control);
1041   --  Dispatch call to corresponding subprogram of visitor interface.
1042
1043   overriding procedure Leave_Element
1044    (Self    : not null access constant UML_Protocol_State_Machine_Proxy;
1045     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1046     Control : in out AMF.Visitors.Traverse_Control);
1047   --  Dispatch call to corresponding subprogram of visitor interface.
1048
1049   overriding procedure Visit_Element
1050    (Self     : not null access constant UML_Protocol_State_Machine_Proxy;
1051     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
1052     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
1053     Control  : in out AMF.Visitors.Traverse_Control);
1054   --  Dispatch call to corresponding subprogram of iterator interface.
1055
1056end AMF.Internals.UML_Protocol_State_Machines;
1057