Now trying it with struct-field-accessors/mutators.
This commit is contained in:
parent
f54f04edee
commit
db66e3e95d
|
@ -210,9 +210,9 @@
|
||||||
;; make-field-info creates a new field-info for a field.
|
;; make-field-info creates a new field-info for a field.
|
||||||
;; The caller gives the absolute position, and this function fills
|
;; The caller gives the absolute position, and this function fills
|
||||||
;; in the projections.
|
;; in the projections.
|
||||||
(define (make-field-info apos)
|
(define (make-field-info cls rpos)
|
||||||
(let ([field-ref (λ (o) (unsafe-struct-ref o apos))]
|
(let ([field-ref (make-struct-field-accessor (class-field-ref cls) rpos)]
|
||||||
[field-set! (λ (o v) (unsafe-struct-set! o apos v))])
|
[field-set! (make-struct-field-mutator (class-field-set! cls) rpos)])
|
||||||
(vector field-ref field-set! field-ref field-set!)))
|
(vector field-ref field-set! field-ref field-set!)))
|
||||||
|
|
||||||
(define (field-info-extend-internal! fi ppos pneg)
|
(define (field-info-extend-internal! fi ppos pneg)
|
||||||
|
@ -2181,8 +2181,8 @@
|
||||||
;; Add class/index pairs for public fields.
|
;; Add class/index pairs for public fields.
|
||||||
(unless no-new-fields?
|
(unless no-new-fields?
|
||||||
(for ([id (in-list public-field-names)]
|
(for ([id (in-list public-field-names)]
|
||||||
[i (in-naturals (class-field-width super))])
|
[i (in-naturals)])
|
||||||
(hash-set! field-ht id (make-field-info i))))
|
(hash-set! field-ht id (make-field-info c i))))
|
||||||
|
|
||||||
;; -- Extract superclass methods and make rename-inners ---
|
;; -- Extract superclass methods and make rename-inners ---
|
||||||
(let ([rename-supers (map (lambda (index mname)
|
(let ([rename-supers (map (lambda (index mname)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user