2004-04-19 Arnaud Charlet <charlet@act-europe.fr> * 5isystem.ads: Removed, unused. * gnat_rm.texi: Redo 1.13 change. 2004-04-19 Robert Dewar <dewar@gnat.com> * s-stoele.ads: Clean up definition of Storage_Offset (the new definition is cleaner, avoids the kludge of explicit Standard operator references, and also is consistent with a visible System.Address with no visible operations. * s-geveop.adb: Add declarations to avoid assumption of visible operations on type System.Address (since these might not be available if Address is a non-private type for which the operations are made abstract). * sem_eval.adb: Minor reformatting * s-carsi8.ads, s-carun8.ads, s-casi16.ads, s-casi32.ads, s-casi64.ads, s-caun16.ads, s-caun32.ads, s-caun64.ads: Minor reformatting (new function spec format). * s-auxdec.adb, s-carsi8.adb, s-carun8.adb, s-casi16.adb, s-casi32.adb, s-casi64.adb, s-caun16.adb, s-caun32.adb, s-caun64.adb: Add declarations to avoid assumption of visible operations on type System.Address (since these might not be available if Address is a non-private type for which the operations are made abstract). * lib.ads, lib.adb (Synchronize_Serial_Number): New procedure. * exp_intr.adb: Minor comment update * exp_aggr.adb, exp_attr.adb, exp_ch13.adb: Minor reformatting. * 5omastop.adb: Add declarations to avoid assumption of visible operations on type System.Address (since these might not be available if Address is a non-private type for which the operations are made abstract). 2004-04-19 Vincent Celier <celier@gnat.com> * switch-m.adb: (Scan_Make_Switches): Process new switch -eL * prj-pars.ads (Parse): New Boolean parameter Process_Languages, defaulted to Ada. * prj-proc.adb (Process): New Boolean parameter Process_Languages, defaulted to Ada. Call Check with Process_Languages. (Check): New Boolean parameter Process_Languages. Call Recursive_Check with Process_Languages. (Recursive_Check): New Boolean parameter Process_Languages. Call Nmsc.Ada_Check or Nmsc.Other_Languages_Check according to Process_Languages. * prj-proc.ads (Process): New Boolean parameter Process_Languages, * prj-util.ads, prj-util.adb (Executable_Of): New Boolean parameter Ada_Main, defaulted to True. Check for Ada specific characteristics only when Ada_Main is True. * opt.ads: (Follow_Links): New Boolean flag for gnatmake * prj.adb: (Project_Empty): Add new Project_Data components. * prj.ads: New types and tables for non Ada languages. (Project_Data): New components Languages, Impl_Suffixes, First_Other_Source, Last_Other_Source, Imported_Directories_Switches, Include_Path, Include_Data_Set. * prj-env.ads, prj-env.adb: Minor reformatting * prj-nmsc.ads, prj-nmsc.adb: (Other_Languages_Check): New procedure Put subprograms in alphabetical order * prj-pars.adb (Parse): New Boolean parameter Process_Languages, defaulted to Ada; Call Prj.Proc.Process with Process_Languages and Opt.Follow_Links. * mlib-prj.adb: Back out modification in last version, as they are incorrect. (Build_Library.Check_Libs): Remove useless pragma Warnings (Off) * make.adb: (Mains): Moved to package Makeutl (Linker_Opts): Moved to package Makeutl (Is_External_Assignment): Moved to package Makeutl (Test_If_Relative_Path): Moved to package Makeutl (Gnatmake): Move sorting of linker options to function Makeutl.Linker_Options_Switches. * Makefile.in: Add makeutl.o to the object files for gnatmake * makeusg.adb: Add line for new switch -eL. * gnatls.adb (Image): New function. (Output_Unit): If in verbose mode, output the list of restrictions specified by pragmas Restrictions. * 5bml-tgt.adb, 5vml-tgt.adb (Build_Dynamic_Library): Do not use Text_IO. * a-calend.adb (Split): Shift the date by multiple of 56 years, if needed, to put it in the range 1970 (included) - 2026 (excluded). (Time_Of): Do not shift Unix_Min_Year (1970). Shift the date by multiple of 56 years, if needed, to put it in the range 1970 (included) - 2026 (excluded). * adaint.h, adaint.c (__gnat_set_executable): New function. 2004-04-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * trans.c (tree_transform, case N_Subprogram_Body): Temporarily push and pop GC context. (tree_transform, case N_Procedure_Call): Fix typo in setting TREE_TYPE. (tree_transform, case N_Label): Don't set LABEL_STMT_FIRST_IN_EH. (tree_transform, case N_Procedure_Call_Statement): Build a tree. (tree_transform, case N_Code_Statement): Likewise. (gnat_expand_stmt, case LABEL_STMT): Don't look at LABEL_STMT_FIRST_IN_EH. (gnat_expand_stmt, case ASM_STMT): New case. * utils2.c (build_unary_op): Properly set TREE_READONLY of UNCONSTRAINED_ARRAY_REF. * utils.c (poplevel): Temporarily push/pop GC context around inline function expansion. * decl.c (maybe_variable): Properly set TREE_READONLY of UNCONSTRAINED_ARRAY_REF. (make_packable_type): Only reference TYPE_IS_PADDING_P for RECORD_TYPE. * ada-tree.def: (ASM_STMT): New. * ada-tree.h: (LABEL_STMT_FIRST_IN_EH): Deleted. (ASM_STMT_TEMPLATE, ASM_STMT_OUTPUT, ASM_STMT_ORIG_OUT, ASM_STMT_INPUT): New. (ASM_STMT_CLOBBER): Likewise. 2004-04-19 Thomas Quinot <quinot@act-europe.fr> * a-except.adb, s-parint.ads, s-parint.adb, types.ads, types.h: Use general rcheck mechanism to raise Program_Error for E.4(18), instead of a custom raiser in System.Partition_Interface. Part of general cleanup work before PolyORB integration. * snames.ads, snames.adb: Add new runtime library entities and names for PolyORB DSA. * sem_dist.ads, sem_dist.adb (Get_Subprogram_Id): Move from sem_dist to exp_dist. (Build_Subprogram_Id): New subprogram provided by exp_dist Code reorganisation in preparation for PolyORB integration. * exp_dist.ads, exp_dist.adb (Get_Subprogram_Id): Move from sem_dist to exp_dist. (Build_Subprogram_Id): New subprogram provided by exp_dist * sem_ch4.adb (Analyze_One_Call): Fix error message for mismatch in actual parameter types for call to dereference of an access-to-subprogram type. * rtsfind.ads: Add new runtime library entities and names for PolyORB DSA. * gnatlink.adb (Value): Remove. Use Interfaces.C.Strings.Value instead, which has the same behaviour here since we never pass it a NULL pointer. * link.c (run_path_option, Solaris case): Use -Wl, as for other platforms. * Makefile.in: adjust object file lists for gnatlink and gnatmake to account for new dependency upon Interfaces.C.Strings + link.o For x86 FreeBSD, use 86numaux. * make.adb, gnatcmd.adb: Linker_Library_Path_Option has been moved up from Mlib.Tgt to Mlib. * mlib.ads, mlib.adb (Linker_Library_Path_Option): New subprogram, now target-independent. * mlib-tgt.ads, mlib-tgt.adb (Linker_Library_Path_Option): Remove target-specific versions of this subprogram, now implemented as a target-independent function in Mlib. * 5aml-tgt.adb, 5bml-tgt.adb, 5gml-tgt.adb, 5hml-tgt.adb, 5lml-tgt.adb, 5sml-tgt.adb, 5vml-tgt.adb, 5zml-tgt.adb, 5wml-tgt.adb (Linker_Library_Path_Option): Remove target-specific versions of this subprogram, now implemented as a target-independent function in Mlib. * atree.adb: (Allocate_Initialize_Node): New subprogram. Factors out node table slots allocation. (Fix_Parents): New subprogram. Encapsulate the pattern of fixing up parent pointers for syntactic children of a rewritten node. (New_Copy_Tree): Use New_Copy to copy non-entity nodes. (Rewrite): Use New_Copy when creating saved copy of original node. (Replace): Use Copy_Node to copy nodes. 2004-04-19 Javier Miranda <miranda@gnat.com> * sprint.adb (Sprint_Node_Actual): Give support to the new Access_To_Subprogram node available in Access_Definition nodes. In addition, give support to the AI-231 node fields: null-exclusion, all-present, constant-present. * sem_util.ads, sem_util.adb: (Has_Declarations): New subprogram * sinfo.ads, sinfo.adb: New field Access_To_Subprogram_Definition in Access_Definition nodes * sem_ch6.adb (Process_Formals): Move here the code that creates and decorates internal subtype declaration corresponding to the null-excluding formal. This code was previously in Set_Actual_Subtypes. In addition, carry out some code cleanup on this code. In case of access to protected subprogram call Replace_Anonymous_Access_To_Protected_Subprogram. (Set_Actual_Subtypes): Code cleanup. * sem_ch8.adb (Analyze_Object_Renaming): Remove un-necessary call to Find_Type in case of anonymous access renamings. Add warning in case of null-excluding attribute used in anonymous access renaming. * sem_ch3.ads (Replace_Anonymous_Access_To_Protected_Subprogram): New subprogram * sem_ch3.adb (Replace_Anonymous_Access_To_Protected_Subprogram): New subprogram. (Access_Definition): In case of anonymous access to subprograms call the corresponding semantic routine to decorate the node. (Access_Subprogram_Declaration): Addition of some comments indicating some code that probably should be added here. Detected by comparison with the access_definition subprogram. (Analyze_Component_Declaration): In case of access to protected subprogram call Replace_Anonymous_Access_To_Protected. (Array_Type_Declaration): In case of access to protected subprogram call Replace_Anonymous_Access_To_Protected_Subprogram. (Process_Discriminants): In case of access to protected subprogram call Replace_Anonymous_Access_To_Protected_Subprogram. * par.adb (P_Access_Definition): New formal that indicates if the null-exclusion part was present. (P_Access_Type_Definition): New formal that indicates if the caller has already parsed the null-excluding part. * par-ch3.adb (P_Subtype_Declaration): Code cleanup. (P_Identifier_Declarations): Code cleanup and give support to renamings of anonymous access to subprogram types. (P_Derived_Type_Def_Or_Private_Ext_Decl): Code cleanup. (P_Array_Type_Definition): Give support to AI-254. (P_Component_Items): Give support to AI-254. (P_Access_Definition): New formal that indicates if the header was already parsed by the caller. (P_Access_Type_Definition): New formal that indicates if the caller has already parsed the null-excluding part. * par-ch6.adb (P_Formal_Part): Add the null-excluding parameter to the call to P_Access_Definition. 2004-04-19 Geert Bosch <bosch@gnat.com> * checks.adb (Apply_Float_Conversion_Check): New procedure to implement the delicate semantics of floating-point to integer conversion. (Apply_Type_Conversion_Checks): Use Apply_Float_Conversion_Check. * eval_fat.adb (Machine_Mantissa): Moved to spec. (Machine_Radix): New function. * eval_fat.ads (Machine_Mantissa): Moved from body for use in conversion checks. (Machine_Radix): New function also for use in conversion checks. 2004-04-19 Ed Schonberg <schonberg@gnat.com> * par-prag.adb (Source_File_Name_Project): Fix typo in error message. * exp_ch9.adb (Expand_Access_Protected_Subprogram_Type): Call analyze to decorate the access-to-protected subprogram and the equivalent type. * checks.adb (Null_Exclusion_Static_Checks): Code cleanup. Give support to anonymous access to subprogram types. * exp_ch4.adb (Expand_N_In): Preserve Static flag before constant-folding, for legality checks in contexts that require an RM static expression. * exp_ch6.adb (Expand_N_Function_Call): If call may generate large temporary but stack checking is not enabled, increment serial number to so that symbol generation is consistent with and without stack checking. * exp_util.ads, exp_util.adb (May_Generate_Large_Temp): Predicate is independent on whether stack checking is enabled, caller must check the corresponding flag. * sem_ch3.adb (Constrain_Index): Index bounds given by attributes need range checks. (Build_Derived_Concurrent_Type): Inherit Is_Constrained flag from parent if it has discriminants. (Build_Derived_Private_Type): Constructed full view does not come from source. (Process_Discriminants): Default discriminants on a tagged type are legal if this is the internal completion of a private untagged derivation. * sem_ch6.adb (Set_Actual_Subtypes): The generated declaration needs no constraint checks, because it corresponds to an existing object. * sem_prag.adb (Process_Convention): Pragma applies only to subprograms in the same declarative part, i.e. the same unit, not the same scope. * sem_res.adb (Valid_Conversion): In an instance or inlined body, ignore type mismatch on a numeric conversion if expression comes from expansion. 2004-04-19 Sergey Rybin <rybin@act-europe.fr> * sem_elim.adb (Process_Eliminate_Pragma): Remove the processing for Homonym_Number parameter, add processing for Source_Location parameter corresponding. (Check_Eliminated): Remove the check for homonym numbers, add the check for source location traces. * sem_elim.ads (Process_Eliminate_Pragma): Replace Arg_Homonym_Number with Arg_Source_Location corresponding to the changes in the format of the pragma. * sem_prag.adb: (Analyze_Pragma): Changes in the processing of Eliminate pragma corresponding to the changes in the format of the pragma: Homonym_Number is replaced with Source_Location, two ways of distinguishing homonyms are mutially-exclusive. 2004-04-19 Joel Brobecker <brobecker@gnat.com> * get_targ.ads (Get_No_Dollar_In_Label): Remove. * exp_dbug.adb (Output_Homonym_Numbers_Suffix): Remove use of No_Dollar_In_Label, no longer necessary, as it is always True. (Strip_Suffixes): Likewise. 2004-04-19 Gary Dismukes <dismukes@gnat.com> * s-stalib.ads (type Exception_Code): Use Integer'Size for exponent of modulus for compatibility with size clause on targets with 16-bit Integer. * layout.adb (Discrimify): In the case of private types, set Vtyp to full type to fix type mismatches on calls to size functions for discriminant-dependent array components. 2004-04-19 Jerome Guitton <guitton@act-europe.fr> * Makefile.in (gnatlib-zcx): New target, for building a ZCX run-time lib. 2004-04-19 Pascal Obry <obry@gnat.com> * mdll-utl.adb (Locate): New version is idempotent. From-SVN: r80856
368 lines
12 KiB
C
368 lines
12 KiB
C
/****************************************************************************
|
|
* *
|
|
* GNAT COMPILER COMPONENTS *
|
|
* *
|
|
* T Y P E S *
|
|
* *
|
|
* C Header File *
|
|
* *
|
|
* Copyright (C) 1992-2004, 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, 59 Temple Place - Suite 330, Boston, *
|
|
* MA 02111-1307, 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
|
|
|
|
#define Char_Code_Bias 2100000000
|
|
|
|
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)
|
|
SUBTYPE (Char_Code_Range, Int, Char_Code_Bias, (Char_Code_Bias + 65535))
|
|
|
|
/* 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 16 bits. */
|
|
typedef short 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_Overflow_Check_Failed 8
|
|
#define CE_Partition_Check_Failed 9
|
|
#define CE_Range_Check_Failed 10
|
|
#define CE_Tag_Check_Failed 11
|
|
#define PE_Access_Before_Elaboration 12
|
|
#define PE_Accessibility_Check_Failed 13
|
|
#define PE_All_Guards_Closed 14
|
|
#define PE_Duplicated_Entry_Address 15
|
|
#define PE_Explicit_Raise 16
|
|
#define PE_Finalize_Raised_Exception 17
|
|
#define PE_Misaligned_Address_Value 18
|
|
#define PE_Missing_Return 19
|
|
#define PE_Overlaid_Controlled_Object 20
|
|
#define PE_Potentially_Blocking_Operation 21
|
|
#define PE_Stubbed_Subprogram_Called 22
|
|
#define PE_Unchecked_Union_Restriction 23
|
|
#define PE_Illegal_RACW_E_4_18 24
|
|
#define SE_Empty_Storage_Pool 25
|
|
#define SE_Explicit_Raise 26
|
|
#define SE_Infinite_Recursion 27
|
|
#define SE_Object_Too_Large 28
|
|
#define SE_Restriction_Violation 29
|
|
|
|
#define LAST_REASON_CODE 29
|