forked from barko/dawg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dog_io.mli
64 lines (47 loc) · 1.49 KB
/
dog_io.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
(* write-only *)
module WO : sig
type t
val create : string -> int -> t
val add_feature : t -> Feat.lfeature -> unit
val close_writer : t -> unit
end
(* read-only *)
module RO : sig
type t
val create : string -> t
val dog : t -> Dog_t.t
val array : t -> UInt8Array.t
(* where does the vector sequence end? This the offset of the last
byte of the last vector in the sequence, plus one *)
val end_array_offset : t -> int
end
(* read and append *)
module RW : sig
type t
val create : string -> (int * Dog_b.t) option -> t
(* val create : string -> int -> Dog_t.t -> t *)
(* [create path size dog_t_] creates a [t], backed by a
memory-mapped file whose path is [path], and whose size is [size]
in bytes. *)
type size_mismatch = {
expected : int;
actual : int
}
exception SizeMismatch of size_mismatch
exception FeatureIdNotFound of Dog_t.feature_id
val write: t -> Dog_t.feature_id -> string -> unit
(* [write t feature_id vec] writes string [vec] to [t] corresponding
to [feature_id] . can raise [SizeMismatch] or
[FeatureIdNotFound]. *)
val read : t -> Dog_t.feature_id -> string
(* [read t feature_id] gets the vector corresponding to
[feature_id], or else raises [FeatureIdNotFound] *)
val array : t -> UInt8Array.t
type veq = {
vector_id : Dog_t.vector_id;
vector_length : int
}
type qfeature = (veq, veq) Dog_t.feature
val find : t -> Dog_t.feature_id -> qfeature
val num_observations : t -> int
end