diff options
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | TODO | 47 |
2 files changed, 27 insertions, 22 deletions
@@ -1,6 +1,6 @@ SWIG (Simplified Wrapper and Interface Generator) -Version: 1.3.16 (October 14, 2002) +Version: 1.3.17 (November 22, 2002) $Header$ @@ -1,11 +1,11 @@ -SWIG TO-DO +SWIG TO-DO Release: SWIG-1.3.16 (Late September, 2002) ----------------------------------------------------------------------------- **** = High Priority *** = Implement if possible. -** = Will implement if time. +** = Will implement if time. * = Implement if bored (or deemed necessary). defer = Implement in 1.3.17 @@ -25,7 +25,7 @@ defer ready to go. The primary obstacle lies in the target language }; This is one of the last remaining "hard" problems in the SWIG - core, but it is important that we solve it. + core, but it is important that we solve it. **** Typemap environments. Stay tuned. @@ -62,12 +62,19 @@ defer ready to go. The primary obstacle lies in the target language *** Add attributes to the %feature directive. Something like: - %feature("except", throws="OutOfMemoryException") + %feature("except", throws="OutOfMemoryException") *** Implement $fail special variable substitution in wrappers. Used to properly transfer control out of a wrapper function while reclaiming resources. +*** Better targeting of output typemaps. For example: + It is not possible to target an output typemap for function + Foo::func() and not Bar::func(). Output typemaps need to support + syntax something along the lines of: + + %typemap(out) int *Foo::func { ... } + *** Rewrite declaration annotation to better unify %rename and related directives. Add a selector mechanism that allows specific parse tree nodes to be identified. For example: @@ -77,8 +84,8 @@ defer ready to go. The primary obstacle lies in the target language Also desirable for the Java module to specify the classes to go in the throw clause: - %feature("except", throws="OutOfMemoryException") Foo { - ... code which throws the OutOfMemoryException ... + %feature("except", throws="OutOfMemoryException") Foo { + ... code which throws the OutOfMemoryException ... }; Consider use of wildcards. Namespace/nested scope support in @@ -89,7 +96,7 @@ defer ready to go. The primary obstacle lies in the target language *** Bring Aquinas' contract/assertion checking code online. *** Add more intelligent information related to object ownership. - SWIG should be able to automatically strip ownership from + SWIG should be able to automatically strip ownership from objects when they are assigned to pointer variables and structure members as well as stored in a container (i.e., an array of pointers). @@ -104,7 +111,7 @@ defer ready to go. The primary obstacle lies in the target language public: Blah *operator->(); }; - + class Bar : public Foo { } @@ -132,7 +139,7 @@ defer ready to go. The primary obstacle lies in the target language ** Unification of symbol tables and type system scopes. In a sense they capture the same information so it is not necessary to have both. The existence of two symbol management systems is mostly - historical. + historical. ** Add a warning for uninstantiated templates. For example, if a function using a template type, but that type hasn't been instantiated using @@ -146,9 +153,6 @@ defer ready to go. The primary obstacle lies in the target language Build ----- -**** Upgrade libtool to a more recent version. Might fix linking on OS-X - but should definitely help on Cygwin. - **** Make sure there are tests for *ALL* library files in the test-suite. A number of files appear to be broken in SWIG-1.3.13. @@ -157,7 +161,7 @@ Build * Upgrade autoconf? This will definitely help for Windows. The later the version the better. - + Library ------- @@ -218,10 +222,10 @@ Ruby from Base2 would still work as they currently are, unless other derived classes also use MI. The exception and extra wrapper generation would only kick in with the use of multiple inheritance where the base class - information is available to SWIG. + information is available to SWIG. The feature could be turned on and off, and doesn't have to be default - if necessary. + if necessary. I was under the impression that the Tcl module, until a few releases ago, did all inheritance this way (generating wrappers for superclass methods @@ -235,12 +239,12 @@ Ruby support for MI at all unless you want to get fancy with mixins. I'm not sure how good of an idea that is or even if it is workable. """ - + Another problem (which we can't really get around anyways) is that basic inheritance relationships wouldn't be true at the Ruby level, e.g. Derived#is_a?(Base1) would return true but Derived#is_a?(Base2) would return false. - + ** A related suggestion from Brett Williams (and perhaps an alternative to the previously described workaround for MI) is to provide a variant of the %extend directive that allows you to pretend that these @@ -258,7 +262,7 @@ Ruby As written, SWIG would expect you to have provided functions with names classname_AddArtProperty(), etc. somewhere else in the wrapper code. We'd prefer that it somehow knew to call the function directly. - + * Consider adding a switch to define everything in the global (Kernel) module instead of nested in a user-defined module, but only if it comes up. @@ -266,8 +270,7 @@ Ruby Java ---- -* Consider using typemaps for proxy class code generation. [partially - implemented] +[DONE] Consider using typemaps for proxy class code generation. PHP --- @@ -315,7 +318,7 @@ Guile code that puts the functions into our type table. No additional functions are generated. - -- The default for all pointer types would be: + -- The default for all pointer types would be: %typemap(destructor) SWIGPOINTER * "free"; (or "delete" for C++) @@ -336,6 +339,8 @@ Guile ** Maybe communicate the type system between object modules via Scheme variables, rather than a shared object. +** Provide a clean way to construct type predicates. + Mzscheme -------- |