sig
  type t = {
    mutable i_s : string;
    mutable i_pos : int;
    mutable i_len : int;
    mutable i_offs : int;
    mutable i_max_len : int;
    i_refill : Bi_inbuf.t -> int -> unit;
    i_shared : Bi_share.Rd.tbl;
  }
  exception End_of_input
  val try_preread : Bi_inbuf.t -> int -> int
  val read : Bi_inbuf.t -> int -> int
  val read_char : Bi_inbuf.t -> char
  val peek : Bi_inbuf.t -> char
  val from_string : ?pos:int -> ?shrlen:int -> string -> Bi_inbuf.t
  val from_channel :
    ?len:int -> ?shrlen:int -> Pervasives.in_channel -> Bi_inbuf.t
end