1 (* Copyright (C
) 2017 Matthew Fluet
.
2 * Copyright (C
) 1999-2007 Henry Cejtin
, Matthew Fluet
, Suresh
3 * Jagannathan
, and Stephen Weeks
.
4 * Copyright (C
) 1997-2000 NEC Research Institute
.
6 * MLton is released under a BSD
-style license
.
7 * See the file MLton
-LICENSE for details
.
13 structure Prim8
= Primitive
.Char8
14 structure Prim16
= Primitive
.Char16
15 structure Prim32
= Primitive
.Char32
25 val fChar8
: Prim8
.char t
= {
26 chrUnsafe
= Prim8
.idFromWord8
o Int.sextdToWord8
,
27 ord
= Int.zextdFromWord8
o Prim8
.idToWord8
,
30 numChars
= 256 (* 0x100 *)
32 val fChar16
: Prim16
.char t
= {
33 chrUnsafe
= Prim16
.idFromWord16
o Int.sextdToWord16
,
34 ord
= Int.zextdFromWord16
o Prim16
.idToWord16
,
37 numChars
= 65536 (* 0x10000 *)
39 val fChar32
: Prim32
.char t
= {
40 chrUnsafe
= Prim32
.idFromWord32
o Int.sextdToWord32
,
41 ord
= Int.zextdFromWord32
o Prim32
.idToWord32
,
43 maxChar
= Prim32
.idFromWord32
0wx0010FFFF
,
44 numChars
= 1114112 (* 0x110000 *)
48 structure Char : PRE_CHAR
=
50 (* set by config
/default
/default
-charX
.sml
*)
52 type string = String.string
55 structure PCX
= Char_ChooseChar(PreCharX
)
57 val { chrUnsafe
, ord
, minChar
, maxChar
, numChars
} = PCX
.f
63 structure WideChar
: PRE_CHAR
=
65 (* set by config
/default
/default
-widecharX
.sml
*)
67 type string = WideString
.string
70 structure PCX
= WideChar_ChooseChar(PreCharX
)
72 val { chrUnsafe
, ord
, minChar
, maxChar
, numChars
} = PCX
.f
75 (* safe b
/c WideChar
>= Char *)
76 val fromChar
= chrUnsafe
o Char.ord