1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 1992-2018, Free Software Foundation, Inc. --
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- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
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 --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
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. --
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/>. --
27 -- GNAT was originally developed by the GNAT team at New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
30 ------------------------------------------------------------------------------
32 with Elists
; use Elists
;
33 with System
; use System
;
34 with Tree_IO
; use Tree_IO
;
42 procedure Tree_Read
is
44 Tree_Read_Data
(Standard_Entity
'Address,
45 Standard_Entity_Array_Type
'Size / Storage_Unit
);
47 Tree_Read_Int
(Int
(Standard_Package_Node
));
48 Tree_Read_Int
(Int
(Last_Standard_Node_Id
));
49 Tree_Read_Int
(Int
(Last_Standard_List_Id
));
51 Tree_Read_Int
(Int
(Boolean_Literals
(False)));
52 Tree_Read_Int
(Int
(Boolean_Literals
(True)));
54 Tree_Read_Int
(Int
(Standard_Void_Type
));
55 Tree_Read_Int
(Int
(Standard_Exception_Type
));
56 Tree_Read_Int
(Int
(Standard_A_String
));
57 Tree_Read_Int
(Int
(Standard_A_Char
));
58 Tree_Read_Int
(Int
(Standard_Debug_Renaming_Type
));
60 -- Deal with Predefined_Float_Types, which is an Elist. We wrote the
61 -- entities out in sequence, terminated by an Empty entry.
66 Predefined_Float_Types
:= New_Elmt_List
;
68 Tree_Read_Int
(Int
(Elmt
));
69 exit when Elmt
= Empty
;
70 Append_Elmt
(Elmt
, Predefined_Float_Types
);
74 -- Remainder of special entities
76 Tree_Read_Int
(Int
(Any_Id
));
77 Tree_Read_Int
(Int
(Any_Type
));
78 Tree_Read_Int
(Int
(Any_Access
));
79 Tree_Read_Int
(Int
(Any_Array
));
80 Tree_Read_Int
(Int
(Any_Boolean
));
81 Tree_Read_Int
(Int
(Any_Character
));
82 Tree_Read_Int
(Int
(Any_Composite
));
83 Tree_Read_Int
(Int
(Any_Discrete
));
84 Tree_Read_Int
(Int
(Any_Fixed
));
85 Tree_Read_Int
(Int
(Any_Integer
));
86 Tree_Read_Int
(Int
(Any_Modular
));
87 Tree_Read_Int
(Int
(Any_Numeric
));
88 Tree_Read_Int
(Int
(Any_Real
));
89 Tree_Read_Int
(Int
(Any_Scalar
));
90 Tree_Read_Int
(Int
(Any_String
));
91 Tree_Read_Int
(Int
(Raise_Type
));
92 Tree_Read_Int
(Int
(Universal_Integer
));
93 Tree_Read_Int
(Int
(Universal_Real
));
94 Tree_Read_Int
(Int
(Universal_Fixed
));
95 Tree_Read_Int
(Int
(Standard_Integer_8
));
96 Tree_Read_Int
(Int
(Standard_Integer_16
));
97 Tree_Read_Int
(Int
(Standard_Integer_32
));
98 Tree_Read_Int
(Int
(Standard_Integer_64
));
99 Tree_Read_Int
(Int
(Standard_Short_Short_Unsigned
));
100 Tree_Read_Int
(Int
(Standard_Short_Unsigned
));
101 Tree_Read_Int
(Int
(Standard_Unsigned
));
102 Tree_Read_Int
(Int
(Standard_Long_Unsigned
));
103 Tree_Read_Int
(Int
(Standard_Long_Long_Unsigned
));
104 Tree_Read_Int
(Int
(Standard_Unsigned_64
));
105 Tree_Read_Int
(Int
(Abort_Signal
));
106 Tree_Read_Int
(Int
(Standard_Op_Rotate_Left
));
107 Tree_Read_Int
(Int
(Standard_Op_Rotate_Right
));
108 Tree_Read_Int
(Int
(Standard_Op_Shift_Left
));
109 Tree_Read_Int
(Int
(Standard_Op_Shift_Right
));
110 Tree_Read_Int
(Int
(Standard_Op_Shift_Right_Arithmetic
));
117 procedure Tree_Write
is
119 Tree_Write_Data
(Standard_Entity
'Address,
120 Standard_Entity_Array_Type
'Size / Storage_Unit
);
122 Tree_Write_Int
(Int
(Standard_Package_Node
));
123 Tree_Write_Int
(Int
(Last_Standard_Node_Id
));
124 Tree_Write_Int
(Int
(Last_Standard_List_Id
));
126 Tree_Write_Int
(Int
(Boolean_Literals
(False)));
127 Tree_Write_Int
(Int
(Boolean_Literals
(True)));
129 Tree_Write_Int
(Int
(Standard_Void_Type
));
130 Tree_Write_Int
(Int
(Standard_Exception_Type
));
131 Tree_Write_Int
(Int
(Standard_A_String
));
132 Tree_Write_Int
(Int
(Standard_A_Char
));
133 Tree_Write_Int
(Int
(Standard_Debug_Renaming_Type
));
135 -- Deal with Predefined_Float_Types, which is an Elist. Write the
136 -- entities out in sequence, terminated by an Empty entry.
142 Elmt
:= First_Elmt
(Predefined_Float_Types
);
143 while Present
(Elmt
) loop
144 Tree_Write_Int
(Int
(Node
(Elmt
)));
148 Tree_Write_Int
(Int
(Empty
));
151 -- Remainder of special entries
153 Tree_Write_Int
(Int
(Any_Id
));
154 Tree_Write_Int
(Int
(Any_Type
));
155 Tree_Write_Int
(Int
(Any_Access
));
156 Tree_Write_Int
(Int
(Any_Array
));
157 Tree_Write_Int
(Int
(Any_Boolean
));
158 Tree_Write_Int
(Int
(Any_Character
));
159 Tree_Write_Int
(Int
(Any_Composite
));
160 Tree_Write_Int
(Int
(Any_Discrete
));
161 Tree_Write_Int
(Int
(Any_Fixed
));
162 Tree_Write_Int
(Int
(Any_Integer
));
163 Tree_Write_Int
(Int
(Any_Modular
));
164 Tree_Write_Int
(Int
(Any_Numeric
));
165 Tree_Write_Int
(Int
(Any_Real
));
166 Tree_Write_Int
(Int
(Any_Scalar
));
167 Tree_Write_Int
(Int
(Any_String
));
168 Tree_Write_Int
(Int
(Raise_Type
));
169 Tree_Write_Int
(Int
(Universal_Integer
));
170 Tree_Write_Int
(Int
(Universal_Real
));
171 Tree_Write_Int
(Int
(Universal_Fixed
));
172 Tree_Write_Int
(Int
(Standard_Integer_8
));
173 Tree_Write_Int
(Int
(Standard_Integer_16
));
174 Tree_Write_Int
(Int
(Standard_Integer_32
));
175 Tree_Write_Int
(Int
(Standard_Integer_64
));
176 Tree_Write_Int
(Int
(Standard_Short_Short_Unsigned
));
177 Tree_Write_Int
(Int
(Standard_Short_Unsigned
));
178 Tree_Write_Int
(Int
(Standard_Unsigned
));
179 Tree_Write_Int
(Int
(Standard_Long_Unsigned
));
180 Tree_Write_Int
(Int
(Standard_Long_Long_Unsigned
));
181 Tree_Write_Int
(Int
(Standard_Unsigned_64
));
182 Tree_Write_Int
(Int
(Abort_Signal
));
183 Tree_Write_Int
(Int
(Standard_Op_Rotate_Left
));
184 Tree_Write_Int
(Int
(Standard_Op_Rotate_Right
));
185 Tree_Write_Int
(Int
(Standard_Op_Shift_Left
));
186 Tree_Write_Int
(Int
(Standard_Op_Shift_Right
));
187 Tree_Write_Int
(Int
(Standard_Op_Shift_Right_Arithmetic
));