]>
Commit | Line | Data |
---|---|---|
415dddc8 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- T R E E _ I O -- | |
6 | -- -- | |
7 | -- S p e c -- | |
8 | -- -- | |
415dddc8 RK |
9 | -- Copyright (C) 1992-1999 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 2, 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. See the GNU General Public License -- | |
17 | -- for more details. You should have received a copy of the GNU General -- | |
18 | -- Public License distributed with GNAT; see file COPYING. If not, write -- | |
19 | -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- | |
20 | -- MA 02111-1307, USA. -- | |
21 | -- -- | |
22 | -- As a special exception, if other files instantiate generics from this -- | |
23 | -- unit, or you link this unit with other files to produce an executable, -- | |
24 | -- this unit does not by itself cause the resulting executable to be -- | |
25 | -- covered by the GNU General Public License. This exception does not -- | |
26 | -- however invalidate any other reasons why the executable file might be -- | |
27 | -- covered by the GNU Public License. -- | |
28 | -- -- | |
29 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 30 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
415dddc8 RK |
31 | -- -- |
32 | ------------------------------------------------------------------------------ | |
33 | ||
34 | -- This package contains the routines used to read and write the tree files | |
35 | -- used by ASIS. Only the actual read and write routines are here. The open, | |
36 | -- create and close routines are elsewhere (in Osint in the compiler, and in | |
37 | -- the tree read driver for the tree read interface). | |
38 | ||
39 | with GNAT.OS_Lib; use GNAT.OS_Lib; | |
40 | with System; use System; | |
41 | with Types; use Types; | |
42 | ||
43 | package Tree_IO is | |
44 | ||
45 | Tree_Format_Error : exception; | |
46 | -- Raised if a format error is detected in the input file | |
47 | ||
48 | procedure Tree_Read_Initialize (Desc : File_Descriptor); | |
49 | -- Called to initialize reading of a tree file. This call must be made | |
50 | -- before calls to Tree_Read_xx. No calls to Tree_Write_xx are permitted | |
51 | -- after this call. | |
52 | ||
53 | procedure Tree_Read_Data (Addr : Address; Length : Int); | |
54 | -- Checks that the Length provided is the same as what has been provided | |
55 | -- to the corresponding Tree_Write_Data from the current tree file, | |
56 | -- Tree_Format_Error is raised if it is not the case. If Length is | |
57 | -- correct and non zero, reads Length bytes of information into memory | |
58 | -- starting at Addr from the current tree file. | |
59 | ||
60 | procedure Tree_Read_Bool (B : out Boolean); | |
61 | -- Reads a single boolean value. The boolean value must have been written | |
62 | -- with a call to the Tree_Write_Bool procedure. | |
63 | ||
64 | procedure Tree_Read_Char (C : out Character); | |
65 | -- Reads a single character. The character must have been written with a | |
66 | -- call to the Tree_Write_Char procedure. | |
67 | ||
68 | procedure Tree_Read_Int (N : out Int); | |
69 | -- Reads a single integer value. The integer must have been written with | |
70 | -- a call to the Tree_Write_Int procedure. | |
71 | ||
72 | procedure Tree_Read_Str (S : out String_Ptr); | |
73 | -- Read string, allocate on heap, and return pointer to allocated string | |
74 | -- which always has a lower bound of 1. | |
75 | ||
76 | procedure Tree_Read_Terminate; | |
77 | -- Called after reading all data, checks that the buffer pointers is at | |
78 | -- the end of file, raising Tree_Format_Error if not. | |
79 | ||
80 | procedure Tree_Write_Initialize (Desc : File_Descriptor); | |
81 | -- Called to initialize writing of a tree file. This call must be made | |
82 | -- before calls to Tree_Write_xx. No calls to Tree_Read_xx are permitted | |
83 | -- after this call. | |
84 | ||
85 | procedure Tree_Write_Data (Addr : Address; Length : Int); | |
86 | -- Writes Length then, if Length is not null, Length bytes of data | |
87 | -- starting at Addr to current tree file | |
88 | ||
89 | procedure Tree_Write_Bool (B : Boolean); | |
90 | -- Writes a single boolean value to the current tree file | |
91 | ||
92 | procedure Tree_Write_Char (C : Character); | |
93 | -- Writes a single character to the current tree file | |
94 | ||
95 | procedure Tree_Write_Int (N : Int); | |
96 | -- Writes a single integer value to the current tree file | |
97 | ||
98 | procedure Tree_Write_Str (S : String_Ptr); | |
99 | -- Write out string value referenced by S. Low bound must be 1. | |
100 | ||
101 | procedure Tree_Write_Terminate; | |
102 | -- Terminates writing of the file (flushing the buffer), but does not | |
103 | -- close the file (the caller is responsible for closing the file). | |
104 | ||
105 | end Tree_IO; |