IMPLEMENTATION MODULE Convert;
(*
        Title:          Number conversion routines.
        Author:         D.R.Lamkin.
*)

FROM SYSTEM IMPORT ADR , CALLEXTFUNC , CALLEXTPROC ;


PROCEDURE StringToInteger (VAR Number : INTEGER; VAR S : ARRAY OF CHAR)
                                                                  : INTEGER;
(*
   Convert the string s to an integer.
   The string should be in the standard format, viz:
      [sign][base_][number]
*)
BEGIN
   RETURN INTEGER( CALLEXTFUNC( "StringToInteger" ,
                                ADR( Number ) ,
                                ADR( S ) ,
                                   HIGH( S ) ) ) ;
END StringToInteger ;


PROCEDURE StringToCardinal (VAR Number : CARDINAL; VAR S : ARRAY OF CHAR)
                                                              : INTEGER;
BEGIN
   RETURN INTEGER( CALLEXTFUNC( "StringToCardinal" ,
                                ADR( Number ) ,
                                ADR( S ) ,
                                   HIGH( S ) ) ) ;
END StringToCardinal ;


PROCEDURE IntegerToString (VAR S : ARRAY OF CHAR; VAR Slength : CARDINAL;
                           Number : INTEGER;
                           Base : CARDINAL) : INTEGER;
BEGIN
   RETURN INTEGER( CALLEXTFUNC( "IntegerToString" ,
                                ADR( S ) ,
                                   HIGH( S ) ,
                                ADR( Slength ) ,
                                Number ,
                                Base ) ) ;
END IntegerToString ;


PROCEDURE CardinalToString (VAR S : ARRAY OF CHAR; VAR Slength : CARDINAL;
                            Number : CARDINAL;
                            Base : CARDINAL) : INTEGER;
BEGIN
   RETURN INTEGER( CALLEXTFUNC( "CardinalToString" ,
                                ADR( S ) ,
                                   HIGH( S ) ,
                                ADR( Slength ) ,
                                Number ,
                                Base ) ) ;
END CardinalToString ;


(* ========================================================================= *)


PROCEDURE XStringToInteger (VAR S : ARRAY OF CHAR) : INTEGER;
BEGIN
END XStringToInteger ;

PROCEDURE XStringToCardinal (VAR S : ARRAY OF CHAR): CARDINAL;
BEGIN
END XStringToCardinal ;

PROCEDURE XIntegerToString (VAR S : ARRAY OF CHAR;
                            Number : INTEGER;
                            Base : CARDINAL) : CARDINAL ;
BEGIN

END XIntegerToString ;

PROCEDURE XCardinalToString (VAR S : ARRAY OF CHAR;
                             Number : CARDINAL;
                             Base : CARDINAL) : CARDINAL ;
BEGIN
END XCardinalToString ;

END Convert.
