1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-30 06:50:31 +02:00

* data-rep.texi (Immediates vs. Non-immediates): Update

out-of-date documentation.  (Thanks to Dirk Herrmann for the
report!)
(Immediates vs Non-immediates): Renamed without the dot, since the
dot causes `info' not to be able to display this node!

* Makefile.am (guile_TEXINFOS): Add in a few more source files
that had got left out.
This commit is contained in:
Neil Jerram 2001-04-02 21:53:20 +00:00
parent f5e645584a
commit abaec75d1d
3 changed files with 25 additions and 24 deletions

View file

@ -1,3 +1,14 @@
2001-04-02 Neil Jerram <neil@ossau.uklinux.net>
* data-rep.texi (Immediates vs. Non-immediates): Update
out-of-date documentation. (Thanks to Dirk Herrmann for the
report!)
(Immediates vs Non-immediates): Renamed without the dot, since the
dot causes `info' not to be able to display this node!
* Makefile.am (guile_TEXINFOS): Add in a few more source files
that had got left out.
2001-03-30 Neil Jerram <neil@ossau.uklinux.net> 2001-03-30 Neil Jerram <neil@ossau.uklinux.net>
* scheme-reading.texi (Further Reading): Add bullets to further * scheme-reading.texi (Further Reading): Add bullets to further

View file

@ -31,7 +31,8 @@ guile_TEXINFOS = preface.texi intro.texi scheme-intro.texi \
scheme-translation.texi scheme-debug.texi deprecated.texi \ scheme-translation.texi scheme-debug.texi deprecated.texi \
scheme-reading.texi scheme-indices.texi slib.texi posix.texi \ scheme-reading.texi scheme-indices.texi slib.texi posix.texi \
expect.texi scsh.texi tcltk.texi scripts.texi gh.texi scm.texi \ expect.texi scsh.texi tcltk.texi scripts.texi gh.texi scm.texi \
appendices.texi indices.texi script-getopt.texi appendices.texi indices.texi script-getopt.texi data-rep.texi \
extend.texi
goops_TEXINFOS = goops-tutorial.texi hierarchy.eps hierarchy.txt goops_TEXINFOS = goops-tutorial.texi hierarchy.eps hierarchy.txt

View file

@ -46,7 +46,7 @@
@c essay @sp 10 @c essay @sp 10
@c essay @comment The title is printed in a large font. @c essay @comment The title is printed in a large font.
@c essay @title Data Representation in Guile @c essay @title Data Representation in Guile
@c essay @subtitle $Id: data-rep.texi,v 1.17 2001-03-09 08:21:59 ossau Exp $ @c essay @subtitle $Id: data-rep.texi,v 1.18 2001-04-02 21:53:20 ossau Exp $
@c essay @subtitle For use with Guile @value{VERSION} @c essay @subtitle For use with Guile @value{VERSION}
@c essay @author Jim Blandy @c essay @author Jim Blandy
@c essay @author Free Software Foundation @c essay @author Free Software Foundation
@ -433,7 +433,7 @@ everything one need know to use Guile's data.
@menu @menu
* General Rules:: * General Rules::
* Conservative GC:: * Conservative GC::
* Immediates vs. Non-immediates:: * Immediates vs Non-immediates::
* Immediate Datatypes:: * Immediate Datatypes::
* Non-immediate Datatypes:: * Non-immediate Datatypes::
* Signalling Type Errors:: * Signalling Type Errors::
@ -554,8 +554,8 @@ many pieces of code, it is enough for the collector to find the cell,
and then use the cell's type to find more pointers to trace. and then use the cell's type to find more pointers to trace.
@node Immediates vs. Non-immediates @node Immediates vs Non-immediates
@subsection Immediates vs. Non-immediates @subsection Immediates vs Non-immediates
Guile classifies Scheme objects into two kinds: those that fit entirely Guile classifies Scheme objects into two kinds: those that fit entirely
within an @code{SCM}, and those that require heap storage. within an @code{SCM}, and those that require heap storage.
@ -575,25 +575,14 @@ Return non-zero iff @var{x} is an immediate object.
@deftypefn Macro int SCM_NIMP (SCM @var{x}) @deftypefn Macro int SCM_NIMP (SCM @var{x})
Return non-zero iff @var{x} is a non-immediate object. This is the Return non-zero iff @var{x} is a non-immediate object. This is the
exact complement of @code{SCM_IMP}, above. exact complement of @code{SCM_IMP}, above.
You must use this macro before calling a finer-grained predicate to
determine @var{x}'s type. For example, to see if @var{x} is a pair, you
must write:
@example
SCM_NIMP (@var{x}) && SCM_CONSP (@var{x})
@end example
This is because Guile stores typing information for non-immediate values
in their cells, rather than in the @code{SCM} value itself; thus, you
must determine whether @var{x} refers to a cell before looking inside
it.
This is somewhat of a pity, because it means that the programmer needs
to know which types Guile implements as immediates vs. non-immediates.
There are (possibly better) representations in which @code{SCM_CONSP}
can be self-sufficient. The immediate type predicates do not suffer
from this weakness.
@end deftypefn @end deftypefn
Note that, as of Guile 1.4, it is no longer necessary to use the
@code{SCM_NIMP} macro before calling a finer-grained predicate to
determine @var{x}'s type, such as @code{SCM_CONSP} or
@code{SCM_VECTORP}. The definitions of all Guile type predicates
now include a call to @code{SCM_NIMP} where necessary.
@node Immediate Datatypes @node Immediate Datatypes
@subsection Immediate Datatypes @subsection Immediate Datatypes
@ -601,7 +590,7 @@ from this weakness.
The following datatypes are immediate values; that is, they fit entirely The following datatypes are immediate values; that is, they fit entirely
within an @code{SCM} value. The @code{SCM_IMP} and @code{SCM_NIMP} within an @code{SCM} value. The @code{SCM_IMP} and @code{SCM_NIMP}
macros will distinguish these from non-immediates; see @ref{Immediates macros will distinguish these from non-immediates; see @ref{Immediates
vs. Non-immediates} for an explanation of the distinction. vs Non-immediates} for an explanation of the distinction.
Note that the type predicates for immediate values work correctly on any Note that the type predicates for immediate values work correctly on any
@code{SCM} value; you do not need to call @code{SCM_IMP} first, to @code{SCM} value; you do not need to call @code{SCM_IMP} first, to
@ -748,7 +737,7 @@ specific storage location (in the nomenclature of the Revised^4 Report
on Scheme). on Scheme).
The @code{SCM_IMP} and @code{SCM_NIMP} macros will distinguish these The @code{SCM_IMP} and @code{SCM_NIMP} macros will distinguish these
from immediates; see @ref{Immediates vs. Non-immediates}. from immediates; see @ref{Immediates vs Non-immediates}.
Given a cell, Guile distinguishes between pairs and other non-immediate Given a cell, Guile distinguishes between pairs and other non-immediate
types by storing special @dfn{tag} values in a non-pair cell's car, that types by storing special @dfn{tag} values in a non-pair cell's car, that