1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
type t =
| Varint of Int64.t
| Fixed_64_bit of Int64.t
| Length_delimited of {
offset : int;
length : int;
data : string;
}
| Fixed_32_bit of Int32.t
let show = function
| Varint i -> Printf.sprintf "Varint %Ld" i
| Fixed_64_bit i -> Printf.sprintf "Fixed_64_bit %Ld" i
| Length_delimited { offset; length; data = _} -> Printf.sprintf "Length_delimited: %d" (length - offset)
| Fixed_32_bit i -> Printf.sprintf "Fixed_32_bit %ld" i
let varint v = Varint v
let fixed_32_bit v = Fixed_32_bit v
let fixed_64_bit v = Fixed_64_bit v
let length_delimited ?(offset=0) ?length data =
let length = Option.value ~default:(String.length data - offset) length in
Length_delimited {offset; length; data}