1(* -------------------------------------------------------------------------
2   BitsN
3   ------------------------------------------------------------------------- *)
4
5signature BitsN =
6sig
7   (* Can/should be an abstract type when not using SMLExport
8   eqtype nbit
9   *)
10
11   datatype nbit = B of (IntInf.int * Nat.nat)
12
13   val BV: IntInf.int * Nat.nat -> nbit
14
15   val allow_resize: bool ref
16
17   val compare: nbit * nbit -> order
18   val signedCompare: nbit * nbit -> order
19
20   val fromBinString: string * Nat.nat -> nbit option
21   val fromBit: bool -> nbit
22   val fromBitstring: Bitstring.bitstring * Nat.nat -> nbit
23   val fromBool: Nat.nat -> bool -> nbit
24   val fromHexString: string * Nat.nat -> nbit option
25   val fromInt: IntInf.int * Nat.nat -> nbit
26   val fromNativeInt: int * int -> nbit
27   val fromLit: string * IntInf.int -> nbit option
28   val fromNat: Nat.nat * Nat.nat -> nbit
29   val fromNatCheck: Nat.nat * Nat.nat -> nbit
30   val fromString: string * Nat.nat -> nbit option
31
32   val toBinString: nbit -> string
33   val toBitstring: nbit -> Bitstring.bitstring
34   val toHexString: nbit -> string
35   val toInt: nbit -> IntInf.int
36   val toNat: nbit -> Nat.nat
37   val toString: nbit -> string
38   val toUInt: nbit -> IntInf.int
39
40   val #<< : nbit * Nat.nat -> nbit
41   val #<<^ : nbit * nbit -> nbit
42   val #>> : nbit * Nat.nat -> nbit
43   val #>>^ : nbit * nbit -> nbit
44   val && : nbit * nbit -> nbit
45   val * : nbit * nbit -> nbit
46   val + : nbit * nbit -> nbit
47   val - : nbit * nbit -> nbit
48   val < : nbit * nbit -> bool
49   val <+ : nbit * nbit -> bool
50   val << : nbit * Nat.nat -> nbit
51   val <<^ : nbit * nbit -> nbit
52   val <= : nbit * nbit -> bool
53   val <=+ : nbit * nbit -> bool
54   val > : nbit * nbit -> bool
55   val >+ : nbit * nbit -> bool
56   val >= : nbit * nbit -> bool
57   val >=+ : nbit * nbit -> bool
58   val >> : nbit * Nat.nat -> nbit
59   val >>+ : nbit * Nat.nat -> nbit
60   val >>+^ : nbit * nbit -> nbit
61   val >>^ : nbit * nbit -> nbit
62   val ?? : nbit * nbit -> nbit
63   val @@ : nbit * nbit -> nbit
64   val || : nbit * nbit -> nbit
65   val ~ : nbit -> nbit
66   val abs: nbit -> nbit
67   val bit: nbit * Nat.nat -> bool
68   val bitFieldInsert: Nat.nat * Nat.nat -> nbit * nbit -> nbit
69   val bits: Nat.nat * Nat.nat -> nbit -> nbit
70   val concat: nbit list -> nbit
71   val div: nbit * nbit -> nbit
72   val fromList: bool list -> nbit
73   val log2: nbit -> nbit
74   val lsb: nbit -> bool
75   val max: nbit * nbit -> nbit
76   val min: nbit * nbit -> nbit
77   val mod: nbit * nbit -> nbit
78   val msb: nbit -> bool
79   val nativeSize: nbit -> int
80   val neg: nbit -> nbit
81   val one: Nat.nat -> nbit
82   val quot: nbit * nbit -> nbit
83   val rem: nbit * nbit -> nbit
84   val replicate: nbit * Nat.nat -> nbit
85   val resize: int -> nbit -> nbit
86   val resize_replicate: int -> nbit * Nat.nat -> nbit
87   val reverse: nbit -> nbit
88   val sdiv: nbit * nbit -> nbit
89   val signExtend: Nat.nat -> nbit -> nbit
90   val size: nbit -> Nat.nat
91   val smax: nbit * nbit -> nbit
92   val smin: nbit * nbit -> nbit
93   val smod: nbit * nbit -> nbit
94   val tabulate: Nat.nat * (Nat.nat -> bool) -> nbit
95   val toList: nbit -> bool list
96   val zero: Nat.nat -> nbit
97   val zeroExtend: Nat.nat -> nbit -> nbit
98end
99