Replace "pr" struct fields with "pw" fields
* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT): Layout is a "pr" field. * module/ice-9/boot-9.scm (record-type-vtable): Record vtable fields are writable. (<parameter>): "pw" fields. * module/oop/goops.scm (<class>, %compute-layout): <read-only> fields are "pw" underneath. * module/rnrs/records/procedural.scm (record-type-vtable) (record-constructor-vtable, make-record-type-descriptor): Use "pw" fields in vtables. * module/srfi/srfi-35.scm (%condition-type-vtable) (struct-layout-for-condition): "pw" fields in vtables. * test-suite/tests/goops.test: * test-suite/tests/structs.test: Use "pw" fields only. * benchmark-suite/benchmarks/structs.bm: Update for make-struct/no-tail, to use pw fields, and also to remove useless tests that the compiler would optimize away. * doc/ref/api-data.texi (Vtables): Add a note about the now-vestigial permissions character and update documentation. (Structure Basics, Meta-Vtables): Update examples. * libguile/hash.c (scm_i_struct_hash): Remove code that would handle opaque/self fields. * libguile/print.h (SCM_PRINT_STATE_LAYOUT): Use "pw" fields. * libguile/struct.c (scm_struct_init): Simplify check for hidden fields. * libguile/values.c (scm_init_values): Field is "pw".
This commit is contained in:
parent
0f14a9e598
commit
5870188eb4
13 changed files with 83 additions and 112 deletions
|
|
@ -1178,7 +1178,7 @@ VALUE."
|
|||
|
||||
;; 0: type-name, 1: fields, 2: constructor
|
||||
(define record-type-vtable
|
||||
(let ((s (make-vtable (string-append standard-vtable-fields "prprpw")
|
||||
(let ((s (make-vtable (string-append standard-vtable-fields "pwpwpw")
|
||||
(lambda (s p)
|
||||
(display "#<record-type " p)
|
||||
(display (record-type-name s) p)
|
||||
|
|
@ -1328,7 +1328,7 @@ VALUE."
|
|||
|
||||
(define <parameter>
|
||||
;; Three fields: the procedure itself, the fluid, and the converter.
|
||||
(make-struct/no-tail <applicable-struct-vtable> 'pwprpr))
|
||||
(make-struct/no-tail <applicable-struct-vtable> 'pwpwpw))
|
||||
(set-struct-vtable-name! <parameter> '<parameter>)
|
||||
|
||||
(define* (make-parameter init #:optional (conv (lambda (x) x)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue