#include "share/atspre_staload.hats" #define ATS_DYNLOADFLAG 0 staload "lib/SATS/writer.sats" staload "lib/DATS/itoa.dats" staload "lib/SATS/panic.sats" staload UN = "prelude/SATS/unsafe.sats" extern fun print_newline() : void implement print_newline() = put_string("\n") extern fun assert_errmsg(b: bool, string) :<> void implement assert_errmsg(b,loc) = if (~b) then panic_loc(loc,"Assert fail") extern fun print_int (n : int) : void implement print_int(n) = put_string(itoa(n,10)) extern fun print_uint32 (n : uint32) : void implement print_uint32 (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_uint16 (n : uint16) : void implement print_uint16 (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_uint8 (n : uint8) : void implement print_uint8 (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_uint64 (n : uint64) : void implement print_uint64 (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_size_t (n : size_t) : void implement print_size_t (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_uint (n : uint) : void implement print_uint (n) = put_string(itoa($UN.cast{int}(n),10)) extern fun print_addr (n : Ptr) : void implement print_addr (n) = put_string(itoa($UN.cast{int}(n),10)) overload print with put_string of 1 overload print with print_int of 1 overload print with print_uint32 of 1 overload print with print_uint64 of 1 overload print with print_uint16 of 1 overload print with print_uint8 of 1 overload print with print_size_t of 1 overload print with print_uint of 1 overload print with print_addr of 1 extern fun {a : t@ype} println_base {n:nat | n > 1 && n < 33} (n :a, base : int n) : void implement{a} println_base(n,base) = println!(itoa($UN.cast{int}(n), base)) extern fun {a : t@ype} print_base {n:nat | n > 1 && n < 33} (n :a, base : int n) : void implement{a} print_base(n,base) = put_string(itoa($UN.cast{int}(n), base)) macdef println_hex(s) = (put_string "0x"; println_base(,(s), 16)) macdef print_hex(s) = (put_string "0x"; print_base(,(s), 16)) macdef assertloc(tf) = assert_errmsg (,(tf), $mylocation)