sig
type ('input, 'output) t
exception Feeding_stopped_transform of string
val make :
?name:string ->
feed:('input -> unit) ->
next:(bool -> [ `end_of_stream | `not_ready | `output of 'output ]) ->
unit -> ('input, 'output) Biocaml_transform.t
val feed : ('input, 'output) Biocaml_transform.t -> 'input -> unit
val next :
('input, 'output) Biocaml_transform.t ->
[ `end_of_stream | `not_ready | `output of 'output ]
val stop : ('input, 'output) Biocaml_transform.t -> unit
val name : ('input, 'output) Biocaml_transform.t -> string option
val identity : ?name:string -> unit -> ('a, 'a) Biocaml_transform.t
val to_stream_fun :
('input, 'output) Biocaml_transform.t ->
'input Stream.t -> 'output Stream.t
val in_channel_strings_to_stream :
?buffer_size:int ->
Pervasives.in_channel ->
(string, 'output) Biocaml_transform.t -> 'output Stream.t
val on_input :
('b, 'c) Biocaml_transform.t ->
f:('a -> 'b) -> ('a, 'c) Biocaml_transform.t
val on_output :
('a, 'b) Biocaml_transform.t ->
f:('b -> 'c) -> ('a, 'c) Biocaml_transform.t
val compose :
('a, 'b) Biocaml_transform.t ->
('b, 'c) Biocaml_transform.t -> ('a, 'c) Biocaml_transform.t
val mix :
('a1, 'b1) Biocaml_transform.t ->
('a2, 'b2) Biocaml_transform.t ->
f:('b1 -> 'b2 -> 'c) -> ('a1 * 'a2, 'c) Biocaml_transform.t
val filter_compose :
('il, 'ol) Biocaml_transform.t ->
('ir, 'our) Biocaml_transform.t ->
destruct:('ol -> [ `No of 'filtered | `Yes of 'ir ]) ->
reconstruct:([ `Done of 'our | `Filtered of 'filtered ] -> 'result) ->
('il, 'result) Biocaml_transform.t
val split_and_merge :
('il, 'ol) Biocaml_transform.t ->
('ir, 'our) Biocaml_transform.t ->
split:('input -> [ `left of 'il | `right of 'ir ]) ->
merge:([ `left of 'ol | `right of 'our ] -> 'output) ->
('input, 'output) Biocaml_transform.t
val make_result :
?name:string ->
feed:('input -> unit) ->
next:(bool ->
[ `end_of_stream | `not_ready | `output of ('a, 'b) Core.Result.t ]) ->
unit -> ('input, ('a, 'b) Core.Result.t) Biocaml_transform.t
val on_ok :
('input, ('ok, 'error) Core.Result.t) Biocaml_transform.t ->
f:('ok -> 'still_ok) ->
('input, ('still_ok, 'error) Core.Result.t) Biocaml_transform.t
val on_error :
('input, ('ok, 'error) Core.Result.t) Biocaml_transform.t ->
f:('error -> 'another_errror) ->
('input, ('ok, 'another_errror) Core.Result.t) Biocaml_transform.t
val compose_results :
on_error:([ `left of 'error_left | `right of 'error_right ] -> 'error) ->
('input_left, ('middle, 'error_left) Core.Result.t) Biocaml_transform.t ->
('middle, ('output_right, 'error_right) Core.Result.t)
Biocaml_transform.t ->
('input_left, ('output_right, 'error) Core.Result.t) Biocaml_transform.t
val compose_results_merge_error :
('a, ('b, 'el) Core.Result.t) Biocaml_transform.t ->
('b, ('d, 'er) Core.Result.t) Biocaml_transform.t ->
('a, ('d, [ `left of 'el | `right of 'er ]) Core.Result.t)
Biocaml_transform.t
val compose_result_left :
('input_left, ('middle, 'error) Core.Result.t) Biocaml_transform.t ->
('middle, 'output_right) Biocaml_transform.t ->
('input_left, ('output_right, 'error) Core.Result.t) Biocaml_transform.t
class type ['input, 'output] object_t =
object
method feed : 'input -> unit
method next : [ `end_of_stream | `not_ready | `output of 'output ]
method stop : unit
end
val to_object :
('a, 'b) Biocaml_transform.t -> ('a, 'b) Biocaml_transform.object_t
val of_object :
('a, 'b) Biocaml_transform.object_t -> ('a, 'b) Biocaml_transform.t
module Line_oriented :
sig
type parsing_buffer
val parsing_buffer :
?filename:string ->
unit -> Biocaml_transform.Line_oriented.parsing_buffer
val feed_line :
Biocaml_transform.Line_oriented.parsing_buffer -> string -> unit
val feed_string :
Biocaml_transform.Line_oriented.parsing_buffer -> string -> unit
val queued_lines :
Biocaml_transform.Line_oriented.parsing_buffer -> int
val is_empty : Biocaml_transform.Line_oriented.parsing_buffer -> bool
val next_line :
Biocaml_transform.Line_oriented.parsing_buffer -> string option
exception No_next_line
val next_line_exn :
Biocaml_transform.Line_oriented.parsing_buffer -> string
val current_position :
Biocaml_transform.Line_oriented.parsing_buffer -> Biocaml_pos.t
val contents :
Biocaml_transform.Line_oriented.parsing_buffer ->
string list * string option
val empty : Biocaml_transform.Line_oriented.parsing_buffer -> unit
val make :
?name:string ->
?filename:string ->
next:(Biocaml_transform.Line_oriented.parsing_buffer ->
[ `not_ready | `output of ('b, 'errnext) Core.Result.t ]) ->
on_error:([ `incomplete_input of
Biocaml_pos.t * string list * string option
| `next of 'errnext ] -> 'err) ->
unit -> (string, ('b, 'err) Core.Result.t) Biocaml_transform.t
val make_merge_error :
?name:string ->
?filename:string ->
next:(Biocaml_transform.Line_oriented.parsing_buffer ->
[ `not_ready
| `output of
('a,
[> `incomplete_input of
Biocaml_pos.t * string list * string option ]
as 'b)
Core.Result.t ]) ->
unit -> (string, ('a, 'b) Core.Result.t) Biocaml_transform.t
val lines : unit -> (string, string) Biocaml_transform.t
end
module Printer_queue :
sig
type 'a t
val make :
?buffer:[ `clear of int | `reset of int ] ->
to_string:('a -> string) ->
unit -> 'a Biocaml_transform.Printer_queue.t
val feed : 'a Biocaml_transform.Printer_queue.t -> 'a -> unit
val flush : 'a Biocaml_transform.Printer_queue.t -> string
val is_empty : 'a Biocaml_transform.Printer_queue.t -> bool
end
val make_general :
?name:string ->
next:(unit -> [ `end_of_stream | `not_ready | `output of 'output ]) ->
feed:('input -> unit) ->
stop:(unit -> unit) -> unit -> ('input, 'output) Biocaml_transform.t
end