Copyright | (c) Sergey Vinokurov 2018 |
---|---|
License | BSD3-style (see LICENSE) |
Maintainer | serg.foo@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- data RawValue
- data Value s = Value {
- valuePayload :: !GlobalRef
- valueReleaseHandle :: !ReleaseKey
Documentation
Basic handle on an Emacs value. Can be GC'ed after any call into Emacs.
To overcome that, use ValueGC
.
Not a real pointer because emacs values are not really pointers. That is, they're completely opaque.
Instances
Storable RawValue Source # | |
Defined in Data.Emacs.Module.Raw.Value | |
NFData RawValue Source # | |
Defined in Data.Emacs.Module.Raw.Value |
Value that is independent of environment (Env
) that produced it.
Incidentally, this implies that it's "protected" against Emacs GC and
thus will not unexpectedly go out of scope.
In order to prevent memory leaks, value is registered in the Emacs
monad than produced it and will be freed when the monad finishes.
To make the connection clear the value is tagged with parameter
s
, which serves the same purpose as tag of the ST
monad. That
is, it ensures that value cannot leave the scope of the monad that
produced it.
Value | |
|