[gambit-list] more fun with c-ffi

Pavel Dudrenov dudrenov at gmail.com
Mon Feb 16 18:24:00 EST 2009


Does Marc have the ___NAME stuff documented somewhere? I know that if
I read the compiler code I'd probably figure it out, but someone might
have done that already. From the small bits and peaces I've seen,
mainly from FFI code in gambit, it reminds me of an assembly/register
machine in C.

Pavel


On Mon, Feb 16, 2009 at 3:17 PM, Guillaume Cartier
<gcartier at jazzscheme.org> wrote:
> Here's how Marc does it in his Xlib.scm example :
> (define GCFunction
>   ((c-lambda () unsigned-long "___result = GCFunction;")))
> (define GCPlaneMask
>   ((c-lambda () unsigned-long "___result = GCPlaneMask;")))
> (define GCForeground
>   ((c-lambda () unsigned-long "___result = GCForeground;")))
> (define GCBackground
>   ((c-lambda () unsigned-long "___result = GCBackground;")))
> (define GCLineWidth
>   ((c-lambda () unsigned-long "___result = GCLineWidth;")))
>
> On Mon, Feb 16, 2009 at 5:40 PM, lowly coder <lowlycoder at huoyanjinjing.com>
> wrote:
>>
>> looking at the glut ffi at the dumping grounds, we have lines like:
>>
>> (define GL_NORMAL_ARRAY #x8075)
>> (define GL_COLOR_ARRAY #x8076)
>> (define GL_INDEX_ARRAY #x8077)
>> (define GL_TEXTURE_COORD_ARRAY #x8078)
>>
>> this is really cool because ... now, in scheme land, I also know the
>> values of these defines
>>
>> suppose however, I didn't care about the values of these globals in scheme
>> land ... and suppose, i'm writing the ffi for naother library and I don't
>> want to manually (or write a script) to get the value of each of these
>> constants, is there anyway I can do something like:
>>
>> (c-define-foreign-varaible gl_normal_array "GL_NORMAL_ARRAY")
>>
>> and have gl_normal_array (only in compiled mode, I recognize this will
>> fail in interpted mode) just get expanded to "GL_NORMAL_ARRAY" during
>> compilation?
>>
>> thanks!
>>
>> (I also dislike the eralier method in that ... if API changes causes the
>> global vars to have different values ... i'll have lots of fun with silent
>> var value changes
>>
>> _______________________________________________
>> Gambit-list mailing list
>> Gambit-list at iro.umontreal.ca
>> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>>
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>



More information about the Gambit-list mailing list