From b0ecf83ef0f3dfbfce808c2cfc88ff0c8d9809f1 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 23 Sep 2017 11:14:27 +0200 Subject: Deprecate opaque struct fields * NEWS: Add entry. * doc/ref/api-data.texi (Vtables, Structure Basics): Remove mention of opaque field protection. * libguile/struct.c (scm_make_struct_layout, scm_make_struct_no_tail): Remove discussion of opaque fields. (set_vtable_layout_flags): Issue a deprecation warning when opaque fields are used. --- doc/ref/api-data.texi | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'doc') diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi index faddc3f65..e0f8be324 100644 --- a/doc/ref/api-data.texi +++ b/doc/ref/api-data.texi @@ -8795,9 +8795,6 @@ The second letter for each field is a permission code, @item @code{r} -- read-only, the field can be read but not written. @item -@code{o} -- opaque, the field can be neither read nor written at the -Scheme level. This can be used for fields which should only be used -from C code. @end itemize Here are some examples. @@ -8850,11 +8847,6 @@ used to have a @code{make-struct} that took an additional argument; while we deprecate that old interface, @code{make-struct/no-tail} is the new name for this functionality. -Fields with permission @code{o} opaque fields are ignored for the -@var{init} arguments, ie.@: an argument is not consumed by such a field. -An @code{o} slot is always set to @code{#f} or 0 (with the intention -that C code will do something to it later). - For example, @example @@ -8886,8 +8878,7 @@ Return @code{#t} if @var{obj} is a structure, or @code{#f} if not. Return the contents of field number @var{n} in @var{struct}. The first field is number 0. -An error is thrown if @var{n} is out of range, or if the field cannot -be read because it's @code{o} opaque. +An error is thrown if @var{n} is out of range. @end deffn @deffn {Scheme Procedure} struct-set! struct n value @@ -8896,7 +8887,7 @@ Set field number @var{n} in @var{struct} to @var{value}. The first field is number 0. An error is thrown if @var{n} is out of range, or if the field cannot -be written because it's @code{r} read-only or @code{o} opaque. +be written because it's @code{r} read-only. @end deffn @deffn {Scheme Procedure} struct-vtable struct -- cgit v1.2.3