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