Import Upstream version 20180207
[hcoop/debian/mlton.git] / mlton / atoms / word-x.sig
1 (* Copyright (C) 2009 Matthew Fluet.
2 * Copyright (C) 2004-2008 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 *
5 * MLton is released under a BSD-style license.
6 * See the file MLton-LICENSE for details.
7 *)
8
9 signature WORD_X_STRUCTS =
10 sig
11 structure WordSize: WORD_SIZE
12 end
13
14 signature WORD_X =
15 sig
16 include WORD_X_STRUCTS
17
18 (* Words of all WordSize.t sizes. *)
19 type t
20
21 val add: t * t -> t
22 val allOnes: WordSize.t -> t
23 val andb: t * t -> t
24 val compare: t * t * {signed: bool} -> order
25 val div: t * t * {signed: bool} -> t
26 val equals: t * t -> bool
27 val fromChar: char -> t (* returns a word of size 8 *)
28 val fromIntInf: IntInf.t * WordSize.t -> t
29 val ge: t * t * {signed: bool} -> bool
30 val gt: t * t * {signed: bool} -> bool
31 val hash: t -> word
32 val isAllOnes: t -> bool
33 val isOne: t -> bool
34 val isMax: t * {signed: bool} -> bool
35 val isMin: t * {signed: bool} -> bool
36 val isNegOne: t -> bool
37 val isZero: t -> bool
38 val layout: t -> Layout.t
39 val le: t * t * {signed: bool} -> bool
40 val lshift: t * t -> t
41 val lt: t * t * {signed: bool} -> bool
42 val max: WordSize.t * {signed: bool} -> t
43 val min: WordSize.t * {signed: bool} -> t
44 val mod: t * t * {signed: bool} -> t
45 val mul: t * t * {signed: bool} -> t
46 val neg: t -> t
47 val notb: t -> t
48 val one: WordSize.t -> t
49 val orb: t * t -> t
50 val quot: t * t * {signed: bool} -> t
51 val rem: t * t * {signed: bool} -> t
52 val resize: t * WordSize.t -> t
53 val resizeX: t * WordSize.t -> t
54 val rol: t * t -> t
55 val ror: t * t -> t
56 val rshift : t * t * {signed: bool} -> t
57 val size: t -> WordSize.t
58 val sub: t * t -> t
59 val toChar: t -> char
60 val toInt: t -> int
61 val toIntInf: t -> IntInf.t
62 val toIntInfX: t -> IntInf.t
63 val toString: t -> string
64 val xorb: t * t -> t
65 val zero: WordSize.t -> t
66 end