Module Stdlib.Obj
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 ...
))typet
typeraw_data`` = nativeint
valrepr :'a->t
valobj :t->'a
valmagic :'a->'b
valis_block :t->bool
valis_int :t->bool
valtag :t->int
valsize :t->int
valreachable_words :t->int
Computes the total size (in words, including the headers) of all heap
blocks accessible from the argument. Statically allocated blocks are
excluded, unless the runtime system was configured with
--disable-naked-pointers.
- since 4.04
When using flambda:
set_field MUST NOT be called on immutable blocks. (Blocks allocated in
C stubs, or with new_block below, are always considered mutable.)
The same goes for set_double_field and set_tag. However, for
set_tag, in the case of immutable blocks where the middle-end
optimizers never see code that discriminates on their tag (for example
records), the operation should be safe. Such uses are nonetheless
discouraged.
For experts only: set_field et al can be made safe by first wrapping
the block in
Sys.opaque_identity, so any
information about its contents will not be propagated.
valset_tag :t->``int->unit
- deprecated Use with_tag instead.
valdouble_field :t->``int->float
valset_double_field :t->``int->``float->unit
valnew_block : ``int->``int->t
valtruncate :t->``int->unit
- deprecated
valfirst_non_constant_constructor_tag : int
vallast_non_constant_constructor_tag : int
vallazy_tag : int
valclosure_tag : int
valobject_tag : int
valinfix_tag : int
valforward_tag : int
valno_scan_tag : int
valabstract_tag : int
valstring_tag : int
valdouble_tag : int
valdouble_array_tag : int
valcustom_tag : int
valfinal_tag : int
- deprecated Replaced by custom_tag.
valint_tag : int
valout_of_heap_tag : int
valunaligned_tag : int
moduleClosure:sig...end
moduleExtension_constructor:sig...end
valextension_constructor :'a->extension_constructor
- deprecated use Obj.Extension_constructor.of_val
valextension_name : ``extension_constructor->string
- deprecated use Obj.Extension_constructor.name
valextension_id : ``extension_constructor->int
- deprecated use Obj.Extension_constructor.id
moduleEphemeron:sig...end
Ephemeron with arbitrary arity and untyped
