+
+ (define (getter record)
+ (let* ((pointer (foreign-record-pointer record))
+ (record-type (foreign-record-type record))
+ (types (foreign-record-type-types record-type))
+ (values (parse-c-struct pointer types)))
+ (list-ref values getter-id)))
+ ...
+
+ (define (setter record new-value)
+ (let* ((pointer (foreign-record-pointer record))
+ (record-type (foreign-record-type record))
+ (types (foreign-record-type-types record-type))
+ (values (parse-c-struct pointer types)))
+ (list-set! values setter-id new-value)
+ (set-foreign-record-pointer! record (make-c-struct types values))
+ new-value))
+ ...
+