-*- outline -*- * for release 1.3.8 (or 1.4.0?) ** Revive the documentation ** Maybe port Wrapper DOH-ification from CVS head ** Fix all the bugs on SourceForge ** Add facilities to attach documentation strings to procedures. There is a patch by twburton on SF for the Python language module, but it needs to be done for all language modules. ** Add support for type annotations, see mkoeppe's message: http://mailman.cs.uchicago.edu/pipermail/swig/2001-June/002652.html * for the unstable 1.5 series ** Maybe use libtool rather than all the home-grown compile/link stuff ** The behavior of SWIG with respect to call/return-by-value needs to be verified for all language modules. Previously, the parser automatically performed the conversion of pass-by-value to pass-by-reference. Unfortunately, this confused typemap handling and other aspects of the system. I have removed this behavior. However, in doing so, the handling of user defined types is passed on to the language modules. ** All of the SWIG 1.1p5 examples need to be verified. Changes in type handling and internal data structures may have broken a variety of things. ** [Guile] Maybe support keyword args ** [Guile] Maybe support GOOPS shadow classes ** [Guile] Support garbage collection. *** %new annotation decides whether a pointer smob can be gc'ed. *** New smob type `swig-gc'; instances created with SWIG_Guile_MakeCollectablePtr. %new versions of the pointer typemaps use this function rather than SWIG_Guile_MakePtr. *** New typemaps "destructor", "gcmarker". Their values are taken as identifiers for functions taking one argument: a pointer to the object to be destroyed, or whose SCM-valued subobjects are to be marked. After creating the pointer equivalence table, we iterate again over the remembered pointer types, emitting code that puts the functions into our type table. No additional functions are generated. *** The default for all pointer types would be: %typemap(destructor) SWIGPOINTER * "free"; *** A special annotation, e.g. FREED, can be attached to the arguments of destructor functions, so that explicitly freed structs won't be collected by the GC again. Like this: %typemap(argout) SWIGPOINTER *FREED { smob-tag($source) = swig; /* non-gc */ smob-data($source) = NULL; } void free_foo(struct foo *FREED); ** Make a tricky header file defining annotations invisible to the C compiler. The idea is to prepare one file that serves both as a C header file and a SWIG interface file. void add(SWIG_OUTPUT(int) *z, int x, int y) ** Unify Guile and MzScheme support, add support for more Scheme systems.