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: 2981 $ $Date: 2012-05-15 20:56:15 +0400 (Tue, 15 May 2012) $
43------------------------------------------------------------------------------
44with AMF.Internals.UML_Properties;
45with AMF.UML.Associations;
46with AMF.UML.Classes;
47with AMF.UML.Classifiers.Collections;
48with AMF.UML.Connectable_Element_Template_Parameters;
49with AMF.UML.Connector_Ends.Collections;
50with AMF.UML.Data_Types;
51with AMF.UML.Dependencies.Collections;
52with AMF.UML.Deployments.Collections;
53with AMF.UML.Interfaces.Collections;
54with AMF.UML.Multiplicity_Elements;
55with AMF.UML.Named_Elements;
56with AMF.UML.Namespaces;
57with AMF.UML.Packageable_Elements.Collections;
58with AMF.UML.Packages.Collections;
59with AMF.UML.Parameterable_Elements;
60with AMF.UML.Ports.Collections;
61with AMF.UML.Properties.Collections;
62with AMF.UML.Protocol_State_Machines;
63with AMF.UML.Redefinable_Elements.Collections;
64with AMF.UML.String_Expressions;
65with AMF.UML.Template_Parameters;
66with AMF.UML.Types.Collections;
67with AMF.UML.Value_Specifications;
68with AMF.Visitors;
69
70package AMF.Internals.UML_Ports is
71
72   type UML_Port_Proxy is
73     limited new AMF.Internals.UML_Properties.UML_Property_Proxy
74       and AMF.UML.Ports.UML_Port with null record;
75
76   overriding function Get_Is_Behavior
77    (Self : not null access constant UML_Port_Proxy)
78       return Boolean;
79   --  Getter of Port::isBehavior.
80   --
81   --  Specifies whether requests arriving at this port are sent to the
82   --  classifier behavior of this classifier. Such ports are referred to as
83   --  behavior port. Any invocation of a behavioral feature targeted at a
84   --  behavior port will be handled by the instance of the owning classifier
85   --  itself, rather than by any instances that this classifier may contain.
86
87   overriding procedure Set_Is_Behavior
88    (Self : not null access UML_Port_Proxy;
89     To   : Boolean);
90   --  Setter of Port::isBehavior.
91   --
92   --  Specifies whether requests arriving at this port are sent to the
93   --  classifier behavior of this classifier. Such ports are referred to as
94   --  behavior port. Any invocation of a behavioral feature targeted at a
95   --  behavior port will be handled by the instance of the owning classifier
96   --  itself, rather than by any instances that this classifier may contain.
97
98   overriding function Get_Is_Conjugated
99    (Self : not null access constant UML_Port_Proxy)
100       return Boolean;
101   --  Getter of Port::isConjugated.
102   --
103   --  Specifies the way that the provided and required interfaces are derived
104   --  from the Port’s Type. The default value is false.
105
106   overriding procedure Set_Is_Conjugated
107    (Self : not null access UML_Port_Proxy;
108     To   : Boolean);
109   --  Setter of Port::isConjugated.
110   --
111   --  Specifies the way that the provided and required interfaces are derived
112   --  from the Port’s Type. The default value is false.
113
114   overriding function Get_Is_Service
115    (Self : not null access constant UML_Port_Proxy)
116       return Boolean;
117   --  Getter of Port::isService.
118   --
119   --  If true indicates that this port is used to provide the published
120   --  functionality of a classifier; if false, this port is used to implement
121   --  the classifier but is not part of the essential externally-visible
122   --  functionality of the classifier and can, therefore, be altered or
123   --  deleted along with the internal implementation of the classifier and
124   --  other properties that are considered part of its implementation.
125
126   overriding procedure Set_Is_Service
127    (Self : not null access UML_Port_Proxy;
128     To   : Boolean);
129   --  Setter of Port::isService.
130   --
131   --  If true indicates that this port is used to provide the published
132   --  functionality of a classifier; if false, this port is used to implement
133   --  the classifier but is not part of the essential externally-visible
134   --  functionality of the classifier and can, therefore, be altered or
135   --  deleted along with the internal implementation of the classifier and
136   --  other properties that are considered part of its implementation.
137
138   overriding function Get_Protocol
139    (Self : not null access constant UML_Port_Proxy)
140       return AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access;
141   --  Getter of Port::protocol.
142   --
143   --  References an optional protocol state machine which describes valid
144   --  interactions at this interaction point.
145
146   overriding procedure Set_Protocol
147    (Self : not null access UML_Port_Proxy;
148     To   : AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access);
149   --  Setter of Port::protocol.
150   --
151   --  References an optional protocol state machine which describes valid
152   --  interactions at this interaction point.
153
154   overriding function Get_Provided
155    (Self : not null access constant UML_Port_Proxy)
156       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface;
157   --  Getter of Port::provided.
158   --
159   --  References the interfaces specifying the set of operations and
160   --  receptions that the classifier offers to its environment via this port,
161   --  and which it will handle either directly or by forwarding it to a part
162   --  of its internal structure. This association is derived according to the
163   --  value of isConjugated. If isConjugated is false, provided is derived as
164   --  the union of the sets of interfaces realized by the type of the port
165   --  and its supertypes, or directly from the type of the port if the port
166   --  is typed by an interface. If isConjugated is true, it is derived as the
167   --  union of the sets of interfaces used by the type of the port and its
168   --  supertypes.
169
170   overriding function Get_Redefined_Port
171    (Self : not null access constant UML_Port_Proxy)
172       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
173   --  Getter of Port::redefinedPort.
174   --
175   --  A port may be redefined when its containing classifier is specialized.
176   --  The redefining port may have additional interfaces to those that are
177   --  associated with the redefined port or it may replace an interface by
178   --  one of its subtypes.
179
180   overriding function Get_Required
181    (Self : not null access constant UML_Port_Proxy)
182       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface;
183   --  Getter of Port::required.
184   --
185   --  References the interfaces specifying the set of operations and
186   --  receptions that the classifier expects its environment to handle via
187   --  this port. This association is derived according to the value of
188   --  isConjugated. If isConjugated is false, required is derived as the
189   --  union of the sets of interfaces used by the type of the port and its
190   --  supertypes. If isConjugated is true, it is derived as the union of the
191   --  sets of interfaces realized by the type of the port and its supertypes,
192   --  or directly from the type of the port if the port is typed by an
193   --  interface.
194
195   overriding function Get_Aggregation
196    (Self : not null access constant UML_Port_Proxy)
197       return AMF.UML.UML_Aggregation_Kind;
198   --  Getter of Property::aggregation.
199   --
200   --  Specifies the kind of aggregation that applies to the Property.
201
202   overriding procedure Set_Aggregation
203    (Self : not null access UML_Port_Proxy;
204     To   : AMF.UML.UML_Aggregation_Kind);
205   --  Setter of Property::aggregation.
206   --
207   --  Specifies the kind of aggregation that applies to the Property.
208
209   overriding function Get_Association
210    (Self : not null access constant UML_Port_Proxy)
211       return AMF.UML.Associations.UML_Association_Access;
212   --  Getter of Property::association.
213   --
214   --  References the association of which this property is a member, if any.
215
216   overriding procedure Set_Association
217    (Self : not null access UML_Port_Proxy;
218     To   : AMF.UML.Associations.UML_Association_Access);
219   --  Setter of Property::association.
220   --
221   --  References the association of which this property is a member, if any.
222
223   overriding function Get_Association_End
224    (Self : not null access constant UML_Port_Proxy)
225       return AMF.UML.Properties.UML_Property_Access;
226   --  Getter of Property::associationEnd.
227   --
228   --  Designates the optional association end that owns a qualifier attribute.
229
230   overriding procedure Set_Association_End
231    (Self : not null access UML_Port_Proxy;
232     To   : AMF.UML.Properties.UML_Property_Access);
233   --  Setter of Property::associationEnd.
234   --
235   --  Designates the optional association end that owns a qualifier attribute.
236
237   overriding function Get_Class
238    (Self : not null access constant UML_Port_Proxy)
239       return AMF.UML.Classes.UML_Class_Access;
240   --  Getter of Property::class.
241   --
242   --  References the Class that owns the Property.
243   --  References the Class that owns the Property.
244
245   overriding procedure Set_Class
246    (Self : not null access UML_Port_Proxy;
247     To   : AMF.UML.Classes.UML_Class_Access);
248   --  Setter of Property::class.
249   --
250   --  References the Class that owns the Property.
251   --  References the Class that owns the Property.
252
253   overriding function Get_Datatype
254    (Self : not null access constant UML_Port_Proxy)
255       return AMF.UML.Data_Types.UML_Data_Type_Access;
256   --  Getter of Property::datatype.
257   --
258   --  The DataType that owns this Property.
259
260   overriding procedure Set_Datatype
261    (Self : not null access UML_Port_Proxy;
262     To   : AMF.UML.Data_Types.UML_Data_Type_Access);
263   --  Setter of Property::datatype.
264   --
265   --  The DataType that owns this Property.
266
267   overriding function Get_Default
268    (Self : not null access constant UML_Port_Proxy)
269       return AMF.Optional_String;
270   --  Getter of Property::default.
271   --
272   --  A String that is evaluated to give a default value for the Property
273   --  when an object of the owning Classifier is instantiated.
274   --  Specifies a String that represents a value to be used when no argument
275   --  is supplied for the Property.
276
277   overriding procedure Set_Default
278    (Self : not null access UML_Port_Proxy;
279     To   : AMF.Optional_String);
280   --  Setter of Property::default.
281   --
282   --  A String that is evaluated to give a default value for the Property
283   --  when an object of the owning Classifier is instantiated.
284   --  Specifies a String that represents a value to be used when no argument
285   --  is supplied for the Property.
286
287   overriding function Get_Default_Value
288    (Self : not null access constant UML_Port_Proxy)
289       return AMF.UML.Value_Specifications.UML_Value_Specification_Access;
290   --  Getter of Property::defaultValue.
291   --
292   --  A ValueSpecification that is evaluated to give a default value for the
293   --  Property when an object of the owning Classifier is instantiated.
294
295   overriding procedure Set_Default_Value
296    (Self : not null access UML_Port_Proxy;
297     To   : AMF.UML.Value_Specifications.UML_Value_Specification_Access);
298   --  Setter of Property::defaultValue.
299   --
300   --  A ValueSpecification that is evaluated to give a default value for the
301   --  Property when an object of the owning Classifier is instantiated.
302
303   overriding function Get_Interface
304    (Self : not null access constant UML_Port_Proxy)
305       return AMF.UML.Interfaces.UML_Interface_Access;
306   --  Getter of Property::interface.
307   --
308   --  References the Interface that owns the Property
309
310   overriding procedure Set_Interface
311    (Self : not null access UML_Port_Proxy;
312     To   : AMF.UML.Interfaces.UML_Interface_Access);
313   --  Setter of Property::interface.
314   --
315   --  References the Interface that owns the Property
316
317   overriding function Get_Is_Derived
318    (Self : not null access constant UML_Port_Proxy)
319       return Boolean;
320   --  Getter of Property::isDerived.
321   --
322   --  Specifies whether the Property is derived, i.e., whether its value or
323   --  values can be computed from other information.
324   --  If isDerived is true, the value of the attribute is derived from
325   --  information elsewhere.
326
327   overriding procedure Set_Is_Derived
328    (Self : not null access UML_Port_Proxy;
329     To   : Boolean);
330   --  Setter of Property::isDerived.
331   --
332   --  Specifies whether the Property is derived, i.e., whether its value or
333   --  values can be computed from other information.
334   --  If isDerived is true, the value of the attribute is derived from
335   --  information elsewhere.
336
337   overriding function Get_Is_Derived_Union
338    (Self : not null access constant UML_Port_Proxy)
339       return Boolean;
340   --  Getter of Property::isDerivedUnion.
341   --
342   --  Specifies whether the property is derived as the union of all of the
343   --  properties that are constrained to subset it.
344
345   overriding procedure Set_Is_Derived_Union
346    (Self : not null access UML_Port_Proxy;
347     To   : Boolean);
348   --  Setter of Property::isDerivedUnion.
349   --
350   --  Specifies whether the property is derived as the union of all of the
351   --  properties that are constrained to subset it.
352
353   overriding function Get_Is_ID
354    (Self : not null access constant UML_Port_Proxy)
355       return Boolean;
356   --  Getter of Property::isID.
357   --
358   --  True indicates this property can be used to uniquely identify an
359   --  instance of the containing Class.
360
361   overriding procedure Set_Is_ID
362    (Self : not null access UML_Port_Proxy;
363     To   : Boolean);
364   --  Setter of Property::isID.
365   --
366   --  True indicates this property can be used to uniquely identify an
367   --  instance of the containing Class.
368
369   overriding function Get_Is_Read_Only
370    (Self : not null access constant UML_Port_Proxy)
371       return Boolean;
372   --  Getter of Property::isReadOnly.
373   --
374   --  If isReadOnly is true, the attribute may not be written to after
375   --  initialization.
376   --  If true, the attribute may only be read, and not written.
377
378   overriding procedure Set_Is_Read_Only
379    (Self : not null access UML_Port_Proxy;
380     To   : Boolean);
381   --  Setter of Property::isReadOnly.
382   --
383   --  If isReadOnly is true, the attribute may not be written to after
384   --  initialization.
385   --  If true, the attribute may only be read, and not written.
386
387   overriding function Get_Opposite
388    (Self : not null access constant UML_Port_Proxy)
389       return AMF.UML.Properties.UML_Property_Access;
390   --  Getter of Property::opposite.
391   --
392   --  In the case where the property is one navigable end of a binary
393   --  association with both ends navigable, this gives the other end.
394
395   overriding procedure Set_Opposite
396    (Self : not null access UML_Port_Proxy;
397     To   : AMF.UML.Properties.UML_Property_Access);
398   --  Setter of Property::opposite.
399   --
400   --  In the case where the property is one navigable end of a binary
401   --  association with both ends navigable, this gives the other end.
402
403   overriding function Get_Owning_Association
404    (Self : not null access constant UML_Port_Proxy)
405       return AMF.UML.Associations.UML_Association_Access;
406   --  Getter of Property::owningAssociation.
407   --
408   --  References the owning association of this property, if any.
409
410   overriding procedure Set_Owning_Association
411    (Self : not null access UML_Port_Proxy;
412     To   : AMF.UML.Associations.UML_Association_Access);
413   --  Setter of Property::owningAssociation.
414   --
415   --  References the owning association of this property, if any.
416
417   overriding function Get_Qualifier
418    (Self : not null access constant UML_Port_Proxy)
419       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property;
420   --  Getter of Property::qualifier.
421   --
422   --  An optional list of ordered qualifier attributes for the end. If the
423   --  list is empty, then the Association is not qualified.
424
425   overriding function Get_Redefined_Property
426    (Self : not null access constant UML_Port_Proxy)
427       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
428   --  Getter of Property::redefinedProperty.
429   --
430   --  References the properties that are redefined by this property.
431
432   overriding function Get_Subsetted_Property
433    (Self : not null access constant UML_Port_Proxy)
434       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
435   --  Getter of Property::subsettedProperty.
436   --
437   --  References the properties of which this property is constrained to be a
438   --  subset.
439
440   overriding function Get_End
441    (Self : not null access constant UML_Port_Proxy)
442       return AMF.UML.Connector_Ends.Collections.Ordered_Set_Of_UML_Connector_End;
443   --  Getter of ConnectableElement::end.
444   --
445   --  Denotes a set of connector ends that attaches to this connectable
446   --  element.
447
448   overriding function Get_Template_Parameter
449    (Self : not null access constant UML_Port_Proxy)
450       return AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access;
451   --  Getter of ConnectableElement::templateParameter.
452   --
453   --  The ConnectableElementTemplateParameter for this ConnectableElement
454   --  parameter.
455
456   overriding procedure Set_Template_Parameter
457    (Self : not null access UML_Port_Proxy;
458     To   : AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access);
459   --  Setter of ConnectableElement::templateParameter.
460   --
461   --  The ConnectableElementTemplateParameter for this ConnectableElement
462   --  parameter.
463
464   overriding function Get_Type
465    (Self : not null access constant UML_Port_Proxy)
466       return AMF.UML.Types.UML_Type_Access;
467   --  Getter of TypedElement::type.
468   --
469   --  The type of the TypedElement.
470   --  This information is derived from the return result for this Operation.
471
472   overriding procedure Set_Type
473    (Self : not null access UML_Port_Proxy;
474     To   : AMF.UML.Types.UML_Type_Access);
475   --  Setter of TypedElement::type.
476   --
477   --  The type of the TypedElement.
478   --  This information is derived from the return result for this Operation.
479
480   overriding function Get_Client_Dependency
481    (Self : not null access constant UML_Port_Proxy)
482       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency;
483   --  Getter of NamedElement::clientDependency.
484   --
485   --  Indicates the dependencies that reference the client.
486
487   overriding function Get_Name_Expression
488    (Self : not null access constant UML_Port_Proxy)
489       return AMF.UML.String_Expressions.UML_String_Expression_Access;
490   --  Getter of NamedElement::nameExpression.
491   --
492   --  The string expression used to define the name of this named element.
493
494   overriding procedure Set_Name_Expression
495    (Self : not null access UML_Port_Proxy;
496     To   : AMF.UML.String_Expressions.UML_String_Expression_Access);
497   --  Setter of NamedElement::nameExpression.
498   --
499   --  The string expression used to define the name of this named element.
500
501   overriding function Get_Namespace
502    (Self : not null access constant UML_Port_Proxy)
503       return AMF.UML.Namespaces.UML_Namespace_Access;
504   --  Getter of NamedElement::namespace.
505   --
506   --  Specifies the namespace that owns the NamedElement.
507
508   overriding function Get_Qualified_Name
509    (Self : not null access constant UML_Port_Proxy)
510       return AMF.Optional_String;
511   --  Getter of NamedElement::qualifiedName.
512   --
513   --  A name which allows the NamedElement to be identified within a
514   --  hierarchy of nested Namespaces. It is constructed from the names of the
515   --  containing namespaces starting at the root of the hierarchy and ending
516   --  with the name of the NamedElement itself.
517
518   overriding function Get_Owning_Template_Parameter
519    (Self : not null access constant UML_Port_Proxy)
520       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
521   --  Getter of ParameterableElement::owningTemplateParameter.
522   --
523   --  The formal template parameter that owns this element.
524
525   overriding procedure Set_Owning_Template_Parameter
526    (Self : not null access UML_Port_Proxy;
527     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
528   --  Setter of ParameterableElement::owningTemplateParameter.
529   --
530   --  The formal template parameter that owns this element.
531
532   overriding function Get_Template_Parameter
533    (Self : not null access constant UML_Port_Proxy)
534       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
535   --  Getter of ParameterableElement::templateParameter.
536   --
537   --  The template parameter that exposes this element as a formal parameter.
538
539   overriding procedure Set_Template_Parameter
540    (Self : not null access UML_Port_Proxy;
541     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
542   --  Setter of ParameterableElement::templateParameter.
543   --
544   --  The template parameter that exposes this element as a formal parameter.
545
546   overriding function Get_Deployed_Element
547    (Self : not null access constant UML_Port_Proxy)
548       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
549   --  Getter of DeploymentTarget::deployedElement.
550   --
551   --  The set of elements that are manifested in an Artifact that is involved
552   --  in Deployment to a DeploymentTarget.
553
554   overriding function Get_Deployment
555    (Self : not null access constant UML_Port_Proxy)
556       return AMF.UML.Deployments.Collections.Set_Of_UML_Deployment;
557   --  Getter of DeploymentTarget::deployment.
558   --
559   --  The set of Deployments for a DeploymentTarget.
560
561   overriding function Get_Featuring_Classifier
562    (Self : not null access constant UML_Port_Proxy)
563       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
564   --  Getter of Feature::featuringClassifier.
565   --
566   --  The Classifiers that have this Feature as a feature.
567
568   overriding function Get_Is_Static
569    (Self : not null access constant UML_Port_Proxy)
570       return Boolean;
571   --  Getter of Feature::isStatic.
572   --
573   --  Specifies whether this feature characterizes individual instances
574   --  classified by the classifier (false) or the classifier itself (true).
575
576   overriding procedure Set_Is_Static
577    (Self : not null access UML_Port_Proxy;
578     To   : Boolean);
579   --  Setter of Feature::isStatic.
580   --
581   --  Specifies whether this feature characterizes individual instances
582   --  classified by the classifier (false) or the classifier itself (true).
583
584   overriding function Get_Is_Leaf
585    (Self : not null access constant UML_Port_Proxy)
586       return Boolean;
587   --  Getter of RedefinableElement::isLeaf.
588   --
589   --  Indicates whether it is possible to further redefine a
590   --  RedefinableElement. If the value is true, then it is not possible to
591   --  further redefine the RedefinableElement. Note that this property is
592   --  preserved through package merge operations; that is, the capability to
593   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
594   --  the resulting RedefinableElement of a package merge operation where a
595   --  RedefinableElement with isLeaf=false is merged with a matching
596   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
597   --  will have isLeaf=false. Default value is false.
598
599   overriding procedure Set_Is_Leaf
600    (Self : not null access UML_Port_Proxy;
601     To   : Boolean);
602   --  Setter of RedefinableElement::isLeaf.
603   --
604   --  Indicates whether it is possible to further redefine a
605   --  RedefinableElement. If the value is true, then it is not possible to
606   --  further redefine the RedefinableElement. Note that this property is
607   --  preserved through package merge operations; that is, the capability to
608   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
609   --  the resulting RedefinableElement of a package merge operation where a
610   --  RedefinableElement with isLeaf=false is merged with a matching
611   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
612   --  will have isLeaf=false. Default value is false.
613
614   overriding function Get_Redefined_Element
615    (Self : not null access constant UML_Port_Proxy)
616       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element;
617   --  Getter of RedefinableElement::redefinedElement.
618   --
619   --  The redefinable element that is being redefined by this element.
620
621   overriding function Get_Redefinition_Context
622    (Self : not null access constant UML_Port_Proxy)
623       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
624   --  Getter of RedefinableElement::redefinitionContext.
625   --
626   --  References the contexts that this element may be redefined from.
627
628   overriding function Provided
629    (Self : not null access constant UML_Port_Proxy)
630       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface;
631   --  Operation Port::provided.
632   --
633   --  Missing derivation for Port::/provided : Interface
634
635   overriding function Required
636    (Self : not null access constant UML_Port_Proxy)
637       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface;
638   --  Operation Port::required.
639   --
640   --  Missing derivation for Port::/required : Interface
641
642   overriding function Default
643    (Self : not null access constant UML_Port_Proxy)
644       return AMF.Optional_String;
645   --  Operation Property::default.
646   --
647   --  Missing derivation for Property::/default : String
648
649   overriding function Is_Attribute
650    (Self : not null access constant UML_Port_Proxy;
651     P : AMF.UML.Properties.UML_Property_Access)
652       return Boolean;
653   --  Operation Property::isAttribute.
654   --
655   --  The query isAttribute() is true if the Property is defined as an
656   --  attribute of some classifier.
657
658   overriding function Is_Compatible_With
659    (Self : not null access constant UML_Port_Proxy;
660     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
661       return Boolean;
662   --  Operation Property::isCompatibleWith.
663   --
664   --  The query isCompatibleWith() determines if this parameterable element
665   --  is compatible with the specified parameterable element. By default
666   --  parameterable element P is compatible with parameterable element Q if
667   --  the kind of P is the same or a subtype as the kind of Q. In addition,
668   --  for properties, the type must be conformant with the type of the
669   --  specified parameterable element.
670
671   overriding function Is_Composite
672    (Self : not null access constant UML_Port_Proxy)
673       return Boolean;
674   --  Operation Property::isComposite.
675   --
676   --  The value of isComposite is true only if aggregation is composite.
677
678   overriding function Is_Consistent_With
679    (Self : not null access constant UML_Port_Proxy;
680     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
681       return Boolean;
682   --  Operation Property::isConsistentWith.
683   --
684   --  The query isConsistentWith() specifies, for any two Properties in a
685   --  context in which redefinition is possible, whether redefinition would
686   --  be logically consistent. A redefining property is consistent with a
687   --  redefined property if the type of the redefining property conforms to
688   --  the type of the redefined property, the multiplicity of the redefining
689   --  property (if specified) is contained in the multiplicity of the
690   --  redefined property.
691   --  The query isConsistentWith() specifies, for any two Properties in a
692   --  context in which redefinition is possible, whether redefinition would
693   --  be logically consistent. A redefining property is consistent with a
694   --  redefined property if the type of the redefining property conforms to
695   --  the type of the redefined property, and the multiplicity of the
696   --  redefining property (if specified) is contained in the multiplicity of
697   --  the redefined property.
698
699   overriding function Is_Navigable
700    (Self : not null access constant UML_Port_Proxy)
701       return Boolean;
702   --  Operation Property::isNavigable.
703   --
704   --  The query isNavigable() indicates whether it is possible to navigate
705   --  across the property.
706
707   overriding function Opposite
708    (Self : not null access constant UML_Port_Proxy)
709       return AMF.UML.Properties.UML_Property_Access;
710   --  Operation Property::opposite.
711   --
712   --  If this property is owned by a class, associated with a binary
713   --  association, and the other end of the association is also owned by a
714   --  class, then opposite gives the other end.
715
716   overriding function Subsetting_Context
717    (Self : not null access constant UML_Port_Proxy)
718       return AMF.UML.Types.Collections.Set_Of_UML_Type;
719   --  Operation Property::subsettingContext.
720   --
721   --  The query subsettingContext() gives the context for subsetting a
722   --  property. It consists, in the case of an attribute, of the
723   --  corresponding classifier, and in the case of an association end, all of
724   --  the classifiers at the other ends.
725
726   overriding function Ends
727    (Self : not null access constant UML_Port_Proxy)
728       return AMF.UML.Connector_Ends.Collections.Set_Of_UML_Connector_End;
729   --  Operation ConnectableElement::end.
730   --
731   --  Missing derivation for ConnectableElement::/end : ConnectorEnd
732
733   overriding function All_Owning_Packages
734    (Self : not null access constant UML_Port_Proxy)
735       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
736   --  Operation NamedElement::allOwningPackages.
737   --
738   --  The query allOwningPackages() returns all the directly or indirectly
739   --  owning packages.
740
741   overriding function Is_Distinguishable_From
742    (Self : not null access constant UML_Port_Proxy;
743     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
744     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
745       return Boolean;
746   --  Operation NamedElement::isDistinguishableFrom.
747   --
748   --  The query isDistinguishableFrom() determines whether two NamedElements
749   --  may logically co-exist within a Namespace. By default, two named
750   --  elements are distinguishable if (a) they have unrelated types or (b)
751   --  they have related types but different names.
752
753   overriding function Namespace
754    (Self : not null access constant UML_Port_Proxy)
755       return AMF.UML.Namespaces.UML_Namespace_Access;
756   --  Operation NamedElement::namespace.
757   --
758   --  Missing derivation for NamedElement::/namespace : Namespace
759
760   overriding function Is_Template_Parameter
761    (Self : not null access constant UML_Port_Proxy)
762       return Boolean;
763   --  Operation ParameterableElement::isTemplateParameter.
764   --
765   --  The query isTemplateParameter() determines if this parameterable
766   --  element is exposed as a formal template parameter.
767
768   overriding function Deployed_Element
769    (Self : not null access constant UML_Port_Proxy)
770       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
771   --  Operation DeploymentTarget::deployedElement.
772   --
773   --  Missing derivation for DeploymentTarget::/deployedElement :
774   --  PackageableElement
775
776   overriding function Compatible_With
777    (Self : not null access constant UML_Port_Proxy;
778     Other : AMF.UML.Multiplicity_Elements.UML_Multiplicity_Element_Access)
779       return Boolean;
780   --  Operation MultiplicityElement::compatibleWith.
781   --
782   --  The operation compatibleWith takes another multiplicity as input. It
783   --  checks if one multiplicity is compatible with another.
784
785   overriding function Includes_Cardinality
786    (Self : not null access constant UML_Port_Proxy;
787     C : Integer)
788       return Boolean;
789   --  Operation MultiplicityElement::includesCardinality.
790   --
791   --  The query includesCardinality() checks whether the specified
792   --  cardinality is valid for this multiplicity.
793
794   overriding function Includes_Multiplicity
795    (Self : not null access constant UML_Port_Proxy;
796     M : AMF.UML.Multiplicity_Elements.UML_Multiplicity_Element_Access)
797       return Boolean;
798   --  Operation MultiplicityElement::includesMultiplicity.
799   --
800   --  The query includesMultiplicity() checks whether this multiplicity
801   --  includes all the cardinalities allowed by the specified multiplicity.
802
803   overriding function Iss
804    (Self : not null access constant UML_Port_Proxy;
805     Lowerbound : Integer;
806     Upperbound : Integer)
807       return Boolean;
808   --  Operation MultiplicityElement::is.
809   --
810   --  The operation is determines if the upper and lower bound of the ranges
811   --  are the ones given.
812
813   overriding function Is_Redefinition_Context_Valid
814    (Self : not null access constant UML_Port_Proxy;
815     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
816       return Boolean;
817   --  Operation RedefinableElement::isRedefinitionContextValid.
818   --
819   --  The query isRedefinitionContextValid() specifies whether the
820   --  redefinition contexts of this RedefinableElement are properly related
821   --  to the redefinition contexts of the specified RedefinableElement to
822   --  allow this element to redefine the other. By default at least one of
823   --  the redefinition contexts of this element must be a specialization of
824   --  at least one of the redefinition contexts of the specified element.
825
826   overriding procedure Enter_Element
827    (Self    : not null access constant UML_Port_Proxy;
828     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
829     Control : in out AMF.Visitors.Traverse_Control);
830   --  Dispatch call to corresponding subprogram of visitor interface.
831
832   overriding procedure Leave_Element
833    (Self    : not null access constant UML_Port_Proxy;
834     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
835     Control : in out AMF.Visitors.Traverse_Control);
836   --  Dispatch call to corresponding subprogram of visitor interface.
837
838   overriding procedure Visit_Element
839    (Self     : not null access constant UML_Port_Proxy;
840     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
841     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
842     Control  : in out AMF.Visitors.Traverse_Control);
843   --  Dispatch call to corresponding subprogram of iterator interface.
844
845end AMF.Internals.UML_Ports;
846