This is the mail archive of the guile@cygnus.com mailing list for the guile project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi --
With all the suggestions I have gotten recently, I have made a major
overhaul of G-Wrap, from version 0.2 to version 0.3 (sorry it has
taken so long). The end of the README file at the end of this message
lists the major changes.
I hope no one minds the severity of the changes to the interface. I
am under the impression that few-enough people are using the system so
far that the total pain from updating G-Wrap interface code will be
small. From the feedback I have gotten, I am also under the
impression that people who use the system so far are willing to adapt
to a better interface (or maybe I have only heard from those who
didn't like the previous one :).
The documentation and distribution are available from
http://www.cs.cmu.edu/~chrislee/g-wrap/
Feedback, and especially bug-reports and fixes, are very welcome.
-Chris
ps. The internal documentation facility, *gw:descriptions*, is not
working perfectly at the moment and I think it has to do with the
module system. For loadable modules, anyway, only the functions
from the last module loaded seem to be documented.
Here is the README file:
*************************************************************************
G-Wrap -- A tool for exporting C libraries into Guile
=====================================================
This is a tool for specifying types, functions, and constants to
import into a Scheme interpreter, and for generating code (in C) to
interface these to the Guile interpreter in particular.
Read the manual (doc/g-wrap.texi,
http://www.cs.cmu.edu/afs/cs/usr/chrislee/www/g-wrap/g-wrap.html,
or http://www.cs.cmu.edu/afs/cs/usr/chrislee/www/g-wrap/g-wrap.ps.gz)
to learn how to use this package.
Installing
==========
Edit the Makefile as it directs and do "make" then "make install". If
you know about how to set up automatic configuration, feel free to
show me how and/or send patches -- I haven't done this yet.
Contents
=========
COPYING - Describes the terms under which you may redistribute
G-Wrap, and explains that there is no warranty.
g-wrap-fns.c - Functions needed for Guile implementation of type extensions
g-wrap.h - Header for g-wrap.h
g-wrap.scm - Guile implementation of G-Wrap
guile-types.scm - Types currently implemented for G-Wrap's Guile support
output-file.scm - Utilities for generating an output file (used by g-wrap.scm)
doc/example-g-wrap.scm - Example code from the user manual
doc/g-wrap.texi - The user manual
g-wrap-guile - a script for building Guile glue from a specification file
Author
======
Christopher Lee (chrislee@ri.cmu.edu)
Newly added in version 0.3:
======================================================================
- A capability for generating dynamically-linkable Guile modules
- Automatic support for exporting functions with more than 10 arguments,
without modification of libguile.
- No longer relies on Slib (slib dependencies removed from output-file.scm,
and g-wrap.scm)
- Made generated *.h files more C++ friendly
- New options for wrapping structures which are passed by value
rather than by reference, and for generating C++ code.
- new-function: New interface, automatically adds description to an
assq list in variable "*gw:descriptions*", complete with a
prototype and list of parameter and return types.
- Renamed many functions -- the interface is pretty new overall.
+ define-constant --> new-constant
+ c-file-include-local-header --> gwrap-c-include-local-header
+ c-file-include-global-header --> gwrap-c-include-global-header
+ open-c-file --> gwrap-c-open-file
+ output-c --> gwrap-c-output-c
+ output-h --> gwrap-c-output-h
+ make-wrapper-c-type --> gwrap-c-assume-types-wrapped (simpler interface)
- Code for generating Guile wrapper code is now a Guile module
- g-wrap-guile is now written to use Guile interpreter rather than SCM
- types are now given symbolic keys rather than being returned in
structures
+ new function formats:
(add-type scheme-sym c-type-str fn-to-scm fn-from-scm fn-isa)
(add-new-type scheme-sym the-type)
(new-type scheme-sym c-name c-print-name c-die-name c-eq-name . options)
+ If options contains (c-gc-name "fname"), fname is called for
protecting objects from GC
+ If options contains (pass-c-ptr? #f), type is passed as struct
rather than pointer to struct
- gwrap-c-open-file:
Accepts options telling it to generate a C++ file and/or code for a
dynamically linkable module