Subversion Repositories Kolibri OS

Rev

Rev 7693 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7693 Rev 7696
Line 1... Line 1...
1
(*
1
(*
2
    BSD 2-Clause License
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    Copyright (c) 2018, 2019, Anton Krotov
4
    Copyright (c) 2018-2019, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 44... Line 44...
44
VAR
44
VAR
45
    res: INTEGER;
45
    res: INTEGER;
Line 46... Line 46...
46
 
46
 
Line 47... Line -...
47
BEGIN
-
 
48
 
-
 
49
    IF v.typ = tINTEGER THEN
47
BEGIN
50
        res := v.int
-
 
51
    ELSIF v.typ = tCHAR THEN
48
 
52
        res := v.int
49
    CASE v.typ OF
53
    ELSIF v.typ = tWCHAR THEN
50
    |tINTEGER, tCHAR, tWCHAR:
54
        res := v.int
51
        res := v.int
55
    ELSIF v.typ = tSET THEN
52
    |tSET:
56
        res := UTILS.Long(ORD(v.set))
53
        res := UTILS.Long(ORD(v.set))
57
    ELSIF v.typ = tBOOLEAN THEN
54
    |tBOOLEAN:
Line 58... Line 55...
58
        res := ORD(v.bool)
55
        res := ORD(v.bool)
59
    END
56
    END
Line 78... Line 75...
78
END Float;
75
END Float;
Line 79... Line 76...
79
 
76
 
80
 
77
 
81
PROCEDURE check* (v: VALUE): BOOLEAN;
78
PROCEDURE check* (v: VALUE): BOOLEAN;
Line 82... Line 79...
82
VAR
79
VAR
83
    error: BOOLEAN;
80
    res: BOOLEAN;
84
 
-
 
85
BEGIN
81
 
86
    error := FALSE;
-
 
87
 
82
BEGIN
88
    IF (v.typ = tINTEGER) & ((v.int < UTILS.target.minInt) OR (v.int > UTILS.target.maxInt)) THEN
-
 
89
        error := TRUE
83
    CASE v.typ OF
90
    ELSIF (v.typ = tCHAR) & ((v.int < 0) OR (v.int > 255)) THEN
-
 
91
        error := TRUE
84
    |tINTEGER: res := (UTILS.target.minInt <= v.int) & (v.int <= UTILS.target.maxInt)
92
    ELSIF (v.typ = tWCHAR) & ((v.int < 0) OR (v.int > 65535)) THEN
-
 
93
        error := TRUE
85
    |tCHAR:    res := (0 <= v.int) & (v.int <= 255)
Line 94... Line 86...
94
    ELSIF (v.typ = tREAL) & ((v.float < -UTILS.target.maxReal) OR (v.float > UTILS.target.maxReal)) THEN
86
    |tWCHAR:   res := (0 <= v.int) & (v.int <= 65535)
95
        error := TRUE
87
    |tREAL:    res := (-UTILS.target.maxReal <= v.float) & (v.float <= UTILS.target.maxReal)
Line 96... Line 88...
96
    END
88
    END
97
 
89
 
98
    RETURN ~error
90
    RETURN res
99
END check;
-
 
100
 
-
 
Line -... Line 91...
-
 
91
END check;
101
 
92
 
102
PROCEDURE isZero* (v: VALUE): BOOLEAN;
93
 
103
VAR
-
 
104
    res: BOOLEAN;
94
PROCEDURE isZero* (v: VALUE): BOOLEAN;
105
BEGIN
95
VAR
Line 106... Line 96...
106
    ASSERT(v.typ IN {tINTEGER, tREAL});
96
    res: BOOLEAN;
107
 
97