SYSTEM MODULE RTS;

IMPORT
    RTS;

TYPE

  CharOpen* = POINTER TO ARRAY OF CHAR;

  CharVector* = VECTOR OF CHAR;

  NativeException* = POINTER TO EXTENSIBLE RECORD
                     END;

  NativeObject* = POINTER TO EXTENSIBLE RECORD
                  END;

  NativeString* = POINTER TO RECORD
                  END;

  NativeType* = POINTER TO ABSTRACT RECORD
                END;


VAR
  eol-            : POINTER TO ARRAY OF CHAR;
  fltNegInfinity- : SHORTREAL;
  dblNegInfinity- : REAL;
  defaultTarget-  : ARRAY 4 OF CHAR;
  fltPosInfinity- : SHORTREAL;
  dblPosInfinity- : REAL;


PROCEDURE StrToShort*(IN  s  : ARRAY OF CHAR;
                      OUT si : SHORTINT;
                      OUT ok : BOOLEAN);

PROCEDURE StrToUShort*(IN  s  : ARRAY OF CHAR;
                       OUT si : SHORTINT;
                       OUT ok : BOOLEAN);

PROCEDURE TypeName*(typ : NativeType) : CharOpen;

PROCEDURE HexStrToUByte*(IN  s  : ARRAY OF CHAR;
                         OUT b  : BYTE;
                         OUT ok : BOOLEAN);

PROCEDURE intBitsToShortReal*(i : INTEGER) : SHORTREAL;

PROCEDURE StrToRealInvar*(IN  s  : ARRAY OF CHAR;
                          OUT r  : REAL;
                          OUT ok : BOOLEAN);

PROCEDURE StrToRealLocal*(IN  s  : ARRAY OF CHAR;
                          OUT r  : REAL;
                          OUT ok : BOOLEAN);

PROCEDURE SRealToStrInvar*(    r : SHORTREAL;
                           OUT s : ARRAY OF CHAR);

PROCEDURE SRealToStrLocal*(    r : SHORTREAL;
                           OUT s : ARRAY OF CHAR);

PROCEDURE longBitsToReal*(l : LONGINT) : REAL;

PROCEDURE Throw*(IN  s : ARRAY OF CHAR);

PROCEDURE realToLongBits*(r : REAL) : LONGINT;

PROCEDURE hiInt*(l : LONGINT) : INTEGER;

PROCEDURE loInt*(l : LONGINT) : INTEGER;

PROCEDURE GetMillis*() : LONGINT;

PROCEDURE shortRealToIntBits*(r : SHORTREAL) : INTEGER;

PROCEDURE ClassMarker*(o : ANYPTR);

PROCEDURE RealToStrInvar*(    r : REAL;
                          OUT s : ARRAY OF CHAR);

PROCEDURE RealToStrLocal*(    r : REAL;
                          OUT s : ARRAY OF CHAR);

PROCEDURE hiShort*(i : INTEGER) : SHORTINT;

PROCEDURE loShort*(i : INTEGER) : SHORTINT;

PROCEDURE RealToStr*(    r : REAL;
                     OUT s : ARRAY OF CHAR);

PROCEDURE Length*(str : NativeString) : INTEGER;

PROCEDURE LongToStr*(    i : LONGINT;
                     OUT s : ARRAY OF CHAR);

PROCEDURE GetDateString*(OUT str : ARRAY OF CHAR);

PROCEDURE ObjToStr*(    obj : ANYPTR;
                    OUT s   : ARRAY OF CHAR);

PROCEDURE hiByte*(i : SHORTINT) : BYTE;

PROCEDURE getStr*(x : NativeException) : CharOpen;

PROCEDURE IntToStr*(    i : INTEGER;
                    OUT s : ARRAY OF CHAR);

PROCEDURE loByte*(i : SHORTINT) : BYTE;

PROCEDURE SRealToStr*(    r : SHORTREAL;
                      OUT s : ARRAY OF CHAR);

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);

PROCEDURE CharAtIndex*(str : NativeString;
                       idx : INTEGER) : CHAR;

PROCEDURE StrToBool*(IN  s  : ARRAY OF CHAR;
                     OUT b  : BOOLEAN;
                     OUT ok : BOOLEAN);

PROCEDURE StrToSReal*(IN  s  : ARRAY OF CHAR;
                      OUT r  : SHORTREAL;
                      OUT ok : BOOLEAN);

PROCEDURE StrToByte*(IN  s  : ARRAY OF CHAR;
                     OUT b  : BYTE;
                     OUT ok : BOOLEAN);

PROCEDURE StrToUByte*(IN  s  : ARRAY OF CHAR;
                      OUT b  : BYTE;
                      OUT ok : BOOLEAN);

PROCEDURE StrToInt*(IN  s  : ARRAY OF CHAR;
                    OUT i  : INTEGER;
                    OUT ok : BOOLEAN);

PROCEDURE StrToUInt*(IN  s  : ARRAY OF CHAR;
                     OUT i  : INTEGER;
                     OUT ok : BOOLEAN);

PROCEDURE StrToULong*(IN  s  : ARRAY OF CHAR;
                      OUT i  : LONGINT;
                      OUT ok : BOOLEAN);

PROCEDURE StrToLong*(IN  s  : ARRAY OF CHAR;
                     OUT i  : LONGINT;
                     OUT ok : BOOLEAN);

PROCEDURE StrToReal*(IN  s  : ARRAY OF CHAR;
                     OUT r  : REAL;
                     OUT ok : BOOLEAN);


END RTS.