open ExtBytes

module Buffer = struct

  include Buffer

#if OCAML < 402
  (* The uses of unsafe_{of,to}_string above are not semantically
     justified, as the Buffer implementation may very well capture and
     share parts of its internal buffer, or of input string given as
     input.

     They are however correct with respect to the implementation being
     used in OCaml 4.02.0; this implementation must be revisited if
     the string representation changes. *)
  let to_bytes b =
    Bytes.unsafe_of_string (contents b)

  let add_subbytes b s offset len =
    add_substring b (Bytes.unsafe_to_string s) offset len

  let add_bytes b s = add_string b (Bytes.unsafe_to_string s)
#endif
end
