Make builds a module that is like Iobuf, except that the module also has some
controls for whether the various Iobuf functions do invariant checking and/or show
debug messages. Initially, the bool ref's are true.
The performance of the functions in the module resulting from Make can be much worse
than that of a plain Iobuf, even with all the controls set to false.
We use module type of struct include Iobuf end rather than module type of Iobuf
so that the debugging functions work on normal Iobufs.
include module type of sig ... endval sexp_of_seek : seek ‑> Base.Sexp.tval sexp_of_no_seek : no_seek ‑> Base.Sexp.ttype ('data_perm_read_write, 'seek_permission) t = ('data_perm_read_write, 'seek_permission) Core__Iobuf.tval invariant : 'a Base__.Invariant_intf.inv ‑> 'b Base__.Invariant_intf.inv ‑> ('a, 'b) t Base__.Invariant_intf.invmodule Window = Core__Iobuf.Windowmodule Limits = Core__Iobuf.Limitsmodule Hexdump = Core__Iobuf.Hexdumpmodule Debug = Core__Iobuf.Debugval create : len:int ‑> ('a, 'b) tval of_bigstring : ?pos:int ‑> ?len:int ‑> Core__.Import.Bigstring.t ‑> ([< Core__.Import.read_write ], 'a) tval of_string : string ‑> ('a, 'b) tval set_bounds_and_buffer : src:([> Core__.Import.write ] as a, 'b) t ‑> dst:('a, seek) t ‑> unitval set_bounds_and_buffer_sub : pos:int ‑> len:int ‑> src:([> Core__.Import.write ] as a, 'b) t ‑> dst:('a, seek) t ‑> unitval read_only : ([> Core__.Import.read ], 's) t ‑> (Core__.Import.read, 's) tval capacity : ('a, 'b) t ‑> intval length : ('a, 'b) t ‑> intval is_empty : ('a, 'b) t ‑> boolmodule type Bound : sig ... endmodule Lo_bound = Core__Iobuf.Lo_boundmodule Hi_bound = Core__Iobuf.Hi_boundval bounded_flip_lo : ('a, seek) t ‑> Lo_bound.t ‑> unitval compact : (Core__.Import.read_write, seek) t ‑> unitval bounded_compact : (Core__.Import.read_write, seek) t ‑> Lo_bound.t ‑> Hi_bound.t ‑> unitval bounded_flip_hi : ('a, seek) t ‑> Hi_bound.t ‑> unitval to_string : ?len:int ‑> ([> Core__.Import.read ], 'a) t ‑> stringval to_string_hum : ?max_lines:int ‑> ('a, 'b) t ‑> stringmodule Consume = Core__Iobuf.Consumemodule Fill = Core__Iobuf.Fillmodule Peek = Core__Iobuf.Peekmodule Poke = Core__Iobuf.Pokemodule Unsafe = Core__Iobuf.Unsafeval crc32 : ([> Core__.Import.read ], 'a) t ‑> Core__.Import.Int63.tval fill_bin_prot : ([> Core__.Import.write ], seek) t ‑> 'a Bin_prot.Type_class.writer ‑> 'a ‑> unit Core__.Import.Or_error.tval consume_bin_prot : ([> Core__.Import.read ], seek) t ‑> 'a Bin_prot.Type_class.reader ‑> 'a Core__.Import.Or_error.tmodule Blit = Core__Iobuf.Blitmodule Blit_consume = Core__Iobuf.Blit_consumemodule Blit_fill = Core__Iobuf.Blit_fillval sexp_of_ok_or_eof : ok_or_eof ‑> Base.Sexp.tval input : ([> Core__.Import.write ], seek) t ‑> Core__.Import.In_channel.t ‑> ok_or_eofval read : ([> Core__.Import.write ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> ok_or_eofval read_assume_fd_is_nonblocking : ([> Core__.Import.write ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> Core__.Syscall_result.Unit.tval pread_assume_fd_is_nonblocking : ([> Core__.Import.write ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> offset:int ‑> unitval recvfrom_assume_fd_is_nonblocking : ([> Core__.Import.write ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> Core.Iobuf_intf.Unix.sockaddrval recvmmsg_assume_fd_is_nonblocking : (Core.Iobuf_intf.Unix.File_descr.t ‑> Recvmmsg_context.t ‑> Core.Iobuf_intf.Unix.Syscall_result.Int.t) Core__.Import.Or_error.tval send_nonblocking_no_sigpipe : unit ‑> (([> Core__.Import.read ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> Core.Iobuf_intf.Unix.Syscall_result.Unit.t) Core__.Import.Or_error.tval sendto_nonblocking_no_sigpipe : unit ‑> (([> Core__.Import.read ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> Core.Iobuf_intf.Unix.sockaddr ‑> Core.Iobuf_intf.Unix.Syscall_result.Unit.t) Core__.Import.Or_error.tval output : ([> Core__.Import.read ], seek) t ‑> Core__.Import.Out_channel.t ‑> unitval write : ([> Core__.Import.read ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> unitval write_assume_fd_is_nonblocking : ([> Core__.Import.read ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> unitval pwrite_assume_fd_is_nonblocking : ([> Core__.Import.read ], seek) t ‑> Core.Iobuf_intf.Unix.File_descr.t ‑> offset:int ‑> unitmodule Expert = Core__Iobuf.Expertval check_invariant : bool Core__.Import.refval show_messages : bool Core__.Import.ref