File: dbf\dbase_io.ads
1 --::::::::::
2 --dbase_io.ads
3 --::::::::::
4 -- Developed by (C) Wasiliy W. Molostoff 1994, 1995.
5 -- Moscow, Russia,
6 -- Voice: 7 (095) 398-23-38
7 -- e-mail: edv@edv.msk.ru
8 -- This is free software; you can freely redistribute it and/or
9 -- modify it without any restrictions. Please report any errors.
10 -- All corrections will be made as soon as possible.
11 with db_file_io, unsigned, calendar;
12 use unsigned, calendar;
13
14 package dbase_io is
15
16 type col_attribute is (db_character, db_numeric, db_date,
17 db_boolean, db_memo, db_unknown);
18
19 subtype row_attribute is boolean;
20
21 col_data_error: exception;
22 row_data_error: exception;
23 tab_data_error: exception;
24
25 type col_stat is
26 record
27 attrib : col_attribute := db_unknown ; --
28 length : natural := 0 ; --
29 align : natural := 0 ; --
30 end record;
31
32 type file_mode is new db_file_io.file_mode;
33 type count is new db_file_io.count;
34 subtype positive_count is count range 1..count'last;
35 --- type positive_count is new db_file_io.positive_count;
36
37 generic
38 type identify is (<>);
39 package table_io is
40
41 type table is array (identify) of col_stat;
42
43 type file_type is limited private;
44
45 procedure create (file: in out file_type;
46 cols: in table;
47 name: in string := "";
48 form: in string := "");
49
50 procedure open (file: in out file_type;
51 mode: in file_mode;
52 name: in string;
53 form: in string := "");
54
55 procedure reset (file: in out file_type);
56 procedure reset (file: in out file_type; mode: in file_mode);
57 procedure close (file: in out file_type);
58 function mode (file: in file_type) return file_mode;
59 function name (file: in file_type) return string;
60 function form (file: in file_type) return string;
61 function is_open (file: in file_type) return boolean;
62
63 function tab_updated (file: in file_type) return time;
64 function tab_length (file: in file_type) return count;
65 procedure get_table (file: in file_type; tab: in out table);
66
67 procedure row_attrib (file: in out file_type;
68 new_attr: in row_attribute);
69 function row_attrib (file: in file_type) return row_attribute;
70 procedure row_index (file: in out file_type;
71 to: in positive_count);
72 function row_index (file: in file_type) return positive_count;
73
74 procedure col_align (file: in out file_type;
75 name: in identify;
76 new_align: in natural);
77
78 procedure col_attrib (file: in out file_type;
79 name: in identify;
80 new_attr: in col_attribute);
81
82 function col_align (file: in file_type;
83 from: in identify) return natural;
84 function col_attrib (file: in file_type;
85 from: in identify) return col_attribute;
86 function col_length (file: in file_type;
87 from: in identify) return natural;
88 function col_index (file: in file_type;
89 from: in identify) return natural;
90 function col_exist (file: in file_type;
91 name: in identify) return boolean;
92 function col_count (file: in file_type) return positive;
93
94
95 procedure get (file: in out file_type;
96 name: in identify;
97 item: out byte_string);
98
99 procedure put (file: in out file_type;
100 name: in identify;
101 item: in byte_string);
102
103 procedure get (file: in out file_type;
104 name: in identify;
105 item: out string);
106
107 procedure put (file: in out file_type;
108 name: in identify;
109 item: in string);
110
111 procedure get (file: in out file_type;
112 name: in identify;
113 item: out boolean);
114
115 procedure put (file: in out file_type;
116 name: in identify;
117 item: in boolean);
118
119 procedure get (file: in out file_type;
120 name: in identify;
121 item: out time);
122
123 procedure put (file: in out file_type;
124 name: in identify;
125 item: in time);
126 generic
127 type num is range <>;
128 package integer_io is
129 procedure get (file: in out file_type;
130 name: in identify;
131 item: out num);
132
133 procedure put (file: in out file_type;
134 name: in identify;
135 item: in num);
136 end integer_io;
137
138 generic
139 type num is delta <>;
140 package fixed_io is
141 procedure get (file: in out file_type;
142 name: in identify; item: out num);
143
144 procedure put (file: in out file_type;
145 name: in identify;
146 item: in num);
147 end fixed_io;
148
149 generic
150 type enum is (<>);
151 package enumeration_io is
152 procedure get (file: in out file_type;
153 name: in identify;
154 item: out enum);
155
156 procedure put (file: in out file_type;
157 name: in identify;
158 item: in enum);
159 end enumeration_io;
160
161 private
162 type col_location is array (identify) of natural;
163 type file_type is
164 record
165 file: db_file_io.file_type;
166 count: positive;
167 where: col_location;
168 end record;
169 end table_io;
170
171 end dbase_io;
172