Module Mtime.Span
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(mtime CONSTRAINT "= 2.0.0+dune" FINDLIBS mtime mtime.clock mtime.clock.os mtime.top) DkSDKProject_MakeAvailable(mtime)Add the
Findlib::mtimelibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::mtime)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install mtime.2.0.0+duneEdit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (mtime (>= 2.0.0+dune))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "mtime" {>= "2.0.0+dune"} ]Then run:
opam install . --deps-only
FINALLY, add the mtime library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
mtime))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
mtime))Monotonic time spans
typet`` =span
See Mtime.span.
valzero :span
zero is a span of 0ns.
valone :span
one is a span of 1ns.
valmax_span :span
max_span is 264-1ns.
Predicates
Arithmetic
abs_diff span span' is the absolute difference between span and
span'.
Durations
n * dur is n times duration dur.
Warning. Does not check for overflow or that n is positive.
valns :span
ns is a nanosecond duration, 1·10-9s.
- since 1.4.0
valus :span
us is a microsecond duration, 1·10-6s.
- since 1.4.0
valms :span
ms is a millisecond duration, 1·10-3s.
- since 1.4.0
vals :span
s is a second duration, 1s.
- since 1.4.0
valmin :span
min is a minute duration, 60s.
- since 1.4.0
valhour :span
hour is an hour duration, 3600s.
- since 1.4.0
valday :span
day is a day duration, 86'400s.
- since 1.4.0
valyear :span
year is a Julian year duration (365.25 days), 31'557'600s.
Converting
valto_uint64_ns :span->int64
to_uint64_ns span is span as an unsigned 64-bit integer nanosecond
span.
valof_uint64_ns : ``int64->span
of_uint64_ns u is the unsigned 64-bit integer nanosecond span u as
a span.
valof_float_ns : ``float->spanoption
of_float_ns f is the positive floating point nanosecond span f as a
span. This is None if f is negative, non finite, or larger or equal
than 253 (~104 days, the largest exact floating point
integer).
- since 2.0.0
valto_float_ns :span->float
to_float_ns s is span as a nanosecond floating point span. Note that
if s is larger than 253 (~104 days, the largest exact
floating point integer) the result is an approximation and will not
round trip with of_float_ns.
- since 2.0.0
Formatters
valpp :Stdlib.Format.formatter->span->unit
pp formats spans according to their magnitude using SI prefixes on
seconds and accepted non-SI units. Years are counted in Julian years
(365.25 SI-accepted days) as
defined by
the International Astronomical Union.
Rounds towards positive infinity, i.e. over approximates, no duration is formatted shorter than it is.
The output is UTF-8 encoded, it uses U+03BC for µs
(10-6s).
valdump :Stdlib.Format.formatter->t->unit
dump ppf span formats an unspecified raw representation of span on
ppf.
