Library
Module
Module type
Parameter
Class
Class type
Abstraction over the input containing the input to read from.
The abstract input type. Informally, an "input" of type t
should support:
val file : string -> t
file fname
is an input that corresponds to the content of the file named fname
.
val string : string -> t
string s
is an input that corresponds to the content of the string s
.
val bytes : bytes -> t
bytes b
is an input that corresponds to the content of the bytes array b
.
val raw :
seek:(int -> (unit, [ `Invalid_position ]) result) ->
read_char:(unit -> (char, [ `End_of_input ]) result) ->
t
Creates an input from functions seek
and read
.
The function seek
will be called once, before any call to read_char
. If the call to seek
fails and returns Error `Invalid_position
, the input is considered to be unreadable and will be treated equivalenty as the empty input. This might happen even if the input is valid, if one tries to highlight an invalid location.
managed f
enables creating an input which lifetime is managed explicitely. In other words, it handles inputs with explicit open and close operations.
For instance, a file (which needs to be explicitely opened then close) is an instance of managed
.
If f()
returns (i, c)
, then using the input managed f
will first call f()
to access the underlying input i
, and will terminate by calling c ()
.