Import Upstream version 20180207
[hcoop/debian/mlton.git] / mlton / atoms / word-x-vector.sig
1 (* Copyright (C) 2014,2017 Matthew Fluet.
2 * Copyright (C) 2004-2006 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_VECTOR_STRUCTS =
10 sig
11 structure WordSize: WORD_SIZE
12 structure WordX: WORD_X
13 sharing WordSize = WordX.WordSize
14 end
15
16 signature WORD_X_VECTOR =
17 sig
18 include WORD_X_VECTOR_STRUCTS
19
20 type t
21
22 val compare: t * t -> order
23 val elementSize: t -> WordSize.t
24 val equals: t * t -> bool
25 val foldFrom: t * int * 'b * (WordX.t * 'b -> 'b) -> 'b
26 val forall: t * (WordX.t -> bool) -> bool
27 val fromList: {elementSize: WordSize.t} * WordX.t list -> t
28 val fromListRev: {elementSize: WordSize.t} * WordX.t list -> t
29 val fromString: string -> t
30 val fromVector: {elementSize: WordSize.t} * WordX.t vector -> t
31 val hash : t -> word
32 val layout: t -> Layout.t
33 val le : t * t -> bool
34 val length: t -> int
35 val sub: t * int -> WordX.t
36 val tabulate: {elementSize: WordSize.t} * int * (int -> WordX.t) -> t
37 val toListMap: t * (WordX.t -> 'a) -> 'a list
38 val toString: t -> string
39 end