]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/fe.h
ada: Emit enums rather than defines for various constants
[thirdparty/gcc.git] / gcc / ada / fe.h
CommitLineData
70482933
RK
1/****************************************************************************
2 * *
3 * GNAT COMPILER COMPONENTS *
4 * *
5 * FE *
6 * *
7 * C Header File *
8 * *
cccef051 9 * Copyright (C) 1992-2023, Free Software Foundation, Inc. *
70482933
RK
10 * *
11 * GNAT is free software; you can redistribute it and/or modify it under *
12 * terms of the GNU General Public License as published by the Free Soft- *
748086b7 13 * ware Foundation; either version 3, or (at your option) any later ver- *
70482933
RK
14 * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
15 * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
748086b7
JJ
16 * or FITNESS FOR A PARTICULAR PURPOSE. *
17 * *
18 * As a special exception under Section 7 of GPL version 3, you are granted *
19 * additional permissions described in the GCC Runtime Library Exception, *
20 * version 3.1, as published by the Free Software Foundation. *
21 * *
22 * You should have received a copy of the GNU General Public License and *
23 * a copy of the GCC Runtime Library Exception along with this program; *
24 * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see *
25 * <http://www.gnu.org/licenses/>. *
70482933
RK
26 * *
27 * GNAT was originally developed by the GNAT team at New York University. *
71ff80dc 28 * Extensive contributions were provided by Ada Core Technologies Inc. *
70482933
RK
29 * *
30 ****************************************************************************/
31
c7732bbe
EB
32/* This is the C header that contains the declarations of Ada subprograms and
33 variables used by gigi and not declared in other C header files. It was
34 created manually from Ada specifications. The original Ada declarations
35 in these specifications must be marked with:
36
37 "WARNING: There is a matching C declaration of this <entity_kind> in fe.h"
38
2f31b362 39 where <entity_kind> is either "subprogram" or "variable" or "type".
93582885
EB
40
41 WARNING: functions taking String_Pointer parameters must abide by the rule
42 documented alongside the definition of String_Pointer in types.h. */
70482933 43
9e9bd455
LG
44#ifdef __cplusplus
45extern "C" {
46#endif
47
be7e4a40
AC
48/* atree: */
49
c7732bbe 50#define Serious_Errors_Detected atree__serious_errors_detected
be7e4a40 51
c7732bbe 52extern Nat Serious_Errors_Detected;
70482933 53
c7732bbe 54/* comperr: */
70482933 55
c7732bbe 56#define Compiler_Abort comperr__compiler_abort
70482933 57
b0ba442b 58extern void Compiler_Abort (String_Pointer, String_Pointer, Boolean) ATTRIBUTE_NORETURN;
70482933
RK
59
60/* debug: */
61
6153cfd7 62#define Debug_Flag_Dot_KK debug__debug_flag_dot_kk
8489c295 63#define Debug_Flag_Dot_R debug__debug_flag_dot_r
f54be415 64#define Debug_Flag_Dot_8 debug__debug_flag_dot_8
8489c295 65#define Debug_Flag_NN debug__debug_flag_nn
c7732bbe 66
6153cfd7 67extern Boolean Debug_Flag_Dot_KK;
8489c295 68extern Boolean Debug_Flag_Dot_R;
f54be415 69extern Boolean Debug_Flag_Dot_8;
70482933
RK
70extern Boolean Debug_Flag_NN;
71
72b4f1fc 72/* einfo: */
70482933 73
b23cdc01
BD
74/* Valid_Uint is used to preserve the old behavior of Esize and
75 friends, where Uint_0 was the default. All calls to this
76 are questionable. */
77INLINE Valid_Uint
78No_Uint_To_0 (Uint X)
79{
80 return X == No_Uint ? Uint_0 : X;
81}
82
76f9c7f4
BD
83#define Set_Alignment einfo__entities__set_alignment
84#define Set_Component_Bit_Offset einfo__entities__set_component_bit_offset
85#define Set_Component_Size einfo__entities__set_component_size
86#define Set_Esize einfo__entities__set_esize
87#define Set_Mechanism einfo__entities__set_mechanism
88#define Set_Normalized_First_Bit einfo__entities__set_normalized_first_bit
89#define Set_Normalized_Position einfo__entities__set_normalized_position
90#define Set_RM_Size einfo__entities__set_rm_size
70482933 91
fbf5a39b 92extern void Set_Alignment (Entity_Id, Uint);
e6f69614 93extern void Set_Component_Bit_Offset (Entity_Id, Uint);
fbf5a39b
AC
94extern void Set_Component_Size (Entity_Id, Uint);
95extern void Set_Esize (Entity_Id, Uint);
e6f69614 96extern void Set_Mechanism (Entity_Id, Mechanism_Type);
63a329f8
EB
97extern void Set_Normalized_First_Bit (Entity_Id, Uint);
98extern void Set_Normalized_Position (Entity_Id, Uint);
fbf5a39b 99extern void Set_RM_Size (Entity_Id, Uint);
70482933 100
76f9c7f4 101#define Is_Entity_Name einfo__utils__is_entity_name
c7732bbe 102
fbf5a39b 103extern Boolean Is_Entity_Name (Node_Id);
07fc65c4 104
76f9c7f4 105#define Get_Attribute_Definition_Clause einfo__utils__get_attribute_definition_clause
c7732bbe 106
30e36fd0 107extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, unsigned char);
07fc65c4 108
70482933
RK
109/* errout: */
110
c7732bbe
EB
111#define Error_Msg_N errout__error_msg_n
112#define Error_Msg_NE errout__error_msg_ne
113#define Set_Identifier_Casing errout__set_identifier_casing
fbf5a39b 114
c7732bbe
EB
115extern void Error_Msg_N (String_Pointer, Node_Id);
116extern void Error_Msg_NE (String_Pointer, Node_Id, Entity_Id);
b0ba442b 117extern void Set_Identifier_Casing (void *, const void *);
70482933 118
fbf5a39b
AC
119/* err_vars: */
120
c7732bbe
EB
121#define Error_Msg_Uint_1 err_vars__error_msg_uint_1
122#define Error_Msg_Uint_2 err_vars__error_msg_uint_2
033ba5bf 123
c7732bbe
EB
124extern Uint Error_Msg_Uint_1;
125extern Uint Error_Msg_Uint_2;
70482933 126
09ef48fe
GD
127/* exp_ch11: */
128
c7732bbe
EB
129#define Get_Local_Raise_Call_Entity exp_ch11__get_local_raise_call_entity
130#define Get_RT_Exception_Entity exp_ch11__get_rt_exception_entity
131#define Get_RT_Exception_Name exp_ch11__get_rt_exception_name
132#define Warn_If_No_Local_Raise exp_ch11__warn_if_no_local_raise
09ef48fe 133
c7732bbe
EB
134extern Entity_Id Get_Local_Raise_Call_Entity (void);
135extern Entity_Id Get_RT_Exception_Entity (int);
a6d3b499 136extern void Get_RT_Exception_Name (enum RT_Exception_Code);
c7732bbe 137extern void Warn_If_No_Local_Raise (int);
09ef48fe 138
70482933 139/* exp_code: */
fbf5a39b 140
c7732bbe
EB
141#define Asm_Input_Constraint exp_code__asm_input_constraint
142#define Asm_Input_Value exp_code__asm_input_value
143#define Asm_Output_Constraint exp_code__asm_output_constraint
144#define Asm_Output_Variable exp_code__asm_output_variable
145#define Asm_Template exp_code__asm_template
146#define Clobber_Get_Next exp_code__clobber_get_next
147#define Clobber_Setup exp_code__clobber_setup
148#define Is_Asm_Volatile exp_code__is_asm_volatile
149#define Next_Asm_Input exp_code__next_asm_input
150#define Next_Asm_Output exp_code__next_asm_output
151#define Setup_Asm_Inputs exp_code__setup_asm_inputs
152#define Setup_Asm_Outputs exp_code__setup_asm_outputs
70482933 153
fbf5a39b
AC
154extern Node_Id Asm_Input_Constraint (void);
155extern Node_Id Asm_Input_Value (void);
156extern Node_Id Asm_Output_Constraint (void);
157extern Node_Id Asm_Output_Variable (void);
158extern Node_Id Asm_Template (Node_Id);
b0ba442b 159extern void *Clobber_Get_Next (void);
fbf5a39b
AC
160extern void Clobber_Setup (Node_Id);
161extern Boolean Is_Asm_Volatile (Node_Id);
162extern void Next_Asm_Input (void);
163extern void Next_Asm_Output (void);
164extern void Setup_Asm_Inputs (Node_Id);
165extern void Setup_Asm_Outputs (Node_Id);
70482933
RK
166
167/* exp_dbug: */
168
c7732bbe
EB
169#define Get_Encoded_Name exp_dbug__get_encoded_name
170#define Get_External_Name exp_dbug__get_external_name
171#define Get_Variant_Encoding exp_dbug__get_variant_encoding
70482933 172
c7732bbe
EB
173extern void Get_Encoded_Name (Entity_Id);
174extern void Get_External_Name (Entity_Id, Boolean, String_Pointer);
175extern void Get_Variant_Encoding (Entity_Id);
70482933 176
c743425f
EB
177/* exp_tss: */
178
c7732bbe 179#define Is_Init_Proc exp_tss__is_init_proc
c743425f
EB
180
181extern Boolean Is_Init_Proc (Entity_Id);
182
6fb4cdde
AC
183/* exp_util: */
184
89e037d0 185#define Find_Interface_Tag exp_util__find_interface_tag
c7732bbe 186#define Is_Fully_Repped_Tagged_Type exp_util__is_fully_repped_tagged_type
8be71a90 187#define Is_Related_To_Func_Return exp_util__is_related_to_func_return
89e037d0
EB
188#define Is_Secondary_Stack_Thunk exp_util__is_secondary_stack_thunk
189#define Thunk_Target exp_util__thunk_target
6fb4cdde 190
89e037d0 191extern Entity_Id Find_Interface_Tag (Entity_Id, Entity_Id);
8be71a90
EB
192extern Boolean Is_Fully_Repped_Tagged_Type (Entity_Id);
193extern Boolean Is_Related_To_Func_Return (Entity_Id);
89e037d0
EB
194extern Boolean Is_Secondary_Stack_Thunk (Entity_Id);
195extern Entity_Id Thunk_Target (Entity_Id);
6fb4cdde 196
70482933
RK
197/* lib: */
198
199#define Cunit lib__cunit
200#define Ident_String lib__ident_string
201#define In_Extended_Main_Code_Unit lib__in_extended_main_code_unit
202
fbf5a39b
AC
203extern Node_Id Cunit (Unit_Number_Type);
204extern Node_Id Ident_String (Unit_Number_Type);
205extern Boolean In_Extended_Main_Code_Unit (Entity_Id);
70482933
RK
206
207/* opt: */
208
2f31b362 209#define Ada_Version opt__ada_version
c7732bbe
EB
210#define Back_End_Inlining opt__back_end_inlining
211#define Debug_Generated_Code opt__debug_generated_code
3cc3a373 212#define Enable_128bit_Types opt__enable_128bit_types
c7732bbe
EB
213#define Exception_Extra_Info opt__exception_extra_info
214#define Exception_Locations_Suppressed opt__exception_locations_suppressed
c7732bbe
EB
215#define Generate_SCO_Instance_Table opt__generate_sco_instance_table
216#define GNAT_Mode opt__gnat_mode
217#define List_Representation_Info opt__list_representation_info
218#define No_Strict_Aliasing_CP opt__no_strict_aliasing
219#define Suppress_Checks opt__suppress_checks
da4824bb 220#define Unnest_Subprogram_Mode opt__unnest_subprogram_mode
07fc65c4 221
2f31b362 222typedef enum {
e7f7018c 223 Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022
2f31b362 224} Ada_Version_Type;
e7f7018c
BD
225// Ada_With_Core_Extensions and Ada_With_All_Extensions (see opt.ads) are not
226// used on the C side for now. If we decide to use them, we should import
227// All_Extensions_Allowed and Core_Extensions_Allowed functions.
2f31b362 228
2f31b362 229extern Ada_Version_Type Ada_Version;
f087ea44 230extern Boolean Back_End_Inlining;
13a6dfe3 231extern Boolean Debug_Generated_Code;
f2d9f95e 232extern Boolean Enable_128bit_Types;
437f8c1e 233extern Boolean Exception_Extra_Info;
a49c3e16 234extern Boolean Exception_Locations_Suppressed;
7130729a 235extern Boolean Generate_SCO_Instance_Table;
5b2bf62c 236extern Boolean GNAT_Mode;
4116e7d0 237extern Int List_Representation_Info;
c3831524 238extern Boolean No_Strict_Aliasing_CP;
0274dd3f 239extern Boolean Suppress_Checks;
da4824bb 240extern Boolean Unnest_Subprogram_Mode;
70482933 241
c7732bbe
EB
242#define ZCX_Exceptions opt__zcx_exceptions
243#define SJLJ_Exceptions opt__sjlj_exceptions
0ab0bf95 244
c7732bbe
EB
245extern Boolean ZCX_Exceptions (void);
246extern Boolean SJLJ_Exceptions (void);
0ab0bf95 247
70482933
RK
248/* restrict: */
249
c7732bbe
EB
250#define Check_Elaboration_Code_Allowed \
251 restrict__check_elaboration_code_allowed
252#define Check_Implicit_Dynamic_Code_Allowed \
253 restrict__check_implicit_dynamic_code_allowed
254#define Check_No_Implicit_Heap_Alloc \
255 restrict__check_no_implicit_heap_alloc
256#define Check_No_Implicit_Protected_Alloc \
257 restrict__check_no_implicit_protected_alloc
258#define Check_No_Implicit_Task_Alloc \
259 restrict__check_no_implicit_task_alloc
433cefcd
EB
260#define Check_Restriction_No_Dependence_On_System \
261 restrict__check_restriction_no_dependence_on_system
c7732bbe
EB
262#define No_Exception_Handlers_Set \
263 restrict__no_exception_handlers_set
ddbcda71
EB
264#define No_Exception_Propagation_Active \
265 restrict__no_exception_propagation_active
c7732bbe
EB
266
267extern void Check_Elaboration_Code_Allowed (Node_Id);
268extern void Check_Implicit_Dynamic_Code_Allowed (Node_Id);
269extern void Check_No_Implicit_Heap_Alloc (Node_Id);
270extern void Check_No_Implicit_Protected_Alloc (Node_Id);
271extern void Check_No_Implicit_Task_Alloc (Node_Id);
433cefcd 272extern void Check_Restriction_No_Dependence_On_System (Name_Id, Node_Id);
c7732bbe 273extern Boolean No_Exception_Handlers_Set (void);
ddbcda71 274extern Boolean No_Exception_Propagation_Active (void);
70482933 275
ac43e11e 276/* sem_aggr: */
8ab31c0c 277
27c3d986 278#define Is_Single_Aggregate sem_aggr__is_single_aggregate
ac43e11e 279
27c3d986 280extern Boolean Is_Single_Aggregate (Node_Id);
ac43e11e 281
a4100e55
RD
282/* sem_aux: */
283
c7732bbe
EB
284#define Ancestor_Subtype sem_aux__ancestor_subtype
285#define Constant_Value sem_aux__constant_value
286#define First_Discriminant sem_aux__first_discriminant
287#define First_Stored_Discriminant sem_aux__first_stored_discriminant
288#define First_Subtype sem_aux__first_subtype
289#define Is_By_Reference_Type sem_aux__is_by_reference_type
290#define Is_Derived_Type sem_aux__is_derived_type
291
292extern Entity_Id Ancestor_Subtype (Entity_Id);
293extern Node_Id Constant_Value (Entity_Id);
294extern Entity_Id First_Discriminant (Entity_Id);
295extern Entity_Id First_Stored_Discriminant (Entity_Id);
296extern Entity_Id First_Subtype (Entity_Id);
297extern Boolean Is_By_Reference_Type (Entity_Id);
298extern Boolean Is_Derived_Type (Entity_Id);
91b1417d 299
70482933
RK
300/* sem_eval: */
301
302#define Compile_Time_Known_Value sem_eval__compile_time_known_value
da7b4b08 303#define Is_Null_Range sem_eval__is_null_range
70482933 304
c7732bbe 305extern Boolean Compile_Time_Known_Value (Node_Id);
da7b4b08 306extern Boolean Is_Null_Range (Node_Id, Node_Id);
70482933
RK
307
308/* sem_util: */
309
310#define Defining_Entity sem_util__defining_entity
311#define First_Actual sem_util__first_actual
c3d6d603
MP
312#define Has_Storage_Model_Type_Aspect sem_util__storage_model_support__has_storage_model_type_aspect
313#define Has_Designated_Storage_Model_Aspect sem_util__storage_model_support__has_designated_storage_model_aspect
37083a8d 314#define Is_Expression_Function sem_util__is_expression_function
d58008d2 315#define Is_Variable_Size_Record sem_util__is_variable_size_record
5cfde7a0 316#define Needs_Secondary_Stack sem_util__needs_secondary_stack
c7732bbe 317#define Next_Actual sem_util__next_actual
c3d6d603
MP
318#define Storage_Model_Object sem_util__storage_model_support__storage_model_object
319#define Storage_Model_Copy_From sem_util__storage_model_support__storage_model_copy_from
320#define Storage_Model_Copy_To sem_util__storage_model_support__storage_model_copy_to
c697f593
EB
321
322extern Entity_Id Defining_Entity (Node_Id);
323extern Node_Id First_Actual (Node_Id);
c3d6d603
MP
324extern Boolean Has_Storage_Model_Type_Aspect (Entity_Id);
325extern Boolean Has_Designated_Storage_Model_Aspect (Entity_Id);
c697f593
EB
326extern Boolean Is_Expression_Function (Entity_Id);
327extern Boolean Is_Variable_Size_Record (Entity_Id);
5cfde7a0 328extern Boolean Needs_Secondary_Stack (Entity_Id);
c697f593 329extern Node_Id Next_Actual (Node_Id);
c3d6d603
MP
330extern Entity_Id Storage_Model_Object (Entity_Id);
331extern Entity_Id Storage_Model_Copy_From (Entity_Id);
332extern Entity_Id Storage_Model_Copy_To (Entity_Id);
70482933 333
08b8b90c 334/* sinfo: */
fbf5a39b 335
76f9c7f4
BD
336#define End_Location sinfo__utils__end_location
337#define Set_Has_No_Elaboration_Code sinfo__nodes__set_has_no_elaboration_code
338#define Set_Present_Expr sinfo__nodes__set_present_expr
08b8b90c
EB
339
340extern Source_Ptr End_Location (Node_Id);
fbf5a39b 341extern void Set_Has_No_Elaboration_Code (Node_Id, Boolean);
08b8b90c 342extern void Set_Present_Expr (Node_Id, Uint);
70482933 343
c7732bbe
EB
344/* sinput: */
345
346#define Debug_Source_Name sinput__debug_source_name
347#define Get_Column_Number sinput__get_column_number
348#define Get_Logical_Line_Number sinput__get_logical_line_number
349#define Get_Source_File_Index sinput__get_source_file_index
350
351extern File_Name_Type Debug_Source_Name (Source_File_Index);
352extern Column_Number_Type Get_Column_Number (Source_Ptr);
353extern Line_Number_Type Get_Logical_Line_Number (Source_Ptr);
354extern Source_File_Index Get_Source_File_Index (Source_Ptr);
355
70482933
RK
356/* targparm: */
357
c7732bbe
EB
358#define Machine_Overflows_On_Target \
359 targparm__machine_overflows_on_target
360#define Signed_Zeros_On_Target \
361 targparm__signed_zeros_on_target
362#define Stack_Check_Limits_On_Target \
363 targparm__stack_check_limits_on_target
364#define Stack_Check_Probes_On_Target \
365 targparm__stack_check_probes_on_target
70482933 366
b546e2a7
AC
367extern Boolean Machine_Overflows_On_Target;
368extern Boolean Signed_Zeros_On_Target;
0312b364 369extern Boolean Stack_Check_Limits_On_Target;
c7732bbe 370extern Boolean Stack_Check_Probes_On_Target;
9e9bd455 371
8ab31c0c
AC
372/* warnsw: */
373
7a08b939 374#define Get_Warn_On_Questionable_Layout warnsw__get_warn_on_questionable_layout
8ab31c0c 375
0ed20c72 376extern Boolean Get_Warn_On_Questionable_Layout (void);
8ab31c0c 377
76f9c7f4
BD
378// The following corresponds to Ada code in Einfo.Utils.
379
380typedef Boolean B;
381typedef Component_Alignment_Kind C;
382typedef Entity_Id E;
383typedef Mechanism_Type M;
384typedef Node_Id N;
385typedef Uint U;
386typedef Ureal R;
387typedef Elist_Id L;
388typedef List_Id S;
389
390#define Is_Access_Object_Type einfo__utils__is_access_object_type
391B Is_Access_Object_Type (E Id);
392
393#define Is_Named_Access_Type einfo__utils__is_named_access_type
394B Is_Named_Access_Type (E Id);
395
396#define Address_Clause einfo__utils__address_clause
397N Address_Clause (E Id);
398
399#define Aft_Value einfo__utils__aft_value
400U Aft_Value (E Id);
401
402#define Alignment_Clause einfo__utils__alignment_clause
403N Alignment_Clause (E Id);
404
405#define Base_Type einfo__utils__base_type
406E Base_Type (E Id);
407
408#define Declaration_Node einfo__utils__declaration_node
409N Declaration_Node (E Id);
410
411#define Designated_Type einfo__utils__designated_type
412E Designated_Type (E Id);
413
414#define First_Component einfo__utils__first_component
415E First_Component (E Id);
416
417#define First_Component_Or_Discriminant einfo__utils__first_component_or_discriminant
418E First_Component_Or_Discriminant (E Id);
419
420#define First_Formal einfo__utils__first_formal
421E First_Formal (E Id);
422
423#define First_Formal_With_Extras einfo__utils__first_formal_with_extras
424E First_Formal_With_Extras (E Id);
425
426#define Has_Attach_Handler einfo__utils__has_attach_handler
427B Has_Attach_Handler (E Id);
428
429#define Has_Entries einfo__utils__has_entries
430B Has_Entries (E Id);
431
432#define Has_Foreign_Convention einfo__utils__has_foreign_convention
433B Has_Foreign_Convention (E Id);
434
435#define Has_Interrupt_Handler einfo__utils__has_interrupt_handler
436B Has_Interrupt_Handler (E Id);
437
438#define Has_Non_Limited_View einfo__utils__has_non_limited_view
439B Has_Non_Limited_View (E Id);
440
441#define Has_Non_Null_Abstract_State einfo__utils__has_non_null_abstract_state
442B Has_Non_Null_Abstract_State (E Id);
443
444#define Has_Non_Null_Visible_Refinement einfo__utils__has_non_null_visible_refinement
445B Has_Non_Null_Visible_Refinement (E Id);
446
447#define Has_Null_Abstract_State einfo__utils__has_null_abstract_state
448B Has_Null_Abstract_State (E Id);
449
450#define Has_Null_Visible_Refinement einfo__utils__has_null_visible_refinement
451B Has_Null_Visible_Refinement (E Id);
452
453#define Implementation_Base_Type einfo__utils__implementation_base_type
454E Implementation_Base_Type (E Id);
455
456#define Is_Base_Type einfo__utils__is_base_type
457B Is_Base_Type (E Id);
458
459#define Is_Boolean_Type einfo__utils__is_boolean_type
460B Is_Boolean_Type (E Id);
461
462#define Is_Constant_Object einfo__utils__is_constant_object
463B Is_Constant_Object (E Id);
464
465#define Is_Controlled einfo__utils__is_controlled
466B Is_Controlled (E Id);
467
468#define Is_Discriminal einfo__utils__is_discriminal
469B Is_Discriminal (E Id);
470
471#define Is_Dynamic_Scope einfo__utils__is_dynamic_scope
472B Is_Dynamic_Scope (E Id);
473
474#define Is_Elaboration_Target einfo__utils__is_elaboration_target
475B Is_Elaboration_Target (E Id);
476
477#define Is_External_State einfo__utils__is_external_state
478B Is_External_State (E Id);
479
480#define Is_Finalizer einfo__utils__is_finalizer
481B Is_Finalizer (E Id);
482
483#define Is_Null_State einfo__utils__is_null_state
484B Is_Null_State (E Id);
485
486#define Is_Package_Or_Generic_Package einfo__utils__is_package_or_generic_package
487B Is_Package_Or_Generic_Package (E Id);
488
489#define Is_Packed_Array einfo__utils__is_packed_array
490B Is_Packed_Array (E Id);
491
492#define Is_Prival einfo__utils__is_prival
493B Is_Prival (E Id);
494
495#define Is_Protected_Component einfo__utils__is_protected_component
496B Is_Protected_Component (E Id);
497
498#define Is_Protected_Interface einfo__utils__is_protected_interface
499B Is_Protected_Interface (E Id);
500
501#define Is_Protected_Record_Type einfo__utils__is_protected_record_type
502B Is_Protected_Record_Type (E Id);
503
504#define Is_Relaxed_Initialization_State einfo__utils__is_relaxed_initialization_state
505B Is_Relaxed_Initialization_State (E Id);
506
507#define Is_Standard_Character_Type einfo__utils__is_standard_character_type
508B Is_Standard_Character_Type (E Id);
509
510#define Is_Standard_String_Type einfo__utils__is_standard_string_type
511B Is_Standard_String_Type (E Id);
512
513#define Is_String_Type einfo__utils__is_string_type
514B Is_String_Type (E Id);
515
516#define Is_Synchronized_Interface einfo__utils__is_synchronized_interface
517B Is_Synchronized_Interface (E Id);
518
519#define Is_Synchronized_State einfo__utils__is_synchronized_state
520B Is_Synchronized_State (E Id);
521
522#define Is_Task_Interface einfo__utils__is_task_interface
523B Is_Task_Interface (E Id);
524
525#define Is_Task_Record_Type einfo__utils__is_task_record_type
526B Is_Task_Record_Type (E Id);
527
528#define Is_Wrapper_Package einfo__utils__is_wrapper_package
529B Is_Wrapper_Package (E Id);
530
531#define Last_Formal einfo__utils__last_formal
532E Last_Formal (E Id);
533
534#define Machine_Emax_Value einfo__utils__machine_emax_value
535U Machine_Emax_Value (E Id);
536
537#define Machine_Emin_Value einfo__utils__machine_emin_value
538U Machine_Emin_Value (E Id);
539
540#define Machine_Mantissa_Value einfo__utils__machine_mantissa_value
541U Machine_Mantissa_Value (E Id);
542
543#define Machine_Radix_Value einfo__utils__machine_radix_value
544U Machine_Radix_Value (E Id);
545
546#define Model_Emin_Value einfo__utils__model_emin_value
547U Model_Emin_Value (E Id);
548
549#define Model_Epsilon_Value einfo__utils__model_epsilon_value
550R Model_Epsilon_Value (E Id);
551
552#define Model_Mantissa_Value einfo__utils__model_mantissa_value
553U Model_Mantissa_Value (E Id);
554
555#define Model_Small_Value einfo__utils__model_small_value
556R Model_Small_Value (E Id);
557
558#define Next_Component einfo__utils__next_component
559E Next_Component (E Id);
560
561#define Next_Component_Or_Discriminant einfo__utils__next_component_or_discriminant
562E Next_Component_Or_Discriminant (E Id);
563
564#define Next_Discriminant einfo__utils__next_discriminant
565E Next_Discriminant (E Id);
566
567#define Next_Formal einfo__utils__next_formal
568E Next_Formal (E Id);
569
570#define Next_Formal_With_Extras einfo__utils__next_formal_with_extras
571E Next_Formal_With_Extras (E Id);
572
573#define Number_Dimensions einfo__utils__number_dimensions
574Pos Number_Dimensions (E Id);
575
576#define Number_Entries einfo__utils__number_entries
577Nat Number_Entries (E Id);
578
579#define Number_Formals einfo__utils__number_formals
580Pos Number_Formals (E Id);
581
582#define Object_Size_Clause einfo__utils__object_size_clause
583N Object_Size_Clause (E Id);
584
585#define Partial_Refinement_Constituents einfo__utils__partial_refinement_constituents
586L Partial_Refinement_Constituents (E Id);
587
588#define Primitive_Operations einfo__utils__primitive_operations
589L Primitive_Operations (E Id);
590
591#define Root_Type einfo__utils__root_type
592E Root_Type (E Id);
593
594#define Safe_Emax_Value einfo__utils__safe_emax_value
595U Safe_Emax_Value (E Id);
596
597#define Safe_First_Value einfo__utils__safe_first_value
598R Safe_First_Value (E Id);
599
600#define Safe_Last_Value einfo__utils__safe_last_value
601R Safe_Last_Value (E Id);
602
603#define Scope_Depth einfo__utils__scope_depth
604U Scope_Depth (E Id);
605
606#define Scope_Depth_Set einfo__utils__scope_depth_set
607B Scope_Depth_Set (E Id);
608
609#define Size_Clause einfo__utils__size_clause
610N Size_Clause (E Id);
611
612#define Stream_Size_Clause einfo__utils__stream_size_clause
613N Stream_Size_Clause (E Id);
614
615#define Type_High_Bound einfo__utils__type_high_bound
616N Type_High_Bound (E Id);
617
618#define Type_Low_Bound einfo__utils__type_low_bound
619N Type_Low_Bound (E Id);
620
621#define Underlying_Type einfo__utils__underlying_type
622E Underlying_Type (E Id);
623
624#define Known_Alignment einfo__utils__known_alignment
625B Known_Alignment (Entity_Id E);
626
627#define Known_Component_Bit_Offset einfo__utils__known_component_bit_offset
628B Known_Component_Bit_Offset (Entity_Id E);
629
630#define Known_Component_Size einfo__utils__known_component_size
631B Known_Component_Size (Entity_Id E);
632
633#define Known_Esize einfo__utils__known_esize
634B Known_Esize (Entity_Id E);
635
636#define Known_Normalized_First_Bit einfo__utils__known_normalized_first_bit
637B Known_Normalized_First_Bit (Entity_Id E);
638
639#define Known_Normalized_Position einfo__utils__known_normalized_position
640B Known_Normalized_Position (Entity_Id E);
641
642#define Known_Normalized_Position_Max einfo__utils__known_normalized_position_max
643B Known_Normalized_Position_Max (Entity_Id E);
644
645#define Known_RM_Size einfo__utils__known_rm_size
646B Known_RM_Size (Entity_Id E);
647
0c8ff35e
BD
648#define Copy_Alignment einfo__utils__copy_alignment
649B Copy_Alignment(Entity_Id To, Entity_Id From);
650
b23cdc01
BD
651#define Copy_Esize einfo__utils__copy_esize
652B Copy_Esize(Entity_Id To, Entity_Id From);
653
654#define Copy_RM_Size einfo__utils__copy_rm_size
655B Copy_RM_Size(Entity_Id To, Entity_Id From);
656
76f9c7f4
BD
657#define Is_Discrete_Or_Fixed_Point_Type einfo__utils__is_discrete_or_fixed_point_type
658B Is_Discrete_Or_Fixed_Point_Type (E Id);
659
660#define Is_Floating_Point_Type einfo__utils__is_floating_point_type
661B Is_Floating_Point_Type (E Id);
662
663#define Is_Record_Type einfo__utils__is_record_type
664B Is_Record_Type (E Id);
665
76f9c7f4
BD
666#define Is_Full_Access einfo__utils__is_full_access
667B Is_Full_Access (E Id);
668
669#define Next_Index einfo__utils__next_index
670Node_Id Next_Index (Node_Id Id);
671
672#define Next_Literal einfo__utils__next_literal
673E Next_Literal (E Id);
674
675#define Next_Stored_Discriminant einfo__utils__next_stored_discriminant
676E Next_Stored_Discriminant (E Id);
677
678#define Parameter_Mode einfo__utils__parameter_mode
679// Parameter_Mode really returns Formal_Kind, but that is not visible, because
680// fe.h is included before einfo.h.
681Entity_Kind Parameter_Mode (E Id);
682
76f9c7f4
BD
683// The following is needed because Convention in Sem_Util is a renaming
684// of Basic_Convention.
685
5d8fc020
TT
686static inline Convention_Id
687Convention (N Node)
688{
689 extern Byte einfo__entities__basic_convention (N Node);
690 return (Convention_Id) einfo__entities__basic_convention (Node);
691}
76f9c7f4
BD
692
693// See comments regarding Entity_Or_Associated_Node in Sinfo.Utils.
694
695#define Entity sinfo__nodes__entity_or_associated_node
696Entity_Id Entity (N Node);
697
698// See comments regarding Renamed_Or_Alias in Einfo.Utils
699
700#define Alias einfo__entities__renamed_or_alias
701
702#define Renamed_Entity einfo__entities__renamed_or_alias
703Node_Id Renamed_Entity (N Node);
704
705#define Renamed_Object einfo__entities__renamed_or_alias
706Node_Id Renamed_Object (N Node);
707
9e9bd455
LG
708#ifdef __cplusplus
709}
710#endif