1package Case_Optimization_Pkg1 is
2
3   type Element is null record;
4
5   type Internal_Element_Kinds is
6     (Not_An_Element,
7      An_All_Calls_Remote_Pragma,
8      An_Asynchronous_Pragma,
9      An_Atomic_Pragma,
10      An_Atomic_Components_Pragma,
11      An_Attach_Handler_Pragma,
12      A_Controlled_Pragma,
13      A_Convention_Pragma,
14      A_Discard_Names_Pragma,
15      An_Elaborate_Pragma,
16      An_Elaborate_All_Pragma,
17      An_Elaborate_Body_Pragma,
18      An_Export_Pragma,
19      An_Import_Pragma,
20      An_Inline_Pragma,
21      An_Inspection_Point_Pragma,
22      An_Interrupt_Handler_Pragma,
23      An_Interrupt_Priority_Pragma,
24      A_Linker_Options_Pragma,
25      A_List_Pragma,
26      A_Locking_Policy_Pragma,
27      A_Normalize_Scalars_Pragma,
28      An_Optimize_Pragma,
29      A_Pack_Pragma,
30      A_Page_Pragma,
31      A_Preelaborate_Pragma,
32      A_Priority_Pragma,
33      A_Pure_Pragma,
34      A_Queuing_Policy_Pragma,
35      A_Remote_Call_Interface_Pragma,
36      A_Remote_Types_Pragma,
37      A_Restrictions_Pragma,
38      A_Reviewable_Pragma,
39      A_Shared_Passive_Pragma,
40      A_Storage_Size_Pragma,
41      A_Suppress_Pragma,
42      A_Task_Dispatching_Policy_Pragma,
43      A_Volatile_Pragma,
44      A_Volatile_Components_Pragma,
45      An_Assert_Pragma,
46      An_Assertion_Policy_Pragma,
47      A_Detect_Blocking_Pragma,
48      A_No_Return_Pragma,
49      A_Partition_Elaboration_Policy_Pragma,
50      A_Preelaborable_Initialization_Pragma,
51      A_Priority_Specific_Dispatching_Pragma,
52      A_Profile_Pragma,
53      A_Relative_Deadline_Pragma,
54      An_Unchecked_Union_Pragma,
55      An_Unsuppress_Pragma,
56      An_Implementation_Defined_Pragma,
57      An_Unknown_Pragma,
58      A_Defining_Identifier,
59      A_Defining_Character_Literal,
60      A_Defining_Enumeration_Literal,
61      A_Defining_And_Operator,
62      A_Defining_Or_Operator,
63      A_Defining_Xor_Operator,
64      A_Defining_Equal_Operator,
65      A_Defining_Not_Equal_Operator,
66      A_Defining_Less_Than_Operator,
67      A_Defining_Less_Than_Or_Equal_Operator,
68      A_Defining_Greater_Than_Operator,
69      A_Defining_Greater_Than_Or_Equal_Operator,
70      A_Defining_Plus_Operator,
71      A_Defining_Minus_Operator,
72      A_Defining_Concatenate_Operator,
73      A_Defining_Unary_Plus_Operator,
74      A_Defining_Unary_Minus_Operator,
75      A_Defining_Multiply_Operator,
76      A_Defining_Divide_Operator,
77      A_Defining_Mod_Operator,
78      A_Defining_Rem_Operator,
79      A_Defining_Exponentiate_Operator,
80      A_Defining_Abs_Operator,
81      A_Defining_Not_Operator,
82      A_Defining_Expanded_Name,
83      An_Ordinary_Type_Declaration,
84      A_Task_Type_Declaration,
85      A_Protected_Type_Declaration,
86      An_Incomplete_Type_Declaration,
87      A_Tagged_Incomplete_Type_Declaration,
88      A_Private_Type_Declaration,
89      A_Private_Extension_Declaration,
90      A_Subtype_Declaration,
91      A_Variable_Declaration,
92      A_Constant_Declaration,
93      A_Deferred_Constant_Declaration,
94      A_Single_Task_Declaration,
95      A_Single_Protected_Declaration,
96      An_Integer_Number_Declaration,
97      A_Real_Number_Declaration,
98      An_Enumeration_Literal_Specification,
99      A_Discriminant_Specification,
100      A_Component_Declaration,
101      A_Loop_Parameter_Specification,
102      A_Procedure_Declaration,
103      A_Function_Declaration,
104      A_Parameter_Specification,
105      A_Procedure_Body_Declaration,
106      A_Function_Body_Declaration,
107      A_Return_Object_Declaration,
108      A_Null_Procedure_Declaration,
109      A_Package_Declaration,
110      A_Package_Body_Declaration,
111      An_Object_Renaming_Declaration,
112      An_Exception_Renaming_Declaration,
113      A_Package_Renaming_Declaration,
114      A_Procedure_Renaming_Declaration,
115      A_Function_Renaming_Declaration,
116      A_Generic_Package_Renaming_Declaration,
117      A_Generic_Procedure_Renaming_Declaration,
118      A_Generic_Function_Renaming_Declaration,
119      A_Task_Body_Declaration,
120      A_Protected_Body_Declaration,
121      An_Entry_Declaration,
122      An_Entry_Body_Declaration,
123      An_Entry_Index_Specification,
124      A_Procedure_Body_Stub,
125      A_Function_Body_Stub,
126      A_Package_Body_Stub,
127      A_Task_Body_Stub,
128      A_Protected_Body_Stub,
129      An_Exception_Declaration,
130      A_Choice_Parameter_Specification,
131      A_Generic_Procedure_Declaration,
132      A_Generic_Function_Declaration,
133      A_Generic_Package_Declaration,
134      A_Package_Instantiation,
135      A_Procedure_Instantiation,
136      A_Function_Instantiation,
137      A_Formal_Object_Declaration,
138      A_Formal_Type_Declaration,
139      A_Formal_Procedure_Declaration,
140      A_Formal_Function_Declaration,
141      A_Formal_Package_Declaration,
142      A_Formal_Package_Declaration_With_Box,
143      A_Derived_Type_Definition,
144      A_Derived_Record_Extension_Definition,
145      An_Enumeration_Type_Definition,
146      A_Signed_Integer_Type_Definition,
147      A_Modular_Type_Definition,
148      A_Root_Integer_Definition,
149      A_Root_Real_Definition,
150      A_Universal_Integer_Definition,
151      A_Universal_Real_Definition,
152      A_Universal_Fixed_Definition,
153      A_Floating_Point_Definition,
154      An_Ordinary_Fixed_Point_Definition,
155      A_Decimal_Fixed_Point_Definition,
156      An_Unconstrained_Array_Definition,
157      A_Constrained_Array_Definition,
158      A_Record_Type_Definition,
159      A_Tagged_Record_Type_Definition,
160      An_Ordinary_Interface,
161      A_Limited_Interface,
162      A_Task_Interface,
163      A_Protected_Interface,
164      A_Synchronized_Interface,
165      A_Pool_Specific_Access_To_Variable,
166      An_Access_To_Variable,
167      An_Access_To_Constant,
168      An_Access_To_Procedure,
169      An_Access_To_Protected_Procedure,
170      An_Access_To_Function,
171      An_Access_To_Protected_Function,
172      A_Subtype_Indication,
173      A_Range_Attribute_Reference,
174      A_Simple_Expression_Range,
175      A_Digits_Constraint,
176      A_Delta_Constraint,
177      An_Index_Constraint,
178      A_Discriminant_Constraint,
179      A_Component_Definition,
180      A_Discrete_Subtype_Indication_As_Subtype_Definition,
181      A_Discrete_Range_Attribute_Reference_As_Subtype_Definition,
182      A_Discrete_Simple_Expression_Range_As_Subtype_Definition,
183      A_Discrete_Subtype_Indication,
184      A_Discrete_Range_Attribute_Reference,
185      A_Discrete_Simple_Expression_Range,
186      An_Unknown_Discriminant_Part,
187      A_Known_Discriminant_Part,
188      A_Record_Definition,
189      A_Null_Record_Definition,
190      A_Null_Component,
191      A_Variant_Part,
192      A_Variant,
193      An_Others_Choice,
194      An_Anonymous_Access_To_Variable,
195      An_Anonymous_Access_To_Constant,
196      An_Anonymous_Access_To_Procedure,
197      An_Anonymous_Access_To_Protected_Procedure,
198      An_Anonymous_Access_To_Function,
199      An_Anonymous_Access_To_Protected_Function,
200      A_Private_Type_Definition,
201      A_Tagged_Private_Type_Definition,
202      A_Private_Extension_Definition,
203      A_Task_Definition,
204      A_Protected_Definition,
205      A_Formal_Private_Type_Definition,
206      A_Formal_Tagged_Private_Type_Definition,
207      A_Formal_Derived_Type_Definition,
208      A_Formal_Discrete_Type_Definition,
209      A_Formal_Signed_Integer_Type_Definition,
210      A_Formal_Modular_Type_Definition,
211      A_Formal_Floating_Point_Definition,
212      A_Formal_Ordinary_Fixed_Point_Definition,
213      A_Formal_Decimal_Fixed_Point_Definition,
214      A_Formal_Ordinary_Interface,
215      A_Formal_Limited_Interface,
216      A_Formal_Task_Interface,
217      A_Formal_Protected_Interface,
218      A_Formal_Synchronized_Interface,
219      A_Formal_Unconstrained_Array_Definition,
220      A_Formal_Constrained_Array_Definition,
221      A_Formal_Pool_Specific_Access_To_Variable,
222      A_Formal_Access_To_Variable,
223      A_Formal_Access_To_Constant,
224      A_Formal_Access_To_Procedure,
225      A_Formal_Access_To_Protected_Procedure,
226      A_Formal_Access_To_Function,
227      A_Formal_Access_To_Protected_Function,
228      An_Integer_Literal,
229      A_Real_Literal,
230      A_String_Literal,
231      An_Identifier,
232      An_And_Operator,
233      An_Or_Operator,
234      An_Xor_Operator,
235      An_Equal_Operator,
236      A_Not_Equal_Operator,
237      A_Less_Than_Operator,
238      A_Less_Than_Or_Equal_Operator,
239      A_Greater_Than_Operator,
240      A_Greater_Than_Or_Equal_Operator,
241      A_Plus_Operator,
242      A_Minus_Operator,
243      A_Concatenate_Operator,
244      A_Unary_Plus_Operator,
245      A_Unary_Minus_Operator,
246      A_Multiply_Operator,
247      A_Divide_Operator,
248      A_Mod_Operator,
249      A_Rem_Operator,
250      An_Exponentiate_Operator,
251      An_Abs_Operator,
252      A_Not_Operator,
253      A_Character_Literal,
254      An_Enumeration_Literal,
255      An_Explicit_Dereference,
256      A_Function_Call,
257      An_Indexed_Component,
258      A_Slice,
259      A_Selected_Component,
260      An_Access_Attribute,
261      An_Address_Attribute,
262      An_Adjacent_Attribute,
263      An_Aft_Attribute,
264      An_Alignment_Attribute,
265      A_Base_Attribute,
266      A_Bit_Order_Attribute,
267      A_Body_Version_Attribute,
268      A_Callable_Attribute,
269      A_Caller_Attribute,
270      A_Ceiling_Attribute,
271      A_Class_Attribute,
272      A_Component_Size_Attribute,
273      A_Compose_Attribute,
274      A_Constrained_Attribute,
275      A_Copy_Sign_Attribute,
276      A_Count_Attribute,
277      A_Definite_Attribute,
278      A_Delta_Attribute,
279      A_Denorm_Attribute,
280      A_Digits_Attribute,
281      An_Exponent_Attribute,
282      An_External_Tag_Attribute,
283      A_First_Attribute,
284      A_First_Bit_Attribute,
285      A_Floor_Attribute,
286      A_Fore_Attribute,
287      A_Fraction_Attribute,
288      An_Identity_Attribute,
289      An_Image_Attribute,
290      An_Input_Attribute,
291      A_Last_Attribute,
292      A_Last_Bit_Attribute,
293      A_Leading_Part_Attribute,
294      A_Length_Attribute,
295      A_Machine_Attribute,
296      A_Machine_Emax_Attribute,
297      A_Machine_Emin_Attribute,
298      A_Machine_Mantissa_Attribute,
299      A_Machine_Overflows_Attribute,
300      A_Machine_Radix_Attribute,
301      A_Machine_Rounds_Attribute,
302      A_Max_Attribute,
303      A_Max_Size_In_Storage_Elements_Attribute,
304      A_Min_Attribute,
305      A_Model_Attribute,
306      A_Model_Emin_Attribute,
307      A_Model_Epsilon_Attribute,
308      A_Model_Mantissa_Attribute,
309      A_Model_Small_Attribute,
310      A_Modulus_Attribute,
311      An_Output_Attribute,
312      A_Partition_ID_Attribute,
313      A_Pos_Attribute,
314      A_Position_Attribute,
315      A_Pred_Attribute,
316      A_Range_Attribute,
317      A_Read_Attribute,
318      A_Remainder_Attribute,
319      A_Round_Attribute,
320      A_Rounding_Attribute,
321      A_Safe_First_Attribute,
322      A_Safe_Last_Attribute,
323      A_Scale_Attribute,
324      A_Scaling_Attribute,
325      A_Signed_Zeros_Attribute,
326      A_Size_Attribute,
327      A_Small_Attribute,
328      A_Storage_Pool_Attribute,
329      A_Storage_Size_Attribute,
330      A_Succ_Attribute,
331      A_Tag_Attribute,
332      A_Terminated_Attribute,
333      A_Truncation_Attribute,
334      An_Unbiased_Rounding_Attribute,
335      An_Unchecked_Access_Attribute,
336      A_Val_Attribute,
337      A_Valid_Attribute,
338      A_Value_Attribute,
339      A_Version_Attribute,
340      A_Wide_Image_Attribute,
341      A_Wide_Value_Attribute,
342      A_Wide_Width_Attribute,
343      A_Width_Attribute,
344      A_Write_Attribute,
345      A_Machine_Rounding_Attribute,
346      A_Mod_Attribute,
347      A_Priority_Attribute,
348      A_Stream_Size_Attribute,
349      A_Wide_Wide_Image_Attribute,
350      A_Wide_Wide_Value_Attribute,
351      A_Wide_Wide_Width_Attribute,
352      An_Implementation_Defined_Attribute,
353      An_Unknown_Attribute,
354      A_Record_Aggregate,
355      An_Extension_Aggregate,
356      A_Positional_Array_Aggregate,
357      A_Named_Array_Aggregate,
358      An_And_Then_Short_Circuit,
359      An_Or_Else_Short_Circuit,
360      An_In_Range_Membership_Test,
361      A_Not_In_Range_Membership_Test,
362      An_In_Type_Membership_Test,
363      A_Not_In_Type_Membership_Test,
364      A_Null_Literal,
365      A_Parenthesized_Expression,
366      A_Type_Conversion,
367      A_Qualified_Expression,
368      An_Allocation_From_Subtype,
369      An_Allocation_From_Qualified_Expression,
370      A_Pragma_Argument_Association,
371      A_Discriminant_Association,
372      A_Record_Component_Association,
373      An_Array_Component_Association,
374      A_Parameter_Association,
375      A_Generic_Association,
376      A_Null_Statement,
377      An_Assignment_Statement,
378      An_If_Statement,
379      A_Case_Statement,
380      A_Loop_Statement,
381      A_While_Loop_Statement,
382      A_For_Loop_Statement,
383      A_Block_Statement,
384      An_Exit_Statement,
385      A_Goto_Statement,
386      A_Procedure_Call_Statement,
387      A_Return_Statement,
388      An_Extended_Return_Statement,
389      An_Accept_Statement,
390      An_Entry_Call_Statement,
391      A_Requeue_Statement,
392      A_Requeue_Statement_With_Abort,
393      A_Delay_Until_Statement,
394      A_Delay_Relative_Statement,
395      A_Terminate_Alternative_Statement,
396      A_Selective_Accept_Statement,
397      A_Timed_Entry_Call_Statement,
398      A_Conditional_Entry_Call_Statement,
399      An_Asynchronous_Select_Statement,
400      An_Abort_Statement,
401      A_Raise_Statement,
402      A_Code_Statement,
403      An_If_Path,
404      An_Elsif_Path,
405      An_Else_Path,
406      A_Case_Path,
407      A_Select_Path,
408      An_Or_Path,
409      A_Then_Abort_Path,
410      A_Use_Package_Clause,
411      A_Use_Type_Clause,
412      A_With_Clause,
413      An_Attribute_Definition_Clause,
414      An_Enumeration_Representation_Clause,
415      A_Record_Representation_Clause,
416      An_At_Clause,
417      A_Component_Clause,
418      An_Exception_Handler,
419      Non_Trivial_Mapping,
420      Not_Implemented_Mapping,
421      Trivial_Mapping,
422      No_Mapping);
423
424   subtype Internal_Expression_Kinds is Internal_Element_Kinds
425      range An_Integer_Literal .. An_Allocation_From_Qualified_Expression;
426
427   subtype Internal_Operator_Symbol_Kinds is Internal_Expression_Kinds
428      range An_And_Operator .. A_Not_Operator;
429
430   function Int_Kind (E : Element) return Internal_Element_Kinds;
431
432end Case_Optimization_Pkg1;
433