@@ -35,13 +35,19 @@ let[@inline never] grow_ self =
3535 let newcap = grow_cap_ self in
3636 grow_to_ self newcap
3737
38- let ensure_cap self n =
39- if n > capacity self then (
40- let newcap = max n (grow_cap_ self) in
41- grow_to_ self newcap
42- )
38+ let [@ inline never] ensure_cap_grow_ self n =
39+ (* new capacity, make sure it's at least [grow_cap_] so
40+ that repeated calls to [ensure_cap] have the amortized complexity *)
41+ let newcap = max n (grow_cap_ self) in
42+ grow_to_ self newcap
43+
44+ let [@ inline] ensure_cap self n =
45+ if n > capacity self then ensure_cap_grow_ self n
46+
47+ let [@ inline] ensure_free self n =
48+ if n > capacity self - self.len then ensure_cap_grow_ self (self.len + n)
4349
44- let shrink_to self n = if self.len > n then self.len < - n
50+ let [ @ inline] shrink_to self n = if self.len > n then self.len < - n
4551
4652let append_buf (self : t ) buf : unit =
4753 let n = Buffer. length buf in
@@ -54,10 +60,10 @@ let append_subbytes self b off len =
5460 Bytes. blit b off self.bs self.len len;
5561 self.len < - self.len + len
5662
57- let append_bytes self b = append_subbytes self b 0 (Bytes. length b)
58- let append_string self s = append_bytes self (Bytes. unsafe_of_string s)
63+ let [ @ inline] append_bytes self b = append_subbytes self b 0 (Bytes. length b)
64+ let [ @ inline] append_string self s = append_bytes self (Bytes. unsafe_of_string s)
5965
60- let append_substring self s off len =
66+ let [ @ inline] append_substring self s off len =
6167 append_subbytes self (Bytes. unsafe_of_string s) off len
6268
6369let [@ inline] add_char_unsafe_ self c =
@@ -94,13 +100,19 @@ let fold_left f acc self =
94100 done ;
95101 ! acc
96102
97- let iter f self =
98- let { bs; len } = self in
103+ let [@ inline] iter f self =
99104 (* capture current content *)
105+ let { bs; len } = self in
100106 for i = 0 to len do
101107 f (Bytes. unsafe_get bs i)
102108 done
103109
110+ let [@ inline] iteri f self =
111+ let { bs; len } = self in
112+ for i = 0 to len do
113+ f i (Bytes. unsafe_get bs i)
114+ done
115+
104116let of_seq seq =
105117 let self = create ~cap: 32 () in
106118 append_seq self seq;
0 commit comments