Module Lwt_fmt
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(lwt CONSTRAINT "= 5.6.1" FINDLIBS lwt lwt.unix) DkSDKProject_MakeAvailable(lwt)Add the
Findlib::lwtlibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "lwt" {>= "5.6.1"} ]Then run:
opam install . --deps-only
FINALLY, add the lwt.unix library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt.unix))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt.unix))This module bridges the gap between
Stdlib.Format and Lwt.
Although it is not required, it is recommended to use this module with
the Fmt library.
Compared to regular formatting function, the main difference is that printing statements will now return promises instead of blocking.
valprintf : ``('a,Stdlib.Format.formatter, unit, ``unitLwt.t)``format4->'a
Returns a promise that prints on the standard output. Similar to
Stdlib.Format.printf.
valeprintf : ``('a,Stdlib.Format.formatter, unit, ``unitLwt.t)``format4->'a
Returns a promise that prints on the standard error. Similar to
Stdlib.Format.eprintf.
Formatters
typeformatter
Lwt enabled formatters
typeorder`` =
|Stringofstring * int * int(*
String (s, off, len)indicate the output ofsat offsetoffand lengthlen.*)
|Flush(* Flush operation
*)
valmake_stream : ``unit->orderLwt_stream.t*formatter
make_stream () returns a formatter and a stream of all the writing
order given on that stream.
valof_channel :Lwt_io.output_channel->formatter
of_channel oc creates a formatter that writes to the channel oc.
valstdout :formatter
Formatter printing on Lwt_io.stdout.
valstderr :formatter
Formatter printing on Lwt_io.stdout.
valmake_formatter : ``commit:``(``unit->``unitLwt.t)``->``fmt:Stdlib.Format.formatter->``unit->formatter
make_formatter ~commit ~fmt creates a new lwt formatter based on the
Stdlib.Format.formatter
fmt. The commit function will be called by the printing functions to
update the underlying channel.
valget_formatter :formatter->Stdlib.Format.formatter
get_formatter fmt returns the underlying
Stdlib.Format.formatter.
To access the underlying formatter during printing, it is recommended to
use %t and %a.
Printing
valfprintf :formatter->``('a,Stdlib.Format.formatter, unit, ``unitLwt.t)``format4->'a
valkfprintf : ``(formatter->``unitLwt.t->'a)``->formatter->``('b,Stdlib.Format.formatter, unit,'a)``format4->'b
valifprintf :formatter->``('a,Stdlib.Format.formatter, unit, ``unitLwt.t)``format4->'a
valikfprintf : ``(formatter->``unitLwt.t->'a)``->formatter->``('b,Stdlib.Format.formatter, unit,'a)``format4->'b
flush fmt flushes the formatter (as with
Stdlib.Format.pp_print_flush)
and executes all the printing action on the underlying channel.
Low level functions
valwrite_order :Lwt_io.output_channel->order->``unitLwt.t
write_order oc o applies the order o on the channel oc.
Write all the pending orders of a formatter. Warning: This function
flush neither the internal format queues nor the underlying channel and
is intended for low level use only. You should probably use
flush instead.
