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: 2802 $ $Date: 2012-04-06 21:45:28 +0400 (Fri, 06 Apr 2012) $
43------------------------------------------------------------------------------
44
45package AMF.UML is
46
47   pragma Preelaborate;
48
49   type UML_Aggregation_Kind is
50    (None,
51     Shared,
52     Composite);
53
54   type UML_Call_Concurrency_Kind is
55    (Sequential,
56     Guarded,
57     Concurrent);
58
59   type UML_Connector_Kind is
60    (Assembly,
61     Delegation);
62
63   type UML_Expansion_Kind is
64    (Parallel,
65     Iterative,
66     Stream);
67
68   type UML_Interaction_Operator_Kind is
69    (Alt_Operator,
70     Opt_Operator,
71     Break_Operator,
72     Par_Operator,
73     Loop_Operator,
74     Critical_Operator,
75     Neg_Operator,
76     Assert_Operator,
77     Strict_Operator,
78     Seq_Operator,
79     Ignore_Operator,
80     Consider_Operator);
81
82   type UML_Message_Kind is
83    (Complete,
84     Lost,
85     Found,
86     Unknown);
87
88   type UML_Message_Sort is
89    (Synch_Call,
90     Asynch_Call,
91     Asynch_Signal,
92     Create_Message,
93     Delete_Message,
94     Reply);
95
96   type UML_Object_Node_Ordering_Kind is
97    (Unordered,
98     Ordered,
99     LIFO,
100     FIFO);
101
102   type UML_Parameter_Direction_Kind is
103    (In_Parameter,
104     In_Out_Parameter,
105     Out_Parameter,
106     Return_Parameter);
107
108   type UML_Parameter_Effect_Kind is
109    (Create,
110     Read,
111     Update,
112     Delete);
113
114   type UML_Pseudostate_Kind is
115    (Initial_Pseudostate,
116     Deep_History_Pseudostate,
117     Shallow_History_Pseudostate,
118     Join_Pseudostate,
119     Fork_Pseudostate,
120     Junction_Pseudostate,
121     Choice_Pseudostate,
122     Entry_Point_Pseudostate,
123     Exit_Point_Pseudostate,
124     Terminate_Pseudostate);
125
126   type UML_Transition_Kind is
127    (External,
128     Internal,
129     Local);
130
131   type UML_Visibility_Kind is
132    (Public_Visibility,
133     Private_Visibility,
134     Protected_Visibility,
135     Package_Visibility);
136
137   type Optional_UML_Aggregation_Kind (Is_Empty : Boolean := True) is record
138      case Is_Empty is
139         when True =>
140            null;
141
142         when False =>
143            Value : UML_Aggregation_Kind;
144      end case;
145   end record;
146
147   type Optional_UML_Call_Concurrency_Kind (Is_Empty : Boolean := True) is record
148      case Is_Empty is
149         when True =>
150            null;
151
152         when False =>
153            Value : UML_Call_Concurrency_Kind;
154      end case;
155   end record;
156
157   type Optional_UML_Connector_Kind (Is_Empty : Boolean := True) is record
158      case Is_Empty is
159         when True =>
160            null;
161
162         when False =>
163            Value : UML_Connector_Kind;
164      end case;
165   end record;
166
167   type Optional_UML_Expansion_Kind (Is_Empty : Boolean := True) is record
168      case Is_Empty is
169         when True =>
170            null;
171
172         when False =>
173            Value : UML_Expansion_Kind;
174      end case;
175   end record;
176
177   type Optional_UML_Interaction_Operator_Kind (Is_Empty : Boolean := True) is record
178      case Is_Empty is
179         when True =>
180            null;
181
182         when False =>
183            Value : UML_Interaction_Operator_Kind;
184      end case;
185   end record;
186
187   type Optional_UML_Message_Kind (Is_Empty : Boolean := True) is record
188      case Is_Empty is
189         when True =>
190            null;
191
192         when False =>
193            Value : UML_Message_Kind;
194      end case;
195   end record;
196
197   type Optional_UML_Message_Sort (Is_Empty : Boolean := True) is record
198      case Is_Empty is
199         when True =>
200            null;
201
202         when False =>
203            Value : UML_Message_Sort;
204      end case;
205   end record;
206
207   type Optional_UML_Object_Node_Ordering_Kind (Is_Empty : Boolean := True) is record
208      case Is_Empty is
209         when True =>
210            null;
211
212         when False =>
213            Value : UML_Object_Node_Ordering_Kind;
214      end case;
215   end record;
216
217   type Optional_UML_Parameter_Direction_Kind (Is_Empty : Boolean := True) is record
218      case Is_Empty is
219         when True =>
220            null;
221
222         when False =>
223            Value : UML_Parameter_Direction_Kind;
224      end case;
225   end record;
226
227   type Optional_UML_Parameter_Effect_Kind (Is_Empty : Boolean := True) is record
228      case Is_Empty is
229         when True =>
230            null;
231
232         when False =>
233            Value : UML_Parameter_Effect_Kind;
234      end case;
235   end record;
236
237   type Optional_UML_Pseudostate_Kind (Is_Empty : Boolean := True) is record
238      case Is_Empty is
239         when True =>
240            null;
241
242         when False =>
243            Value : UML_Pseudostate_Kind;
244      end case;
245   end record;
246
247   type Optional_UML_Transition_Kind (Is_Empty : Boolean := True) is record
248      case Is_Empty is
249         when True =>
250            null;
251
252         when False =>
253            Value : UML_Transition_Kind;
254      end case;
255   end record;
256
257   type Optional_UML_Visibility_Kind (Is_Empty : Boolean := True) is record
258      case Is_Empty is
259         when True =>
260            null;
261
262         when False =>
263            Value : UML_Visibility_Kind;
264      end case;
265   end record;
266
267end AMF.UML;
268