Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | (* Copyright (C) 2017 Matthew Fluet. |
2 | * Copyright (C) 2014 Rob Simmons. | |
3 | * Copyright (C) 1999-2008 Henry Cejtin, Matthew Fluet, Suresh | |
4 | * Jagannathan, and Stephen Weeks. | |
5 | * Copyright (C) 1997-2000 NEC Research Institute. | |
6 | * | |
7 | * MLton is released under a BSD-style license. | |
8 | * See the file MLton-LICENSE for details. | |
9 | *) | |
10 | ||
11 | signature SLICE = | |
12 | sig | |
13 | type 'a sequence | |
14 | type 'a elt | |
15 | type 'a slice | |
16 | val length: 'a slice -> int | |
17 | val sub: 'a slice * int -> 'a elt | |
18 | val unsafeSub: 'a slice * int -> 'a elt | |
19 | val update: 'a slice * int * 'a elt -> unit | |
20 | val unsafeUpdate: 'a slice * int * 'a elt -> unit | |
21 | val uninitIsNop: 'a slice -> bool | |
22 | val uninit: 'a slice * int -> unit | |
23 | val unsafeUninit: 'a slice * int -> unit | |
24 | val copy: {dst: 'a elt Array.array, di: int, src: 'a slice} -> unit | |
25 | val unsafeCopy: {dst: 'a elt Array.array, di: int, src: 'a slice} -> unit | |
26 | val full: 'a sequence -> 'a slice | |
27 | val slice: 'a sequence * int * int option -> 'a slice | |
28 | val unsafeSlice: 'a sequence * int * int option -> 'a slice | |
29 | val subslice: 'a slice * int * int option -> 'a slice | |
30 | val unsafeSubslice: 'a slice * int * int option -> 'a slice | |
31 | val base: 'a slice -> 'a sequence * int * int | |
32 | val isEmpty: 'a slice -> bool | |
33 | val getItem: 'a slice -> ('a elt * 'a slice) option | |
34 | val appi: (int * 'a elt -> unit) -> 'a slice -> unit | |
35 | val app: ('a elt -> unit) -> 'a slice -> unit | |
36 | val mapi: (int * 'a elt -> 'b elt) -> 'a slice -> 'b sequence | |
37 | val map: ('a elt -> 'b elt) -> 'a slice -> 'b sequence | |
38 | val foldli: (int * 'a elt * 'b -> 'b) -> 'b -> 'a slice -> 'b | |
39 | val foldl: ('a elt * 'b -> 'b) -> 'b -> 'a slice -> 'b | |
40 | val foldri: (int * 'a elt * 'b -> 'b) -> 'b -> 'a slice -> 'b | |
41 | val foldr: ('a elt * 'b -> 'b) -> 'b -> 'a slice -> 'b | |
42 | val findi: (int * 'a elt -> bool) -> 'a slice -> (int * 'a elt) option | |
43 | val find: ('a elt -> bool) -> 'a slice -> 'a elt option | |
44 | val existsi: (int * 'a elt -> bool) -> 'a slice -> bool | |
45 | val exists: ('a elt -> bool) -> 'a slice -> bool | |
46 | val alli: (int * 'a elt -> bool) -> 'a slice -> bool | |
47 | val all: ('a elt -> bool) -> 'a slice -> bool | |
48 | val collate: ('a elt * 'a elt -> order) -> 'a slice * 'a slice -> order | |
49 | ||
50 | val splitl: ('a elt -> bool) -> 'a slice -> 'a slice * 'a slice | |
51 | val splitr: ('a elt -> bool) -> 'a slice -> 'a slice * 'a slice | |
52 | val splitAt: 'a slice * int -> 'a slice * 'a slice | |
53 | val dropl: ('a elt -> bool) -> 'a slice -> 'a slice | |
54 | val dropr: ('a elt -> bool) -> 'a slice -> 'a slice | |
55 | val takel: ('a elt -> bool) -> 'a slice -> 'a slice | |
56 | val taker: ('a elt -> bool) -> 'a slice -> 'a slice | |
57 | val position: ('a elt * 'a elt -> bool) -> | |
58 | 'a sequence -> 'a slice -> 'a slice * 'a slice | |
59 | val append: 'a slice * 'a slice -> 'a sequence | |
60 | val sequence: 'a slice -> 'a sequence | |
61 | val toList: 'a slice -> 'a elt list | |
62 | ||
63 | (* Used to implement Substring/String functions *) | |
64 | val concat: 'a slice list -> 'a sequence | |
65 | val concatWith: 'a sequence -> 'a slice list -> 'a sequence | |
66 | val triml: int -> 'a slice -> 'a slice | |
67 | val trimr: int -> 'a slice -> 'a slice | |
68 | val isPrefix: ('a elt * 'a elt -> bool) -> 'a sequence -> 'a slice -> bool | |
69 | val isSubsequence: ('a elt * 'a elt -> bool) -> 'a sequence -> 'a slice -> bool | |
70 | val isSuffix: ('a elt * 'a elt -> bool) -> 'a sequence -> 'a slice -> bool | |
71 | val translate: ('a elt -> 'b sequence) -> 'a slice -> 'b sequence | |
72 | val tokens: ('a elt -> bool) -> 'a slice -> 'a slice list | |
73 | val fields: ('a elt -> bool) -> 'a slice -> 'a slice list | |
74 | end |