guile-user
[Top][All Lists]
Advanced

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

how to use ffi-help


From: Matt Wette
Subject: how to use ffi-help
Date: Sat, 22 Dec 2018 10:46:25 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

Hi All,

I have created a helper for generating FFI code for Guile.   The current
use case is to create file called a "ffi module" that specifies includes
and libraries that will be used to create a loadable Guile module. In the
process, the FFI Helper (FH) parses C code and, from that, generates Guile
FFI code.  See

  ffi-helper: https://www.nongnu.org/nyacc/ffi-help.html

  project: https://savannah.nongnu.org/projects/nyacc

I think the package is at a very usable point right now, and
I am starting to converge on a 1.0 release.  So now I am
soliciting inputs on other ways to use this package.  Namely,
are convenience routines needed for some use cases?

For example, one user wanted to be able to write `(include "cairo.h")'.
As you may imagine, it can't be this simple.   I do have this:

  guile> (load-include-file "cairo.h" #:pkg-config "cairo")

but even this is a bit of a challenge for me.  Not to write the code,
but to digest the whole use case.  Do you want the generated scheme
code preserved?  If so, do I need to provide an option for setting the
output file name?  If a "pkg-config" is not available then the user
will need to pass compile flags (e.g., include dirs), load flags,
libraries, etc.  I would need to add more options for this.  It could
get messy.  All that functionality lives in the "ffi-module" paradigm
right now, so maybe this is really not needed.  What do you think?

Maybe you are generating FFI yourself but want to see what FH would do
for a specific struct typedef appearing in a particular include file.
You can do this with the ffi-module approach, using the #:decl-filter
option which allows one to restrict which declarations get expanded.
Is a separate convenience routine needed?

Currently I think all other uses can be derived from the current "ffi
module" paradigm.  Making convenience routines is going to be tricky,
because so many options may need to added.  I don't think it's worth the
work to add them, but I'd like to hear what you have to say.

Comments?

Matt




reply via email to

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