3.5 Pointer Types
Corresponds to Racket
C pointer values. These pointers can have
an arbitrary Racket object attached as a type tag. The tag is ignored
by built-in functionality; it is intended to be used by interfaces.
See
Tagged C Pointer Types for creating pointer types that
use these tags for safety. A
#f value is converted to
NULL and vice versa.
The address referenced by a _pointer value must not refer to
memory managed by the garbage collector (unless the address
corresponds to a value that supports interior pointers and that is
otherwise referenced to preserve the value from garbage collection).
The reference is not traced or updated by the garbage collector.
The equal? predicate equates C pointers (including pointers
for _gcpointer and possibly containing an offset) when they
refer to the same address.
Like
_pointer, but for a C pointer value that can refer to memory
managed by the garbage collector.
Although a _gcpointer can reference to memory that is not
managed by the garbage collector, beware of using an address that
might eventually become managed by the garbage collector. For example,
if a reference is created by malloc with 'raw and
released by free, then the free may allow the memory
formerly occupied by the reference to be used later by the garbage
collector.
A type that can be used with any Racket object; it corresponds to the
Scheme_Object* type of Racket’s C API (see
Inside: Racket C API). It is useful only for libraries that are aware of
Racket’s C API.
A type generated by _cprocedure or _fun builds on
_fpointer, and normally _cprocedure or _fun
should be used instead of _fpointer.
Creates a type that is like
ctype, but
#f is
converted to
NULL and vice versa. The given
ctype must
have the same C representation as
_pointer,
_gcpointer, or
_fpointer.
Creates a type that is like
ctype, but whose base
representation is like
_gcpointer instead of
_pointer. The given
ctype must have a base
representation like
_pointer or
_gcpointer (and in
the later case, the result is the
ctype).