1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
-*- 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.
|