1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- S T A N D -- 6-- -- 7-- B o d y -- 8-- -- 9-- Copyright (C) 1992-2019, Free Software Foundation, Inc. -- 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- -- 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. -- 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/>. -- 26-- -- 27-- GNAT was originally developed by the GNAT team at New York University. -- 28-- Extensive contributions were provided by Ada Core Technologies Inc. -- 29-- -- 30------------------------------------------------------------------------------ 31 32with Elists; use Elists; 33with System; use System; 34with Tree_IO; use Tree_IO; 35 36package body Stand is 37 38 --------------- 39 -- Tree_Read -- 40 --------------- 41 42 procedure Tree_Read is 43 begin 44 Tree_Read_Data (Standard_Entity'Address, 45 Standard_Entity_Array_Type'Size / Storage_Unit); 46 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)); 50 51 Tree_Read_Int (Int (Boolean_Literals (False))); 52 Tree_Read_Int (Int (Boolean_Literals (True))); 53 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)); 59 60 -- Deal with Predefined_Float_Types, which is an Elist. We wrote the 61 -- entities out in sequence, terminated by an Empty entry. 62 63 declare 64 Elmt : Entity_Id; 65 begin 66 Predefined_Float_Types := New_Elmt_List; 67 loop 68 Tree_Read_Int (Int (Elmt)); 69 exit when Elmt = Empty; 70 Append_Elmt (Elmt, Predefined_Float_Types); 71 end loop; 72 end; 73 74 -- Remainder of special entities 75 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)); 111 end Tree_Read; 112 113 ---------------- 114 -- Tree_Write -- 115 ---------------- 116 117 procedure Tree_Write is 118 begin 119 Tree_Write_Data (Standard_Entity'Address, 120 Standard_Entity_Array_Type'Size / Storage_Unit); 121 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)); 125 126 Tree_Write_Int (Int (Boolean_Literals (False))); 127 Tree_Write_Int (Int (Boolean_Literals (True))); 128 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)); 134 135 -- Deal with Predefined_Float_Types, which is an Elist. Write the 136 -- entities out in sequence, terminated by an Empty entry. 137 138 declare 139 Elmt : Elmt_Id; 140 141 begin 142 Elmt := First_Elmt (Predefined_Float_Types); 143 while Present (Elmt) loop 144 Tree_Write_Int (Int (Node (Elmt))); 145 Next_Elmt (Elmt); 146 end loop; 147 148 Tree_Write_Int (Int (Empty)); 149 end; 150 151 -- Remainder of special entries 152 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)); 188 end Tree_Write; 189 190end Stand; 191