package iostream
Generic, composable IO input and output streams
Install
Dune Dependency
Authors
Maintainers
Sources
iostream-0.2.2.tbz
sha256=6d2725f20fcca4fe8c8c54fcaa442fb088f20d1c5788c437182042cfcce3829d
sha512=8eb87e13ff448d627062ffb2b0e9b10c29fe5406dcac24889499f358a9d1c50fc1ea02dc601f49fecebd38833b415431265e7fad991a55308923f63fb0aa79ad
doc/src/iostream/out.ml.html
Source file out.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
class type t = object method output : bytes -> int -> int -> unit method close : unit -> unit end class type t_seekable = object inherit t inherit Seekable.t end class dummy : t = object method close () = () method output _ _ _ = () end let dummy : t = new dummy (** [of_out_channel oc] wraps the channel into a {!Out_channel.t}. @param close_noerr if true, then closing the result uses [close_out_noerr] instead of [close_out] to close [oc] *) class of_out_channel ?(close_noerr = false) (oc : out_channel) : t_seekable = object method output bs i len = output oc bs i len method close () = if close_noerr then close_out_noerr oc else ( flush oc; close_out oc ) method seek i = seek_out oc i method pos () = pos_out oc end let[@inline] of_out_channel ?close_noerr oc = new of_out_channel ?close_noerr oc let open_file ?close_noerr ?(mode = 0o644) ?(flags = [ Open_binary; Open_wronly; Open_creat; Open_trunc ]) filename : t_seekable = let oc = open_out_gen flags mode filename in of_out_channel ?close_noerr oc let with_open_file ?close_noerr ?mode ?flags filename f = let oc = open_file ?close_noerr ?mode ?flags filename in Fun.protect ~finally:oc#close (fun () -> f oc) class of_buffer (buf : Buffer.t) : t = object method close () = () method output bs i len = Buffer.add_subbytes buf bs i len end let[@inline] of_buffer buf = new of_buffer buf (** Output the buffer slice into this channel *) let[@inline] output (self : #t) buf i len : unit = self#output buf i len let[@inline] output_string (self : #t) (str : string) : unit = self#output (Bytes.unsafe_of_string str) 0 (String.length str) (** Close the channel. *) let[@inline] close self : unit = self#close () let output_int self i = let s = string_of_int i in output_string self s let tee (l : t list) : t = match l with | [] -> dummy | [ oc ] -> oc | _ -> object method output bs i len = List.iter (fun oc -> output oc bs i len) l method close () = List.iter close l end class map_char f (oc : #t) : t = object method output buf i len = for j = i to i + len - 1 do let c = Bytes.get buf j in (* safety: [j] is valid because [get] above did not raise *) Bytes.unsafe_set buf j (f c) done; output oc buf i len method close () = close oc end let[@inline] map_char f oc = new map_char f oc
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>