DEADSOFTWARE

Remove batch
[gpcp-linux.git] / gpcp / RTS.cp
1 (** This is the user accessible static methods of the CP runtime system.
2 * These are the environment-independent ones. Others are in CP*.cp
3 * Note: the bodies of these procedures are dummies, this module is
4 * compiled with -special. The real code is in RTS.java or other.
5 *
6 * Version: 7 July 1999 (kjg).
7 * 20 February 2000 (kjg) Default target ...
8 * 4 July 2000 (kjg) Native types ...
9 * 4 August 2001 (syc,kjg) more methods...
10 * 2004 (kjg) vector support and globalization
11 *)
13 (* ============================================================ *)
14 SYSTEM MODULE RTS;
16 VAR defaultTarget- : ARRAY 4 OF CHAR;
17 fltNegInfinity- : SHORTREAL;
18 fltPosInfinity- : SHORTREAL;
19 dblNegInfinity- : REAL;
20 dblPosInfinity- : REAL;
22 TYPE CharOpen* = POINTER TO ARRAY OF CHAR;
23 CharVector* = VECTOR OF CHAR;
25 TYPE NativeType* = POINTER TO ABSTRACT RECORD END;
26 NativeObject* = POINTER TO EXTENSIBLE RECORD END;
27 NativeString* = POINTER TO RECORD END;
28 NativeException*= POINTER TO EXTENSIBLE RECORD END;
30 VAR eol- : POINTER TO ARRAY OF CHAR; (* OS-specific end of line string *)
32 (* ========================================================== *)
33 (* ============= Support for native exceptions ============== *)
34 (* ========================================================== *)
35 PROCEDURE getStr*(x : NativeException) : CharOpen;
37 PROCEDURE Throw*(IN s : ARRAY OF CHAR);
38 (** Abort execution with an error *)
40 (* ========================================================== *)
41 (* ============= Conversions FROM array of char ============= *)
42 (* ========================================================== *)
43 PROCEDURE StrToBool*(IN s : ARRAY OF CHAR; OUT b : BOOLEAN; OUT ok : BOOLEAN);
44 (** Parse array into a BOOLEAN TRUE/FALSE *)
46 PROCEDURE StrToByte*(IN s : ARRAY OF CHAR; OUT b : BYTE; OUT ok : BOOLEAN);
47 (** Parse array into a BYTE integer *)
49 PROCEDURE StrToUByte*(IN s : ARRAY OF CHAR; OUT b : BYTE; OUT ok : BOOLEAN);
50 (** Parse array into a BYTE integer *)
52 PROCEDURE StrToShort*(IN s : ARRAY OF CHAR; OUT si : SHORTINT; OUT ok : BOOLEAN);
53 (** Parse an array into a CP LONGINT *)
55 PROCEDURE StrToUShort*(IN s:ARRAY OF CHAR; OUT si:SHORTINT; OUT ok:BOOLEAN);
56 (** Parse an array into a CP LONGINT *)
58 PROCEDURE StrToInt*(IN s:ARRAY OF CHAR; OUT i:INTEGER; OUT ok:BOOLEAN);
59 (** Parse an array into a CP INTEGER *)
61 PROCEDURE StrToUInt*(IN s:ARRAY OF CHAR; OUT i:INTEGER; OUT ok:BOOLEAN);
62 (** Parse an array into a CP INTEGER *)
64 PROCEDURE StrToLong*(IN s:ARRAY OF CHAR; OUT i:LONGINT; OUT ok:BOOLEAN);
65 (** Parse an array into a CP LONGINT *)
67 PROCEDURE StrToULong*(IN s:ARRAY OF CHAR; OUT i:LONGINT; OUT ok:BOOLEAN);
68 (** Parse an array into a CP LONGINT *)
70 PROCEDURE HexStrToUByte*(IN s:ARRAY OF CHAR; OUT b:BYTE; OUT ok:BOOLEAN);
71 (** Parse hexadecimal array into a BYTE integer *)
73 (* ------------------- Low-level String Conversions -------------------- *)
74 (* Three versions for different cultures. *Invar uses invariant culture *)
75 (* *Local uses current locale *)
76 (* StrToReal & RealToStr do not behave the same on JVM and CLR. *)
77 (* They is provided for compatability with versions < 1.3.1 *)
78 (* ------------------- Low-level String Conversions -------------------- *)
80 PROCEDURE StrToReal*(IN s : ARRAY OF CHAR;
81 OUT r : REAL;
82 OUT ok : BOOLEAN);
83 (** Parse array into an ieee double REAL *)
85 PROCEDURE StrToRealInvar*(IN s : ARRAY OF CHAR;
86 OUT r : REAL;
87 OUT ok : BOOLEAN);
88 (** Parse array using invariant culture, into an ieee double REAL *)
90 PROCEDURE StrToRealLocal*(IN s : ARRAY OF CHAR;
91 OUT r : REAL;
92 OUT ok : BOOLEAN);
93 (** Parse array using current locale, into an ieee double REAL *)
95 PROCEDURE StrToSReal*(IN s : ARRAY OF CHAR;
96 OUT r : SHORTREAL;
97 OUT ok : BOOLEAN);
98 PROCEDURE StrToSRealInvar*(IN s : ARRAY OF CHAR;
99 OUT r : SHORTREAL;
100 OUT ok : BOOLEAN);
101 PROCEDURE StrToSRealLocal*(IN s : ARRAY OF CHAR;
102 OUT r : SHORTREAL;
103 OUT ok : BOOLEAN);
104 (** Parse array into a short REAL *)
106 (* ========================================================== *)
107 (* ============== Operations on Native Types ============== *)
108 (* ========================================================== *)
110 PROCEDURE TypeName*(typ : NativeType) : CharOpen;
112 (* ========================================================== *)
113 (* ============== Operations on Native Strings ============== *)
114 (* ========================================================== *)
116 PROCEDURE CharAtIndex*(str : NativeString; idx : INTEGER) : CHAR;
117 (* Get the character at zero-based index idx *)
119 PROCEDURE Length*(str : NativeString) : INTEGER;
120 (* Get the length of the native string *)
122 (* ========================================================== *)
123 (* ============== Conversions TO array of char ============== *)
124 (* ========================================================== *)
125 PROCEDURE RealToStr*(r : REAL; OUT s : ARRAY OF CHAR);
126 (** Decode a CP REAL into an array *)
128 PROCEDURE RealToStrInvar*(r : REAL; OUT s : ARRAY OF CHAR);
129 (** Decode a CP REAL into an array in invariant culture *)
131 PROCEDURE RealToStrLocal*(r : REAL; OUT s : ARRAY OF CHAR);
132 (** Decode a CP REAL into an array in the current locale *)
134 PROCEDURE SRealToStr*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
135 PROCEDURE SRealToStrInvar*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
136 PROCEDURE SRealToStrLocal*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
137 (** Decode a CP SHORTREAL into an array *)
138 (* ========================================================== *)
140 PROCEDURE IntToStr*(i : INTEGER; OUT s : ARRAY OF CHAR);
141 (** Decode a CP INTEGER into an array *)
143 PROCEDURE ObjToStr*(obj : ANYPTR; OUT s : ARRAY OF CHAR);
144 (** Decode a CP INTEGER into an array *)
146 PROCEDURE LongToStr*(i : LONGINT; OUT s : ARRAY OF CHAR);
147 (** Decode a CP INTEGER into an array *)
149 (* ========================================================== *)
150 (* ========== Casts with no representation change =========== *)
151 (* ========================================================== *)
152 PROCEDURE realToLongBits*(r : REAL) : LONGINT;
153 (** Convert an ieee double into a longint with same bit pattern *)
155 PROCEDURE longBitsToReal*(l : LONGINT) : REAL;
156 (** Convert an ieee double into a longint with same bit pattern *)
158 PROCEDURE shortRealToIntBits*(r : SHORTREAL) : INTEGER;
159 (** Convert an ieee float into an int with same bit pattern *)
161 PROCEDURE intBitsToShortReal*(i : INTEGER) : SHORTREAL;
162 (** Convert an int into an ieee float with same bit pattern *)
164 PROCEDURE hiByte*(i : SHORTINT) : BYTE;
165 (** Get hi-significant word of short *)
167 PROCEDURE loByte*(i : SHORTINT) : BYTE;
168 (** Get lo-significant word of short *)
170 PROCEDURE hiShort*(i : INTEGER) : SHORTINT;
171 (** Get hi-significant word of integer *)
173 PROCEDURE loShort*(i : INTEGER) : SHORTINT;
174 (** Get lo-significant word of integer *)
176 PROCEDURE hiInt*(l : LONGINT) : INTEGER;
177 (** Get hi-significant word of long integer *)
179 PROCEDURE loInt*(l : LONGINT) : INTEGER;
180 (** Get lo-significant word of long integer *)
182 (* ========================================================== *)
183 (* ============= Various utility procedures ================= *)
184 (* ========================================================== *)
185 PROCEDURE GetMillis*() : LONGINT;
186 (** Get time in milliseconds *)
188 PROCEDURE GetDateString*(OUT str : ARRAY OF CHAR);
189 (** Get a date string in some native format *)
191 PROCEDURE ClassMarker*(o : ANYPTR);
192 (** Write class name to standard output *)
194 (* ============================================================ *)
195 END RTS.