123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- (** This is the user accessible static methods of the CP runtime system.
- * These are the environment-independent ones. Others are in CP*.cp
- * Note: the bodies of these procedures are dummies, this module is
- * compiled with -special. The real code is in RTS.java or other.
- *
- * Version: 7 July 1999 (kjg).
- * 20 February 2000 (kjg) Default target ...
- * 4 July 2000 (kjg) Native types ...
- * 4 August 2001 (syc,kjg) more methods...
- * 2004 (kjg) vector support and globalization
- *)
- (* ============================================================ *)
- SYSTEM MODULE RTS;
- VAR defaultTarget- : ARRAY 4 OF CHAR;
- fltNegInfinity- : SHORTREAL;
- fltPosInfinity- : SHORTREAL;
- dblNegInfinity- : REAL;
- dblPosInfinity- : REAL;
- TYPE CharOpen* = POINTER TO ARRAY OF CHAR;
- TYPE NativeType* = POINTER TO ABSTRACT RECORD END;
- NativeObject* = POINTER TO ABSTRACT RECORD END;
- NativeString* = POINTER TO RECORD END;
- NativeException*= POINTER TO EXTENSIBLE RECORD END;
- VAR eol- : POINTER TO ARRAY OF CHAR; (* OS-specific end of line string *)
- (* ========================================================== *)
- (* ============= Support for native exceptions ============== *)
- (* ========================================================== *)
- PROCEDURE getStr*(x : NativeException) : CharOpen;
- PROCEDURE Throw*(IN s : ARRAY OF CHAR);
- (** Abort execution with an error *)
- (* ========================================================== *)
- (* ============= Conversions FROM array of char ============= *)
- (* ========================================================== *)
- PROCEDURE StrToBool*(IN s : ARRAY OF CHAR; OUT b : BOOLEAN; OUT ok : BOOLEAN);
- (** Parse array into a BOOLEAN TRUE/FALSE *)
- PROCEDURE StrToByte*(IN s : ARRAY OF CHAR; OUT b : BYTE; OUT ok : BOOLEAN);
- (** Parse array into a BYTE integer *)
- PROCEDURE StrToUByte*(IN s : ARRAY OF CHAR; OUT b : BYTE; OUT ok : BOOLEAN);
- (** Parse array into a BYTE integer *)
- PROCEDURE StrToShort*(IN s : ARRAY OF CHAR; OUT si : SHORTINT; OUT ok : BOOLEAN);
- (** Parse an array into a CP LONGINT *)
- PROCEDURE StrToUShort*(IN s:ARRAY OF CHAR; OUT si:SHORTINT; OUT ok:BOOLEAN);
- (** Parse an array into a CP LONGINT *)
- PROCEDURE StrToInt*(IN s:ARRAY OF CHAR; OUT i:INTEGER; OUT ok:BOOLEAN);
- (** Parse an array into a CP INTEGER *)
- PROCEDURE StrToUInt*(IN s:ARRAY OF CHAR; OUT i:INTEGER; OUT ok:BOOLEAN);
- (** Parse an array into a CP INTEGER *)
- PROCEDURE StrToLong*(IN s:ARRAY OF CHAR; OUT i:LONGINT; OUT ok:BOOLEAN);
- (** Parse an array into a CP LONGINT *)
- PROCEDURE StrToULong*(IN s:ARRAY OF CHAR; OUT i:LONGINT; OUT ok:BOOLEAN);
- (** Parse an array into a CP LONGINT *)
- PROCEDURE HexStrToUByte*(IN s:ARRAY OF CHAR; OUT b:BYTE; OUT ok:BOOLEAN);
- (** Parse hexadecimal array into a BYTE integer *)
- (* ------------------- Low-level String Conversions -------------------- *)
- (* Three versions for different cultures. *Invar uses invariant culture *)
- (* *Local uses current locale *)
- (* StrToReal & RealToStr do not behave the same on JVM and CLR. *)
- (* They is provided for compatability with versions < 1.3.1 *)
- (* ------------------- Low-level String Conversions -------------------- *)
- PROCEDURE StrToReal*(IN s : ARRAY OF CHAR;
- OUT r : REAL;
- OUT ok : BOOLEAN);
- (** Parse array into an ieee double REAL *)
- PROCEDURE StrToRealInvar*(IN s : ARRAY OF CHAR;
- OUT r : REAL;
- OUT ok : BOOLEAN);
- (** Parse array using invariant culture, into an ieee double REAL *)
- PROCEDURE StrToRealLocal*(IN s : ARRAY OF CHAR;
- OUT r : REAL;
- OUT ok : BOOLEAN);
- (** Parse array using current locale, into an ieee double REAL *)
- PROCEDURE StrToSReal*(IN s : ARRAY OF CHAR;
- OUT r : SHORTREAL;
- OUT ok : BOOLEAN);
- PROCEDURE StrToSRealInvar*(IN s : ARRAY OF CHAR;
- OUT r : SHORTREAL;
- OUT ok : BOOLEAN);
- PROCEDURE StrToSRealLocal*(IN s : ARRAY OF CHAR;
- OUT r : SHORTREAL;
- OUT ok : BOOLEAN);
- (** Parse array into a short REAL *)
- (* ========================================================== *)
- (* ============== Conversions TO array of char ============== *)
- (* ========================================================== *)
- PROCEDURE RealToStr*(r : REAL; OUT s : ARRAY OF CHAR);
- (** Decode a CP REAL into an array *)
- PROCEDURE RealToStrInvar*(r : REAL; OUT s : ARRAY OF CHAR);
- (** Decode a CP REAL into an array in invariant culture *)
- PROCEDURE RealToStrLocal*(r : REAL; OUT s : ARRAY OF CHAR);
- (** Decode a CP REAL into an array in the current locale *)
- PROCEDURE SRealToStr*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
- PROCEDURE SRealToStrInvar*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
- PROCEDURE SRealToStrLocal*(r : SHORTREAL; OUT s : ARRAY OF CHAR);
- (** Decode a CP SHORTREAL into an array *)
- (* ========================================================== *)
- PROCEDURE IntToStr*(i : INTEGER; OUT s : ARRAY OF CHAR);
- (** Decode a CP INTEGER into an array *)
- PROCEDURE ObjToStr*(obj : ANYPTR; OUT s : ARRAY OF CHAR);
- (** Decode a CP INTEGER into an array *)
- PROCEDURE LongToStr*(i : LONGINT; OUT s : ARRAY OF CHAR);
- (** Decode a CP INTEGER into an array *)
- (* ========================================================== *)
- (* ========== Casts with no representation change =========== *)
- (* ========================================================== *)
- PROCEDURE realToLongBits*(r : REAL) : LONGINT;
- (** Convert an ieee double into a longint with same bit pattern *)
- PROCEDURE longBitsToReal*(l : LONGINT) : REAL;
- (** Convert an ieee double into a longint with same bit pattern *)
- PROCEDURE shortRealToIntBits*(r : SHORTREAL) : INTEGER;
- (** Convert an ieee float into an int with same bit pattern *)
- PROCEDURE intBitsToShortReal*(i : INTEGER) : SHORTREAL;
- (** Convert an int into an ieee float with same bit pattern *)
- PROCEDURE hiByte*(i : SHORTINT) : BYTE;
- (** Get hi-significant word of short *)
- PROCEDURE loByte*(i : SHORTINT) : BYTE;
- (** Get lo-significant word of short *)
- PROCEDURE hiShort*(i : INTEGER) : SHORTINT;
- (** Get hi-significant word of integer *)
- PROCEDURE loShort*(i : INTEGER) : SHORTINT;
- (** Get lo-significant word of integer *)
- PROCEDURE hiInt*(l : LONGINT) : INTEGER;
- (** Get hi-significant word of long integer *)
- PROCEDURE loInt*(l : LONGINT) : INTEGER;
- (** Get lo-significant word of long integer *)
- (* ========================================================== *)
- (* ============= Various utility procedures ================= *)
- (* ========================================================== *)
- PROCEDURE GetMillis*() : LONGINT;
- (** Get time in milliseconds *)
- PROCEDURE GetDateString*(OUT str : ARRAY OF CHAR);
- (** Get a date string in some native format *)
- PROCEDURE ClassMarker*(o : ANYPTR);
- (** Write class name to standard output *)
- (* ============================================================ *)
- END RTS.
|