Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / basis-library / text / string-cvt.sig
1 signature STRING_CVT =
2 sig
3 datatype radix = BIN | OCT | DEC | HEX
4
5 datatype realfmt =
6 SCI of int option
7 | FIX of int option
8 | GEN of int option
9 | EXACT
10
11 type ('a, 'b) reader = 'b -> ('a * 'b) option
12
13 val padLeft: char -> int -> string -> string
14 val padRight: char -> int -> string -> string
15
16 val splitl: (char -> bool) -> (char, 'a) reader -> 'a -> string * 'a
17
18 val takel: (char -> bool) -> (char, 'a) reader -> 'a -> string
19 val dropl: (char -> bool) -> (char, 'a) reader -> 'a -> 'a
20 val skipWS: (char, 'a) reader -> 'a -> 'a
21
22 type cs
23 val scanString:
24 ((char, cs) reader -> ('a, cs) reader) -> string -> 'a option
25 end
26
27 signature STRING_CVT_EXTRA =
28 sig
29 include STRING_CVT
30
31 val radixToInt: radix -> int
32 val radixToWord: radix -> word
33 val charToDigit: radix -> char -> int option
34 val charToWDigit: radix -> char -> word option
35
36 (* this exists before Char.isSpace *)
37 val isSpace: char -> bool
38
39 (* maps 0...15 to #"0", #"1", ..., #"F" *)
40 val digitToChar: int -> char
41
42 (* digitsExact(r, n) reads exactly n digits of radix r *)
43 val digitsExact: radix * int -> (char, 'a) reader -> (int, 'a) reader
44
45 (* digitsPlus(r, m) reads between 1 and m digits of radix r *)
46 val digitsPlus: radix * int -> (char, 'a) reader -> (int, 'a) reader
47
48 (* digits r reads as many digits of radix r as possible *)
49 val digits: radix -> (char, 'a) reader -> (int, 'a) reader
50 val wdigits: radix -> (char, 'a) reader -> (word, 'a) reader
51 end