Library
Module
Module type
Parameter
Class
Class type
A module providing efficient input buffers with preprocessing.
read buf pos
returns the character at position pos
in the buffer buf
, together with the new buffer and position.
val get : buffer -> int -> char
get buf pos
returns the character at position pos
in the buffer buf
.
val from_file : string -> buffer
from_file fn
returns a buffer constructed using the file fn
.
val from_channel : ?filename:string -> in_channel -> buffer
from_channel ~filename ch
returns a buffer constructed using the channel ch
. The optional filename
is only used as a reference to the channel in error messages.
val from_string : ?filename:string -> string -> buffer
from_string ~filename str
returns a buffer constructed using the string str
. The optional filename
is only used as a reference to the channel in error messages.
val from_fun : ('a -> unit) -> string -> ('a -> string) -> 'a -> buffer
from_fun finalise name get data
returns a buffer constructed from the object data
using the get
function. The get function is used to obtain one line of input from data
. The finalise
function is applied to data
when the end of file is reached. The name
string is used to reference the origin of the data in error messages.
Exception that can be raised by a preprocessor in case of error. The first string references the name of the buffer (e.g. the name of the corresponding file) and the second string contains the message.
module type Preprocessor = sig ... end
Specification of a preprocessor.
module WithPP (PP : Preprocessor) : sig ... end
Functor for building buffers with a preprocessor.
val is_empty : buffer -> int -> bool
is_empty buf
test whether the buffer buf
is empty.
val line_num : buffer -> int
line_num buf
returns the current line number of buf
.
val line_offset : buffer -> int
line_beginning buf
returns the offset of the current line in the buffer buf
.
val line : buffer -> string
line buf
returns the current line in the buffer buf
.
val line_length : buffer -> int
line_length buf
returns the length of the current line in the buffer buf
.
val utf8_col_num : buffer -> int -> int
utf8_col_num buf pos
returns the utf8 column number corresponding to the position pos
in buf
.
normalize buf pos
ensures that pos
is less than the length of the current line in str
.
val filename : buffer -> string
filename buf
returns the file name associated to the buf
.
val buffer_uid : buffer -> int
buffer_uid buf
returns a unique identifier for buf
.
leq_bug b1 i1 b2 i2
returns true if the position b1, i1
is before b2, i2
. Gives meaningless result if b1
and b2
do not refer to the same file.
....
First kind of table: association list in file order (first position in the beginning
module OrdTbl : sig ... end
module Tbl : sig ... end
Second kind of table: unordered, but imperative and more efficient