aboutsummaryrefslogtreecommitdiff
path: root/kernel/prelude/DATS/print.dats
blob: ac864ad9476b7777e295b3c449934ab3f1a92fe1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "share/atspre_staload.hats"

#define ATS_DYNLOADFLAG 0

staload "lib/SATS/writer.sats"
staload "lib/DATS/itoa.dats"

staload UN = "prelude/SATS/unsafe.sats"

extern fun print_newline() :<!wrt> void
implement print_newline() = put_string("\n")

extern fun assert_errmsg(b: bool, msg: string) :<!wrt> void
implement assert_errmsg(b,msg) = if (~b) then put_string(msg)

extern fun print_int  (n : int) :<!wrt> void 
implement print_int(n) = put_string(itoa(n,10))

extern fun print_uint32 (n : uint32) :<!wrt> void
implement print_uint32 (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_uint16 (n : uint16) :<!wrt> void
implement print_uint16 (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_uint8 (n : uint8) :<!wrt> void
implement print_uint8 (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_uint64 (n : uint64) :<!wrt> void
implement print_uint64 (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_size_t (n : size_t) :<!wrt> void
implement print_size_t (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_uint (n : uint) :<!wrt> void
implement print_uint (n) = put_string(itoa($UN.cast{int}(n),10))

extern fun print_addr (n : Ptr) :<!wrt> 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) :<!wrt> 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) :<!wrt> 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)