aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.2.1/gcc/ada/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.2.1/gcc/ada/types.h')
-rw-r--r--gcc-4.2.1/gcc/ada/types.h369
1 files changed, 369 insertions, 0 deletions
diff --git a/gcc-4.2.1/gcc/ada/types.h b/gcc-4.2.1/gcc/ada/types.h
new file mode 100644
index 000000000..94f9b2480
--- /dev/null
+++ b/gcc-4.2.1/gcc/ada/types.h
@@ -0,0 +1,369 @@
+/****************************************************************************
+ * *
+ * GNAT COMPILER COMPONENTS *
+ * *
+ * T Y P E S *
+ * *
+ * C Header File *
+ * *
+ * Copyright (C) 1992-2005, Free Software Foundation, Inc. *
+ * *
+ * GNAT is free software; you can redistribute it and/or modify it under *
+ * terms of the GNU General Public License as published by the Free Soft- *
+ * ware Foundation; either version 2, or (at your option) any later ver- *
+ * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
+ * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
+ * for more details. You should have received a copy of the GNU General *
+ * Public License distributed with GNAT; see file COPYING. If not, write *
+ * to the Free Software Foundation, 51 Franklin Street, Fifth Floor, *
+ * Boston, MA 02110-1301, USA. *
+ * *
+ * GNAT was originally developed by the GNAT team at New York University. *
+ * Extensive contributions were provided by Ada Core Technologies Inc. *
+ * *
+ ****************************************************************************/
+
+/* This is the C file that corresponds to the Ada package spec Types. It was
+ created manually from the files types.ads and types.adb.
+
+ This package contains host independent type definitions which are used
+ throughout the compiler modules. The comments in the C version are brief
+ reminders of the purpose of each declaration. For complete documentation,
+ see the Ada version of these definitions. */
+
+/* Boolean Types: */
+
+/* Boolean type (cannot use enum, because of bit field restriction on some
+ compilers). */
+typedef unsigned char Boolean;
+#define False 0
+#define True 1
+
+/* General Use Integer Types */
+
+/* Signed 32/bit integer */
+typedef int Int;
+
+/* Signed 16 bit integer */
+typedef short Short;
+
+/* Non/negative Int values */
+typedef Int Nat;
+
+/* Positive Int values */
+typedef Int Pos;
+
+/* 8/bit unsigned integer */
+typedef char Byte;
+
+/* 8/Bit Character and String Types: */
+
+/* 8/bit character type */
+typedef char Char;
+
+/* Graphic characters, as defined in ARM */
+typedef Char Graphic_Character;
+
+/* Line terminator characters (LF, VT, FF, CR) */
+typedef Char Line_Terminator;
+
+/* Characters with the upper bit set */
+typedef Char Upper_Half_Character;
+
+/* String type built on Char (note that zero is an OK index) */
+typedef Char *Str;
+
+/* Pointer to string of Chars */
+typedef Char *Str_Ptr;
+
+/* Types for the fat pointer used for strings and the template it
+ points to. */
+typedef struct {int Low_Bound, High_Bound; } String_Template;
+typedef struct {const char *Array; String_Template *Bounds; }
+ __attribute ((aligned (sizeof (char *) * 2))) Fat_Pointer;
+
+/* Types for Node/Entity Kinds: */
+
+/* The reason that these are defined here in the C version, rather than in the
+ corresponding packages is that the requirement for putting bodies of
+ inlined stuff IN the C header changes the dependencies. Both sinfo.h
+ and einfo.h now reference routines defined in tree.h.
+
+ Note: these types would more naturally be defined as unsigned char, but
+ once again, the annoying restriction on bit fields for some compilers
+ bites us! */
+
+typedef unsigned int Node_Kind;
+typedef unsigned int Entity_Kind;
+
+/* Types used for Text Buffer Handling: */
+
+/* Type used for subscripts in text buffer. */
+typedef Int Text_Ptr;
+
+/* Text buffer used to hold source file or library information file. */
+typedef Char *Text_Buffer;
+
+/* Pointer to text buffer. */
+typedef Char *Text_Buffer_Ptr;
+
+/* Types used for Source Input Handling: */
+
+/* Line number type, used for storing all line numbers. */
+typedef Int Line_Number_Type;
+
+/* Column number type, used for storing all column numbers. */
+typedef Int Column_Number_Type;
+
+/* Type used to store text of a source file. */
+typedef Text_Buffer Source_Buffer;
+
+/* Pointer to source buffer. */
+typedef Text_Buffer_Ptr Source_Buffer_Ptr;
+
+/* Type used for source location. */
+typedef Text_Ptr Source_Ptr;
+
+/* Value used to indicate no source position set. */
+#define No_Location -1
+
+/* Used for Sloc in all nodes in the representation of package Standard. */
+#define Standard_Location -2
+
+/* Type used for union of all possible ID values covering all ranges */
+typedef int Union_Id;
+
+/* Range definitions for Tree Data: */
+
+#define List_Low_Bound -100000000
+#define List_High_Bound 0
+
+#define Node_Low_Bound 0
+#define Node_High_Bound 99999999
+
+#define Elist_Low_Bound 100000000
+#define Elist_High_Bound 199999999
+
+#define Elmt_Low_Bound 200000000
+#define Elmt_High_Bound 299999999
+
+#define Names_Low_Bound 300000000
+#define Names_High_Bound 399999999
+
+#define Strings_Low_Bound 400000000
+#define Strings_High_Bound 499999999
+
+#define Ureal_Low_Bound 500000000
+#define Ureal_High_Bound 599999999
+
+#define Uint_Low_Bound 600000000
+#define Uint_Table_Start 2000000000
+#define Uint_High_Bound 2099999999
+
+SUBTYPE (List_Range, Int, List_Low_Bound, List_High_Bound)
+SUBTYPE (Node_Range, Int, Node_Low_Bound, Node_High_Bound)
+SUBTYPE (Elist_Range, Int, Elist_Low_Bound, Elist_High_Bound)
+SUBTYPE (Elmt_Range, Int, Elmt_Low_Bound, Elmt_High_Bound)
+SUBTYPE (Names_Range, Int, Names_Low_Bound, Names_High_Bound)
+SUBTYPE (Strings_Range, Int, Strings_Low_Bound, Strings_High_Bound)
+SUBTYPE (Uint_Range, Int, Uint_Low_Bound, Uint_High_Bound)
+SUBTYPE (Ureal_Range, Int, Ureal_Low_Bound, Ureal_High_Bound)
+
+/* Types for Names_Table Package: */
+
+typedef Int Name_Id;
+
+/* Name_Id value for no name present. */
+#define No_Name Names_Low_Bound
+
+/* Name_Id value for bad name. */
+#define Error_Name (Names_Low_Bound + 1)
+
+/* First subscript of names table. */
+#define First_Name_Id (Names_Low_Bound + 2)
+
+/* Types for Tree Package: */
+
+/* Subscript of nodes table entry. */
+typedef Int Node_Id;
+
+/* Used in semantics for Node_Id value referencing an entity. */
+typedef Node_Id Entity_Id;
+
+/* Null node. */
+#define Empty 0
+
+/* Error node. */
+#define Error 1
+
+/* Subscript of first allocated node. */
+#define First_Node_Id Empty
+
+/* Subscript of entry in lists table. */
+typedef Int List_Id;
+
+/* Indicates absence of a list. */
+#define No_List 0
+
+/* Error list. */
+#define Error_List List_Low_Bound
+
+/* Subscript of first allocated list header. */
+#define First_List_Id Error_List
+
+/* Element list Id, subscript value of entry in lists table. */
+typedef Int Elist_Id;
+
+/* Used to indicate absence of an element list. */
+#define No_Elist Elist_Low_Bound
+
+/* Subscript of first allocated elist header */
+#define First_Elist_Id (No_Elist + 1)
+
+/* Element Id, subscript value of entry in elements table. */
+typedef Int Elmt_Id;
+
+/* Used to indicate absence of a list element. */
+#define No_Elmt Elmt_Low_Bound
+
+/* Subscript of first allocated element */
+#define First_Elmt_Id (No_Elmt + 1)
+
+/* Types for String_Table Package: */
+
+/* Subscript of strings table entry. */
+typedef Int String_Id;
+
+/* Used to indicate missing string Id. */
+#define No_String Strings_Low_Bound
+
+/* Subscript of first entry in strings table. */
+#define First_String_Id (No_String + 1)
+
+/* Types for Uint_Support Package: */
+
+/* Type used for representation of universal integers. */
+typedef Int Uint;
+
+/* Used to indicate missing Uint value. */
+#define No_Uint Uint_Low_Bound
+
+/* Base value used to represent Uint values. */
+#define Base 32768
+
+/* Minimum and maximum integers directly representable as Uint values */
+#define Min_Direct (-(Base - 1))
+#define Max_Direct ((Base - 1) * (Base - 1))
+
+#define Uint_Direct_Bias (Uint_Low_Bound + Base)
+#define Uint_Direct_First (Uint_Direct_Bias + Min_Direct)
+#define Uint_Direct_Last (Uint_Direct_Bias + Max_Direct)
+
+/* Define range of direct biased values */
+SUBTYPE (Uint_Direct, Uint, Uint_Direct_First, Uint_Direct_Last)
+
+/* Constants in Uint format. */
+#define Uint_0 (Uint_Direct_Bias + 0)
+#define Uint_1 (Uint_Direct_Bias + 1)
+#define Uint_2 (Uint_Direct_Bias + 2)
+#define Uint_10 (Uint_Direct_Bias + 10)
+#define Uint_16 (Uint_Direct_Bias + 16)
+
+/* Types for Ureal_Support Package: */
+
+/* Type used for representation of universal reals. */
+typedef Int Ureal;
+
+/* Used to indicate missing Uint value. */
+#define No_Ureal Ureal_Low_Bound
+
+/* Subscript of first entry in Ureal table. */
+#define Ureal_First_Entry (No_Ureal + 1)
+
+/* Character Code Type: */
+
+/* Character code value, intended to be 32 bits. */
+typedef unsigned Char_Code;
+
+/* Types Used for Library Management: */
+
+/* Unit number. */
+typedef Int Unit_Number_Type;
+
+/* Unit number value for main unit. */
+#define Main_Unit 0
+
+/* Type used for lines table. */
+typedef Source_Ptr *Lines_Table_Type;
+
+/* Type used for pointer to lines table. */
+typedef Source_Ptr *Lines_Table_Ptr;
+
+/* Length of time stamp value. */
+#define Time_Stamp_Length 22
+
+/* Type used to represent time stamp. */
+typedef Char *Time_Stamp_Type;
+
+/* Name_Id synonym used for file names. */
+typedef Name_Id File_Name_Type;
+
+/* Constant used to indicate no file found. */
+#define No_File No_Name
+
+/* Name_Id synonym used for unit names. */
+typedef Name_Id Unit_Name_Type;
+
+/* Definitions for mechanism type and values */
+typedef Int Mechanism_Type;
+#define Default 0
+#define By_Copy (-1)
+#define By_Reference (-2)
+#define By_Descriptor (-3)
+#define By_Descriptor_UBS (-4)
+#define By_Descriptor_UBSB (-5)
+#define By_Descriptor_UBA (-6)
+#define By_Descriptor_S (-7)
+#define By_Descriptor_SB (-8)
+#define By_Descriptor_A (-9)
+#define By_Descriptor_NCA (-10)
+
+/* Definitions of Reason codes for Raise_xxx_Error nodes */
+#define CE_Access_Check_Failed 0
+#define CE_Access_Parameter_Is_Null 1
+#define CE_Discriminant_Check_Failed 2
+#define CE_Divide_By_Zero 3
+#define CE_Explicit_Raise 4
+#define CE_Index_Check_Failed 5
+#define CE_Invalid_Data 6
+#define CE_Length_Check_Failed 7
+#define CE_Null_Exception_Id 9
+#define CE_Null_Not_Allowed 9
+#define CE_Overflow_Check_Failed 10
+#define CE_Partition_Check_Failed 11
+#define CE_Range_Check_Failed 12
+#define CE_Tag_Check_Failed 13
+
+#define PE_Access_Before_Elaboration 14
+#define PE_Accessibility_Check_Failed 15
+#define PE_All_Guards_Closed 16
+#define PE_Duplicated_Entry_Address 17
+#define PE_Explicit_Raise 18
+#define PE_Finalize_Raised_Exception 19
+#define PE_Implicit_Return 20
+#define PE_Misaligned_Address_Value 21
+#define PE_Missing_Return 22
+#define PE_Overlaid_Controlled_Object 23
+#define PE_Potentially_Blocking_Operation 24
+#define PE_Stubbed_Subprogram_Called 25
+#define PE_Unchecked_Union_Restriction 26
+#define PE_Illegal_RACW_E_4_18 27
+
+#define SE_Empty_Storage_Pool 28
+#define SE_Explicit_Raise 29
+#define SE_Infinite_Recursion 30
+#define SE_Object_Too_Large 31
+#define SE_Restriction_Violation 32
+
+#define LAST_REASON_CODE 31