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--  Operation specializes TemplateableElement in order to support
47--  specification of template operations and bound operations. Operation
48--  specializes ParameterableElement to specify that an operation can be
49--  exposed as a formal template parameter, and provided as an actual
50--  parameter in a binding of a template.
51--
52--  An operation may invoke both the execution of method behaviors as well as
53--  other behavioral responses.
54--
55--  An operation is a behavioral feature of a classifier that specifies the
56--  name, type, parameters, and constraints for invoking an associated
57--  behavior.
58------------------------------------------------------------------------------
59with AMF.UML.Behavioral_Features;
60limited with AMF.UML.Classes;
61limited with AMF.UML.Constraints.Collections;
62limited with AMF.UML.Data_Types;
63limited with AMF.UML.Interfaces;
64limited with AMF.UML.Operation_Template_Parameters;
65limited with AMF.UML.Operations.Collections;
66with AMF.UML.Parameterable_Elements;
67limited with AMF.UML.Parameters.Collections;
68limited with AMF.UML.Redefinable_Elements;
69with AMF.UML.Templateable_Elements;
70limited with AMF.UML.Types.Collections;
71
72package AMF.UML.Operations is
73
74   pragma Preelaborate;
75
76   type UML_Operation is limited interface
77     and AMF.UML.Behavioral_Features.UML_Behavioral_Feature
78     and AMF.UML.Templateable_Elements.UML_Templateable_Element
79     and AMF.UML.Parameterable_Elements.UML_Parameterable_Element;
80
81   type UML_Operation_Access is
82     access all UML_Operation'Class;
83   for UML_Operation_Access'Storage_Size use 0;
84
85   not overriding function Get_Body_Condition
86    (Self : not null access constant UML_Operation)
87       return AMF.UML.Constraints.UML_Constraint_Access is abstract;
88   --  Getter of Operation::bodyCondition.
89   --
90   --  An optional Constraint on the result values of an invocation of this
91   --  Operation.
92
93   not overriding procedure Set_Body_Condition
94    (Self : not null access UML_Operation;
95     To   : AMF.UML.Constraints.UML_Constraint_Access) is abstract;
96   --  Setter of Operation::bodyCondition.
97   --
98   --  An optional Constraint on the result values of an invocation of this
99   --  Operation.
100
101   not overriding function Get_Class
102    (Self : not null access constant UML_Operation)
103       return AMF.UML.Classes.UML_Class_Access is abstract;
104   --  Getter of Operation::class.
105   --
106   --  The class that owns the operation.
107
108   not overriding procedure Set_Class
109    (Self : not null access UML_Operation;
110     To   : AMF.UML.Classes.UML_Class_Access) is abstract;
111   --  Setter of Operation::class.
112   --
113   --  The class that owns the operation.
114
115   not overriding function Get_Datatype
116    (Self : not null access constant UML_Operation)
117       return AMF.UML.Data_Types.UML_Data_Type_Access is abstract;
118   --  Getter of Operation::datatype.
119   --
120   --  The DataType that owns this Operation.
121
122   not overriding procedure Set_Datatype
123    (Self : not null access UML_Operation;
124     To   : AMF.UML.Data_Types.UML_Data_Type_Access) is abstract;
125   --  Setter of Operation::datatype.
126   --
127   --  The DataType that owns this Operation.
128
129   not overriding function Get_Interface
130    (Self : not null access constant UML_Operation)
131       return AMF.UML.Interfaces.UML_Interface_Access is abstract;
132   --  Getter of Operation::interface.
133   --
134   --  The Interface that owns this Operation.
135
136   not overriding procedure Set_Interface
137    (Self : not null access UML_Operation;
138     To   : AMF.UML.Interfaces.UML_Interface_Access) is abstract;
139   --  Setter of Operation::interface.
140   --
141   --  The Interface that owns this Operation.
142
143   not overriding function Get_Is_Ordered
144    (Self : not null access constant UML_Operation)
145       return Boolean is abstract;
146   --  Getter of Operation::isOrdered.
147   --
148   --  This information is derived from the return result for this Operation.
149   --  Specifies whether the return parameter is ordered or not, if present.
150
151   not overriding function Get_Is_Query
152    (Self : not null access constant UML_Operation)
153       return Boolean is abstract;
154   --  Getter of Operation::isQuery.
155   --
156   --  Specifies whether an execution of the BehavioralFeature leaves the
157   --  state of the system unchanged (isQuery=true) or whether side effects
158   --  may occur (isQuery=false).
159
160   not overriding procedure Set_Is_Query
161    (Self : not null access UML_Operation;
162     To   : Boolean) is abstract;
163   --  Setter of Operation::isQuery.
164   --
165   --  Specifies whether an execution of the BehavioralFeature leaves the
166   --  state of the system unchanged (isQuery=true) or whether side effects
167   --  may occur (isQuery=false).
168
169   not overriding function Get_Is_Unique
170    (Self : not null access constant UML_Operation)
171       return Boolean is abstract;
172   --  Getter of Operation::isUnique.
173   --
174   --  This information is derived from the return result for this Operation.
175   --  Specifies whether the return parameter is unique or not, if present.
176
177   not overriding function Get_Lower
178    (Self : not null access constant UML_Operation)
179       return AMF.Optional_Integer is abstract;
180   --  Getter of Operation::lower.
181   --
182   --  Specifies the lower multiplicity of the return parameter, if present.
183   --  This information is derived from the return result for this Operation.
184
185   overriding function Get_Owned_Parameter
186    (Self : not null access constant UML_Operation)
187       return AMF.UML.Parameters.Collections.Ordered_Set_Of_UML_Parameter is abstract;
188   --  Getter of Operation::ownedParameter.
189   --
190   --  Specifies the ordered set of formal parameters of this
191   --  BehavioralFeature.
192   --  Specifies the parameters owned by this Operation.
193
194   not overriding function Get_Postcondition
195    (Self : not null access constant UML_Operation)
196       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint is abstract;
197   --  Getter of Operation::postcondition.
198   --
199   --  An optional set of Constraints specifying the state of the system when
200   --  the Operation is completed.
201
202   not overriding function Get_Precondition
203    (Self : not null access constant UML_Operation)
204       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint is abstract;
205   --  Getter of Operation::precondition.
206   --
207   --  An optional set of Constraints on the state of the system when the
208   --  Operation is invoked.
209
210   overriding function Get_Raised_Exception
211    (Self : not null access constant UML_Operation)
212       return AMF.UML.Types.Collections.Set_Of_UML_Type is abstract;
213   --  Getter of Operation::raisedException.
214   --
215   --  References the Types representing exceptions that may be raised during
216   --  an invocation of this operation.
217
218   not overriding function Get_Redefined_Operation
219    (Self : not null access constant UML_Operation)
220       return AMF.UML.Operations.Collections.Set_Of_UML_Operation is abstract;
221   --  Getter of Operation::redefinedOperation.
222   --
223   --  References the Operations that are redefined by this Operation.
224
225   not overriding function Get_Template_Parameter
226    (Self : not null access constant UML_Operation)
227       return AMF.UML.Operation_Template_Parameters.UML_Operation_Template_Parameter_Access is abstract;
228   --  Getter of Operation::templateParameter.
229   --
230   --  The template parameter that exposes this element as a formal parameter.
231
232   not overriding procedure Set_Template_Parameter
233    (Self : not null access UML_Operation;
234     To   : AMF.UML.Operation_Template_Parameters.UML_Operation_Template_Parameter_Access) is abstract;
235   --  Setter of Operation::templateParameter.
236   --
237   --  The template parameter that exposes this element as a formal parameter.
238
239   not overriding function Get_Type
240    (Self : not null access constant UML_Operation)
241       return AMF.UML.Types.UML_Type_Access is abstract;
242   --  Getter of Operation::type.
243   --
244   --  This information is derived from the return result for this Operation.
245   --  Specifies the return result of the operation, if present.
246
247   not overriding function Get_Upper
248    (Self : not null access constant UML_Operation)
249       return AMF.Optional_Unlimited_Natural is abstract;
250   --  Getter of Operation::upper.
251   --
252   --  Specifies the upper multiplicity of the return parameter, if present.
253   --  This information is derived from the return result for this Operation.
254
255   overriding function Is_Consistent_With
256    (Self : not null access constant UML_Operation;
257     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
258       return Boolean is abstract;
259   --  Operation Operation::isConsistentWith.
260   --
261   --  A redefining operation is consistent with a redefined operation if it
262   --  has the same number of owned parameters, and the type of each owned
263   --  parameter conforms to the type of the corresponding redefined parameter.
264   --  The query isConsistentWith() specifies, for any two Operations in a
265   --  context in which redefinition is possible, whether redefinition would
266   --  be consistent in the sense of maintaining type covariance. Other senses
267   --  of consistency may be required, for example to determine consistency in
268   --  the sense of contravariance. Users may define alternative queries under
269   --  names different from 'isConsistentWith()', as for example, users may
270   --  define a query named 'isContravariantWith()'.
271
272   not overriding function Is_Ordered
273    (Self : not null access constant UML_Operation)
274       return Boolean is abstract;
275   --  Operation Operation::isOrdered.
276   --
277   --  If this operation has a return parameter, isOrdered equals the value of
278   --  isOrdered for that parameter. Otherwise isOrdered is false.
279
280   not overriding function Is_Unique
281    (Self : not null access constant UML_Operation)
282       return Boolean is abstract;
283   --  Operation Operation::isUnique.
284   --
285   --  If this operation has a return parameter, isUnique equals the value of
286   --  isUnique for that parameter. Otherwise isUnique is true.
287
288   not overriding function Lower
289    (Self : not null access constant UML_Operation)
290       return Integer is abstract;
291   --  Operation Operation::lower.
292   --
293   --  If this operation has a return parameter, lower equals the value of
294   --  lower for that parameter. Otherwise lower is not defined.
295
296   not overriding function Return_Result
297    (Self : not null access constant UML_Operation)
298       return AMF.UML.Parameters.Collections.Set_Of_UML_Parameter is abstract;
299   --  Operation Operation::returnResult.
300   --
301   --  The query returnResult() returns the set containing the return
302   --  parameter of the Operation if one exists, otherwise, it returns an
303   --  empty set
304
305   not overriding function Types
306    (Self : not null access constant UML_Operation)
307       return AMF.UML.Types.UML_Type_Access is abstract;
308   --  Operation Operation::type.
309   --
310   --  If this operation has a return parameter, type equals the value of type
311   --  for that parameter. Otherwise type is not defined.
312
313   not overriding function Upper
314    (Self : not null access constant UML_Operation)
315       return AMF.Unlimited_Natural is abstract;
316   --  Operation Operation::upper.
317   --
318   --  If this operation has a return parameter, upper equals the value of
319   --  upper for that parameter. Otherwise upper is not defined.
320
321end AMF.UML.Operations;
322