Module Ephemeron.K1
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(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))type``('k, 'd) t
an ephemeron with one key
valcreate : ``unit->``('k,'d)``t
Ephemeron.K1.create () creates an ephemeron with one key. The data and
the key are empty
- alert old_ephemeron_api This function won't be available in 5.0
valget_key : ``('k,'d)``t->'koption
Ephemeron.K1.get_key eph returns None if the key of eph is empty,
Some x (where x is the key) if it is full.
- alert old_ephemeron_api This function won't be available in 5.0
valget_key_copy : ``('k,'d)``t->'koption
Ephemeron.K1.get_key_copy eph returns None if the key of eph is
empty, Some x (where x is a (shallow) copy of the key) if it is
full. This function has the same GC friendliness as
Weak.get_copy
If the element is a custom block it is not copied.
- alert old_ephemeron_api This function won't be available in 5.0
valset_key : ``('k,'d)``t->'k->unit
Ephemeron.K1.set_key eph el sets the key of eph to be a (full) key
to el
- alert old_ephemeron_api This function won't be available in 5.0
valunset_key : ``('k,'d)``t->unit
Ephemeron.K1.unset_key eph el sets the key of eph to be an empty
key. Since there is only one key, the ephemeron starts behaving like a
reference on the data.
- alert old_ephemeron_api This function won't be available in 5.0
valcheck_key : ``('k,'d)``t->bool
Ephemeron.K1.check_key eph returns true if the key of the eph is
full, false if it is empty. Note that even if
Ephemeron.K1.check_key eph returns true, a subsequent
Ephemeron.K1.get_keyeph can return None.
- alert old_ephemeron_api This function won't be available in 5.0
Ephemeron.K1.blit_key eph1 eph2 sets the key of eph2 with the key of
eph1. Contrary to using Ephemeron.K1.get_key
followed by Ephemeron.K1.set_key or
Ephemeron.K1.unset_key this function does not
prevent the incremental GC from erasing the value in its current cycle.
- alert old_ephemeron_api This function won't be available in 5.0
valget_data : ``('k,'d)``t->'doption
Ephemeron.K1.get_data eph returns None if the data of eph is
empty, Some x (where x is the data) if it is full.
- alert old_ephemeron_api This function won't be available in 5.0
valget_data_copy : ``('k,'d)``t->'doption
Ephemeron.K1.get_data_copy eph returns None if the data of eph is
empty, Some x (where x is a (shallow) copy of the data) if it is
full. This function has the same GC friendliness as
Weak.get_copy
If the element is a custom block it is not copied.
- alert old_ephemeron_api This function won't be available in 5.0
valset_data : ``('k,'d)``t->'d->unit
Ephemeron.K1.set_data eph el sets the data of eph to be a (full)
data to el
- alert old_ephemeron_api This function won't be available in 5.0
valunset_data : ``('k,'d)``t->unit
Ephemeron.K1.unset_data eph el sets the key of eph to be an empty
key. The ephemeron starts behaving like a weak pointer.
- alert old_ephemeron_api This function won't be available in 5.0
valcheck_data : ``('k,'d)``t->bool
Ephemeron.K1.check_data eph returns true if the data of the eph is
full, false if it is empty. Note that even if
Ephemeron.K1.check_data eph returns true, a subsequent
Ephemeron.K1.get_dataeph can return None.
- alert old_ephemeron_api This function won't be available in 5.0
Ephemeron.K1.blit_data eph1 eph2 sets the data of eph2 with the data
of eph1. Contrary to using Ephemeron.K1.get_data
followed by Ephemeron.K1.set_data or
Ephemeron.K1.unset_data this function does not
prevent the incremental GC from erasing the value in its current cycle.
- alert old_ephemeron_api This function won't be available in 5.0
valmake :'k->'d->``('k,'d)``t
Ephemeron.K1.make k d creates an ephemeron with key k and data d.
valquery : ``('k,'d)``t->'k->'doption
Ephemeron.K1.query eph key returns Some x (where x is the
ephemeron's data) if key is physically equal to eph's key, and
None if eph is empty or key is not equal to eph's key.
Functor building an implementation of a weak hash table
moduleMakeSeeded(H:Hashtbl.SeededHashedType) :SeededSwithtypekey=H.t
Functor building an implementation of a weak hash table. The seed is
similar to the one of
Hashtbl.MakeSeeded.
moduleBucket:sig...end
