package reparse

  1. Overview
  2. Docs

Module Reparse.Make_buffered_inputSource

Makes a buffered INPUT module. Buffered input provide backtracking functionality in Reparse for those input that doesn't support random seeking, for eg. Unix socket descriptors, Lwt input channels, Lwt streams, etc.

Parameters

module Promise : PROMISE
module Input : BUFFERED_INPUT with type 'a promise = 'a Promise.t

Signature

Sourcetype t

Represents the input.

Sourcetype 'a promise = 'a Promise.t

Represents an input promise.

Sourcetype input = Input.t
Sourceval create : input -> t
Sourceval trim_buffer : t -> pos:int -> unit promise

trim_buffer t ~pos removes data from the input buffer up till pos.

Note After the input buffer is trimmed the parser is unable to backtrack to pos less than pos.

Sourceval get_char : t -> pos:int -> [ `Char of char | `Eof ] promise
Sourceval get_char_unbuffered : t -> pos:int -> [ `Char of char | `Eof ] promise
Sourceval get_cstruct : t -> pos:int -> len:int -> [ `Cstruct of Cstruct.t | `Eof ] promise

get t ~pos ~len returns `String s where String.length s <= len or `Eof if EOI is reached.

Sourceval last_trimmed_pos : t -> int promise
Sourceval buffer_size : t -> int option promise