(guile.info.gz) Non-immediate objects
Info Catalog
(guile.info.gz) Immediate objects
(guile.info.gz) Unpacking the SCM type
(guile.info.gz) Heap Cell Type Information
18.2.7.3 Non-immediate objects
..............................
A Scheme object of type `SCM' that does not fulfill the `SCM_IMP'
predicate holds an encoded reference to a heap cell. This reference
can be decoded to a C pointer to a heap cell using the `SCM2PTR' macro.
The encoding of a pointer to a heap cell into a `SCM' value is done
using the `PTR2SCM' macro.
-- Macro: (scm_t_cell *) SCM2PTR (SCM X)
Extract and return the heap cell pointer from a non-immediate `SCM'
object X.
-- Macro: SCM PTR2SCM (scm_t_cell * X)
Return a `SCM' value that encodes a reference to the heap cell
pointer X.
Note that it is also possible to transform a non-immediate `SCM'
value by using `SCM_UNPACK' into a `scm_t_bits' variable. However, the
result of `SCM_UNPACK' may not be used as a pointer to a `scm_t_cell':
only `SCM2PTR' is guaranteed to transform a `SCM' object into a valid
pointer to a heap cell. Also, it is not allowed to apply `PTR2SCM' to
anything that is not a valid pointer to a heap cell.
Summary:
* Only use `SCM2PTR' on `SCM' values for which `SCM_IMP' is false!
* Don't use `(scm_t_cell *) SCM_UNPACK (X)'! Use `SCM2PTR (X)'
instead!
* Don't use `PTR2SCM' for anything but a cell pointer!
Info Catalog
(guile.info.gz) Immediate objects
(guile.info.gz) Unpacking the SCM type
(guile.info.gz) Heap Cell Type Information
automatically generated byinfo2html