File: dbf\boolean_set.adb
1 --::::::::::
2 --booleset.adb
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 package body boolean_set is
12
13 function value (right: in element) return boolset is
14 tmp: boolset := (others => false);
15 begin
16 tmp (right) := true;
17 return tmp;
18 end;
19
20 function array_import (right: in object) return boolset is
21 tmp: boolset := (others => false);
22 begin
23 for n in right'range
24 loop
25 tmp (right(n)) := true;
26 end loop;
27 return tmp;
28 end;
29
30 --not-------------------------------------------------------------------
31
32 function "not" (right: in element) return boolset is
33 begin
34 return not value (right);
35 end;
36
37 --set:elm---------------------------------------------------------------
38
39 function "and" (left: in boolset; right: in element) return boolset is
40 begin
41 return left and value(right);
42 end;
43
44 function "or" (left: in boolset; right: in element) return boolset is
45 begin
46 return left or value(right);
47 end;
48
49 function "xor" (left: in boolset; right: in element) return boolset is
50 begin
51 return left xor value(right);
52 end;
53
54 --elm:set--------------------------------------------------------------
55
56 function "and" (left: in element; right: in boolset) return boolset is
57 begin
58 return value (left) and right;
59 end;
60
61 function "or" (left: in element; right: in boolset) return boolset is
62 begin
63 return value (left) or right;
64 end;
65
66 function "xor" (left: in element; right: in boolset) return boolset is
67 begin
68 return value (left) xor right;
69 end;
70
71 --elm:elm--------------------------------------------------------------
72
73 function "and" (left: in element; right: in element) return boolset is
74 begin
75 return value (left) and right;
76 end;
77
78 function "or" (left: in element; right: in element) return boolset is
79 begin
80 return value (left) or right;
81 end;
82
83 function "xor" (left: in element; right: in element) return boolset is
84 begin
85 return value (left) xor right;
86 end;
87
88 package body import_set is
89
90 --set:seq------------------------------------------------------------
91
92 function "not" (right: in object) return boolset is
93 begin
94 return not value (right);
95 end;
96
97 function "and" (left: in boolset; right: in object) return boolset is
98 begin
99 return left and value(right);
100 end;
101
102 function "or" (left: in boolset; right: in object) return boolset is
103 begin
104 return left or value(right);
105 end;
106
107 function "xor" (left: in boolset; right: in object) return boolset is
108 tmp: boolset := (others => false);
109 begin
110 return left xor value(right);
111 end;
112
113 --seq:set------------------------------------------------------------
114
115 function "and" (left: in object; right: in boolset) return boolset is
116 begin
117 return value (left) xor right;
118 end;
119
120 function "or" (left: in object; right: in boolset) return boolset is
121 begin
122 return value (left) xor right;
123 end;
124
125 function "xor" (left: in object; right: in boolset) return boolset is
126 begin
127 return value (left) xor right;
128 end;
129
130 --seq:elm------------------------------------------------------------
131
132 function "and" (left: in object; right: in element) return boolset is
133 begin
134 return value (left) and value(right);
135 end;
136
137 function "or" (left: in object; right: in element) return boolset is
138 begin
139 return value (left) or value(right);
140 end;
141
142 function "xor" (left: in object; right: in element) return boolset is
143 begin
144 return value (left) xor value(right);
145 end;
146
147 --elm:seq------------------------------------------------------------
148
149 function "and" (left: in element; right: in object) return boolset is
150 tmp: boolset := (others => false);
151 begin
152 return value (left) and value(right);
153 end;
154
155 function "or" (left: in element; right: in object) return boolset is
156 begin
157 return value (left) or value(right);
158 end;
159
160 function "xor" (left: in element; right: in object) return boolset is
161 begin
162 return value (left) xor value(right);
163 end;
164
165 --seq:seq------------------------------------------------------------
166
167 function "and" (left: in object; right: in object) return boolset is
168 tmp: boolset := (others => false);
169 begin
170 return value (left) and right;
171 end;
172
173 function "or" (left: in object; right: in object) return boolset is
174 begin
175 return value (left) or right;
176 end;
177
178 function "xor" (left: in object; right: in object) return boolset is
179 begin
180 return value (left) xor right;
181 end;
182 end;
183 end;
184