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: 2714 $ $Date: 2012-03-24 10:29:08 +0400 (Sat, 24 Mar 2012) $
43------------------------------------------------------------------------------
44--  This file is generated, don't edit it.
45------------------------------------------------------------------------------
46--  Property represents a declared state of one or more instances in terms of
47--  a named relationship to a value or values. When a property is an attribute
48--  of a classifier, the value or values are related to the instance of the
49--  classifier by being held in slots of the instance. When a property is an
50--  association end, the value or values are related to the instance or
51--  instances at the other end(s) of the association. The range of valid
52--  values represented by the property can be controlled by setting the
53--  property's type.
54--
55--  A property has the capability of being a deployment target in a deployment
56--  relationship. This enables modeling the deployment to hierarchical nodes
57--  that have properties functioning as internal parts.
58--
59--  Property specializes ParameterableElement to specify that a property can
60--  be exposed as a formal template parameter, and provided as an actual
61--  parameter in a binding of a template.
62--
63--  A property represents a set of instances that are owned by a containing
64--  classifier instance.
65--
66--  A property is a structural feature of a classifier that characterizes
67--  instances of the classifier. A property related by ownedAttribute to a
68--  classifier (other than an association) represents an attribute and might
69--  also represent an association end. It relates an instance of the class to
70--  a value or set of values of the type of the attribute. A property related
71--  by memberEnd or its specializations to an association represents an end of
72--  the association. The type of the property is the type of the end of the
73--  association.
74------------------------------------------------------------------------------
75limited with AMF.UML.Associations;
76limited with AMF.UML.Classes;
77with AMF.UML.Connectable_Elements;
78limited with AMF.UML.Data_Types;
79with AMF.UML.Deployment_Targets;
80limited with AMF.UML.Interfaces;
81limited with AMF.UML.Parameterable_Elements;
82limited with AMF.UML.Properties.Collections;
83limited with AMF.UML.Redefinable_Elements;
84with AMF.UML.Structural_Features;
85limited with AMF.UML.Types.Collections;
86limited with AMF.UML.Value_Specifications;
87
88package AMF.UML.Properties is
89
90   pragma Preelaborate;
91
92   type UML_Property is limited interface
93     and AMF.UML.Connectable_Elements.UML_Connectable_Element
94     and AMF.UML.Deployment_Targets.UML_Deployment_Target
95     and AMF.UML.Structural_Features.UML_Structural_Feature;
96
97   type UML_Property_Access is
98     access all UML_Property'Class;
99   for UML_Property_Access'Storage_Size use 0;
100
101   not overriding function Get_Aggregation
102    (Self : not null access constant UML_Property)
103       return AMF.UML.UML_Aggregation_Kind is abstract;
104   --  Getter of Property::aggregation.
105   --
106   --  Specifies the kind of aggregation that applies to the Property.
107
108   not overriding procedure Set_Aggregation
109    (Self : not null access UML_Property;
110     To   : AMF.UML.UML_Aggregation_Kind) is abstract;
111   --  Setter of Property::aggregation.
112   --
113   --  Specifies the kind of aggregation that applies to the Property.
114
115   not overriding function Get_Association
116    (Self : not null access constant UML_Property)
117       return AMF.UML.Associations.UML_Association_Access is abstract;
118   --  Getter of Property::association.
119   --
120   --  References the association of which this property is a member, if any.
121
122   not overriding procedure Set_Association
123    (Self : not null access UML_Property;
124     To   : AMF.UML.Associations.UML_Association_Access) is abstract;
125   --  Setter of Property::association.
126   --
127   --  References the association of which this property is a member, if any.
128
129   not overriding function Get_Association_End
130    (Self : not null access constant UML_Property)
131       return AMF.UML.Properties.UML_Property_Access is abstract;
132   --  Getter of Property::associationEnd.
133   --
134   --  Designates the optional association end that owns a qualifier attribute.
135
136   not overriding procedure Set_Association_End
137    (Self : not null access UML_Property;
138     To   : AMF.UML.Properties.UML_Property_Access) is abstract;
139   --  Setter of Property::associationEnd.
140   --
141   --  Designates the optional association end that owns a qualifier attribute.
142
143   not overriding function Get_Class
144    (Self : not null access constant UML_Property)
145       return AMF.UML.Classes.UML_Class_Access is abstract;
146   --  Getter of Property::class.
147   --
148   --  References the Class that owns the Property.
149   --  References the Class that owns the Property.
150
151   not overriding procedure Set_Class
152    (Self : not null access UML_Property;
153     To   : AMF.UML.Classes.UML_Class_Access) is abstract;
154   --  Setter of Property::class.
155   --
156   --  References the Class that owns the Property.
157   --  References the Class that owns the Property.
158
159   not overriding function Get_Datatype
160    (Self : not null access constant UML_Property)
161       return AMF.UML.Data_Types.UML_Data_Type_Access is abstract;
162   --  Getter of Property::datatype.
163   --
164   --  The DataType that owns this Property.
165
166   not overriding procedure Set_Datatype
167    (Self : not null access UML_Property;
168     To   : AMF.UML.Data_Types.UML_Data_Type_Access) is abstract;
169   --  Setter of Property::datatype.
170   --
171   --  The DataType that owns this Property.
172
173   not overriding function Get_Default
174    (Self : not null access constant UML_Property)
175       return AMF.Optional_String is abstract;
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   not overriding procedure Set_Default
184    (Self : not null access UML_Property;
185     To   : AMF.Optional_String) is abstract;
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   not overriding function Get_Default_Value
194    (Self : not null access constant UML_Property)
195       return AMF.UML.Value_Specifications.UML_Value_Specification_Access is abstract;
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   not overriding procedure Set_Default_Value
202    (Self : not null access UML_Property;
203     To   : AMF.UML.Value_Specifications.UML_Value_Specification_Access) is abstract;
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   not overriding function Get_Interface
210    (Self : not null access constant UML_Property)
211       return AMF.UML.Interfaces.UML_Interface_Access is abstract;
212   --  Getter of Property::interface.
213   --
214   --  References the Interface that owns the Property
215
216   not overriding procedure Set_Interface
217    (Self : not null access UML_Property;
218     To   : AMF.UML.Interfaces.UML_Interface_Access) is abstract;
219   --  Setter of Property::interface.
220   --
221   --  References the Interface that owns the Property
222
223   not overriding function Get_Is_Composite
224    (Self : not null access constant UML_Property)
225       return Boolean is abstract;
226   --  Getter of Property::isComposite.
227   --
228   --  If isComposite is true, the object containing the attribute is a
229   --  container for the object or value contained in the attribute.
230   --  This is a derived value, indicating whether the aggregation of the
231   --  Property is composite or not.
232
233   not overriding procedure Set_Is_Composite
234    (Self : not null access UML_Property;
235     To   : Boolean) is abstract;
236   --  Setter of Property::isComposite.
237   --
238   --  If isComposite is true, the object containing the attribute is a
239   --  container for the object or value contained in the attribute.
240   --  This is a derived value, indicating whether the aggregation of the
241   --  Property is composite or not.
242
243   not overriding function Get_Is_Derived
244    (Self : not null access constant UML_Property)
245       return Boolean is abstract;
246   --  Getter of Property::isDerived.
247   --
248   --  Specifies whether the Property is derived, i.e., whether its value or
249   --  values can be computed from other information.
250   --  If isDerived is true, the value of the attribute is derived from
251   --  information elsewhere.
252
253   not overriding procedure Set_Is_Derived
254    (Self : not null access UML_Property;
255     To   : Boolean) is abstract;
256   --  Setter of Property::isDerived.
257   --
258   --  Specifies whether the Property is derived, i.e., whether its value or
259   --  values can be computed from other information.
260   --  If isDerived is true, the value of the attribute is derived from
261   --  information elsewhere.
262
263   not overriding function Get_Is_Derived_Union
264    (Self : not null access constant UML_Property)
265       return Boolean is abstract;
266   --  Getter of Property::isDerivedUnion.
267   --
268   --  Specifies whether the property is derived as the union of all of the
269   --  properties that are constrained to subset it.
270
271   not overriding procedure Set_Is_Derived_Union
272    (Self : not null access UML_Property;
273     To   : Boolean) is abstract;
274   --  Setter of Property::isDerivedUnion.
275   --
276   --  Specifies whether the property is derived as the union of all of the
277   --  properties that are constrained to subset it.
278
279   not overriding function Get_Is_ID
280    (Self : not null access constant UML_Property)
281       return Boolean is abstract;
282   --  Getter of Property::isID.
283   --
284   --  True indicates this property can be used to uniquely identify an
285   --  instance of the containing Class.
286
287   not overriding procedure Set_Is_ID
288    (Self : not null access UML_Property;
289     To   : Boolean) is abstract;
290   --  Setter of Property::isID.
291   --
292   --  True indicates this property can be used to uniquely identify an
293   --  instance of the containing Class.
294
295   overriding function Get_Is_Read_Only
296    (Self : not null access constant UML_Property)
297       return Boolean is abstract;
298   --  Getter of Property::isReadOnly.
299   --
300   --  If isReadOnly is true, the attribute may not be written to after
301   --  initialization.
302   --  If true, the attribute may only be read, and not written.
303
304   overriding procedure Set_Is_Read_Only
305    (Self : not null access UML_Property;
306     To   : Boolean) is abstract;
307   --  Setter of Property::isReadOnly.
308   --
309   --  If isReadOnly is true, the attribute may not be written to after
310   --  initialization.
311   --  If true, the attribute may only be read, and not written.
312
313   not overriding function Get_Opposite
314    (Self : not null access constant UML_Property)
315       return AMF.UML.Properties.UML_Property_Access is abstract;
316   --  Getter of Property::opposite.
317   --
318   --  In the case where the property is one navigable end of a binary
319   --  association with both ends navigable, this gives the other end.
320
321   not overriding procedure Set_Opposite
322    (Self : not null access UML_Property;
323     To   : AMF.UML.Properties.UML_Property_Access) is abstract;
324   --  Setter of Property::opposite.
325   --
326   --  In the case where the property is one navigable end of a binary
327   --  association with both ends navigable, this gives the other end.
328
329   not overriding function Get_Owning_Association
330    (Self : not null access constant UML_Property)
331       return AMF.UML.Associations.UML_Association_Access is abstract;
332   --  Getter of Property::owningAssociation.
333   --
334   --  References the owning association of this property, if any.
335
336   not overriding procedure Set_Owning_Association
337    (Self : not null access UML_Property;
338     To   : AMF.UML.Associations.UML_Association_Access) is abstract;
339   --  Setter of Property::owningAssociation.
340   --
341   --  References the owning association of this property, if any.
342
343   not overriding function Get_Qualifier
344    (Self : not null access constant UML_Property)
345       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property is abstract;
346   --  Getter of Property::qualifier.
347   --
348   --  An optional list of ordered qualifier attributes for the end. If the
349   --  list is empty, then the Association is not qualified.
350
351   not overriding function Get_Redefined_Property
352    (Self : not null access constant UML_Property)
353       return AMF.UML.Properties.Collections.Set_Of_UML_Property is abstract;
354   --  Getter of Property::redefinedProperty.
355   --
356   --  References the properties that are redefined by this property.
357
358   not overriding function Get_Subsetted_Property
359    (Self : not null access constant UML_Property)
360       return AMF.UML.Properties.Collections.Set_Of_UML_Property is abstract;
361   --  Getter of Property::subsettedProperty.
362   --
363   --  References the properties of which this property is constrained to be a
364   --  subset.
365
366   not overriding function Default
367    (Self : not null access constant UML_Property)
368       return AMF.Optional_String is abstract;
369   --  Operation Property::default.
370   --
371   --  Missing derivation for Property::/default : String
372
373   not overriding function Is_Attribute
374    (Self : not null access constant UML_Property;
375     P : AMF.UML.Properties.UML_Property_Access)
376       return Boolean is abstract;
377   --  Operation Property::isAttribute.
378   --
379   --  The query isAttribute() is true if the Property is defined as an
380   --  attribute of some classifier.
381
382   overriding function Is_Compatible_With
383    (Self : not null access constant UML_Property;
384     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
385       return Boolean is abstract;
386   --  Operation Property::isCompatibleWith.
387   --
388   --  The query isCompatibleWith() determines if this parameterable element
389   --  is compatible with the specified parameterable element. By default
390   --  parameterable element P is compatible with parameterable element Q if
391   --  the kind of P is the same or a subtype as the kind of Q. In addition,
392   --  for properties, the type must be conformant with the type of the
393   --  specified parameterable element.
394
395   not overriding function Is_Composite
396    (Self : not null access constant UML_Property)
397       return Boolean is abstract;
398   --  Operation Property::isComposite.
399   --
400   --  The value of isComposite is true only if aggregation is composite.
401
402   overriding function Is_Consistent_With
403    (Self : not null access constant UML_Property;
404     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
405       return Boolean is abstract;
406   --  Operation Property::isConsistentWith.
407   --
408   --  The query isConsistentWith() specifies, for any two Properties in a
409   --  context in which redefinition is possible, whether redefinition would
410   --  be logically consistent. A redefining property is consistent with a
411   --  redefined property if the type of the redefining property conforms to
412   --  the type of the redefined property, the multiplicity of the redefining
413   --  property (if specified) is contained in the multiplicity of the
414   --  redefined property.
415   --  The query isConsistentWith() specifies, for any two Properties in a
416   --  context in which redefinition is possible, whether redefinition would
417   --  be logically consistent. A redefining property is consistent with a
418   --  redefined property if the type of the redefining property conforms to
419   --  the type of the redefined property, and the multiplicity of the
420   --  redefining property (if specified) is contained in the multiplicity of
421   --  the redefined property.
422
423   not overriding function Is_Navigable
424    (Self : not null access constant UML_Property)
425       return Boolean is abstract;
426   --  Operation Property::isNavigable.
427   --
428   --  The query isNavigable() indicates whether it is possible to navigate
429   --  across the property.
430
431   not overriding function Opposite
432    (Self : not null access constant UML_Property)
433       return AMF.UML.Properties.UML_Property_Access is abstract;
434   --  Operation Property::opposite.
435   --
436   --  If this property is owned by a class, associated with a binary
437   --  association, and the other end of the association is also owned by a
438   --  class, then opposite gives the other end.
439
440   not overriding function Subsetting_Context
441    (Self : not null access constant UML_Property)
442       return AMF.UML.Types.Collections.Set_Of_UML_Type is abstract;
443   --  Operation Property::subsettingContext.
444   --
445   --  The query subsettingContext() gives the context for subsetting a
446   --  property. It consists, in the case of an attribute, of the
447   --  corresponding classifier, and in the case of an association end, all of
448   --  the classifiers at the other ends.
449
450end AMF.UML.Properties;
451