chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] [Chicken-bugs] #384: define-foreign-record: allow cus


From: Chicken Scheme
Subject: [Chicken-janitors] [Chicken-bugs] #384: define-foreign-record: allow customization of foreign record type
Date: Mon, 10 Dec 2007 21:38:05 -0000

#384: define-foreign-record: allow customization of foreign record type
---------------------------------------+------------------------------------
 Reporter:  Hans Bulfone <address@hidden>  |        Type:  enhancement          
    
   Status:  new                        |    Priority:  minor                    
Milestone:                             |   Component:  compiler                 
  Version:  2.7                        |    Keywords:  ffi define-foreign-record
---------------------------------------+------------------------------------
 normally the accessor procedures created by define-foreign-record accept a
 c-pointer like
 argument for the record instance.  it would be cool if that could be
 customized to be able
 to store the instances in blobs and/or wrap them in scheme records.

 for example:

 {{{
 (define-record dfb-point blob)
 (define-foreign-type dfb-point blob dfb-point-blob)

 (let ((g0 make-dfb-point))
   (set! make-dfb-point
     (lambda ()
       (g0 (make-blob (foreign-value "sizeof(DFBPoint)" int))))))

 (define-record-printer (dfb-point g2 g3)
   (for-each
     (cut display <> g3)
     (list #\# #\< 'dfb-point #\space
           (dfb-point-x g2) #\space
           (dfb-point-y g2) #\>)))

 (define-foreign-record (dfb-point "DFBPoint")
   (existing-foreign-type: dfb-point)
   (int x)
   (int y))
 }}}

-- 
Ticket URL: <http://trac.callcc.org/ticket/384>
Chicken Scheme <http://www.call-with-current-continuation.org/>
The CHICKEN Scheme-to-C compiler

reply via email to

[Prev in Thread] Current Thread [Next in Thread]