blob: 86e50cb47e61457cfb16a8ebda521f4b69e81601 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
program opoverload;
{$mode objfpc}
const
IntValue1 = $1;
IntValue2 = $2;
IntValue3 = $4;
type
TMyEnum = (Value1, Value2, Value3);
TMySet = set of TMyEnum;
operator := (aRight: LongWord) aLeft: TMySet;
begin
aLeft := [];
if aRight and IntValue1 <> 0 then
Include(aLeft, Value1);
if aRight and IntValue2 <> 0 then
Include(aLeft, Value2);
if aRight and IntValue3 <> 0 then
Include(aLeft, Value3);
end;
operator := (aRight: TMySet) aLeft: LongWord;
begin
aLeft := 0;
if Value1 in aRight then
aLeft := aLeft or IntValue1;
if Value2 in aRight then
aLeft := aLeft or IntValue2;
if Value3 in aRight then
aLeft := aLeft or IntValue3;
end;
var
i: LongWord;
t: TMySet;
begin
i := IntValue1 or IntValue3;
t := i;
if t<>[value1,value3] then
halt(1);
i:=0;
i:=t;
if i<>(IntValue1 or IntValue3) then
halt(2);
end.
|