-(define-record-type standard-foreign-record-type
- (make-foreign-record-type name types fields)
- foreign-record-type?
- (name foreign-record-type-name)
- (types foreign-record-type-types)
- (fields foreign-record-type-fields))
-
-(define-record-type foreign-record
- (make-foreign-record type pointer)
- foreign-record?
- (type foreign-record-type)
- (pointer foreign-record-pointer set-foreign-record-pointer!))
-
-(set-record-type-printer! foreign-record
- (lambda (record port)
- (format port "#<~a" (foreign-record-type-name (foreign-record-type record)))
- (let* ((pointer (foreign-record-pointer record))
- (record-type (foreign-record-type record))
- (types (foreign-record-type-types record-type))
- (fields (foreign-record-type-fields record-type))
- (values (parse-c-struct pointer types)))
- (for-each (lambda (field value)
- (format port " ~a: ~a" field value))
- fields
- values))
- (format port ">")))
-