Update for 1.3.17 release

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4127 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2002-11-23 13:15:50 +00:00
commit 5fcae5eb66
2 changed files with 27 additions and 22 deletions

2
README
View file

@ -1,6 +1,6 @@
SWIG (Simplified Wrapper and Interface Generator) SWIG (Simplified Wrapper and Interface Generator)
Version: 1.3.16 (October 14, 2002) Version: 1.3.17 (November 22, 2002)
$Header$ $Header$

47
TODO
View file

@ -1,11 +1,11 @@
SWIG TO-DO SWIG TO-DO
Release: SWIG-1.3.16 (Late September, 2002) Release: SWIG-1.3.16 (Late September, 2002)
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
**** = High Priority **** = High Priority
*** = Implement if possible. *** = Implement if possible.
** = Will implement if time. ** = Will implement if time.
* = Implement if bored (or deemed necessary). * = Implement if bored (or deemed necessary).
defer = Implement in 1.3.17 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 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. **** 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: *** Add attributes to the %feature directive. Something like:
%feature("except", throws="OutOfMemoryException") %feature("except", throws="OutOfMemoryException")
*** Implement $fail special variable substitution in wrappers. Used *** Implement $fail special variable substitution in wrappers. Used
to properly transfer control out of a wrapper function while to properly transfer control out of a wrapper function while
reclaiming resources. 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 *** Rewrite declaration annotation to better unify %rename and related
directives. Add a selector mechanism that allows specific parse tree directives. Add a selector mechanism that allows specific parse tree
nodes to be identified. For example: 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 Also desirable for the Java module to specify the classes to go in the
throw clause: throw clause:
%feature("except", throws="OutOfMemoryException") Foo { %feature("except", throws="OutOfMemoryException") Foo {
... code which throws the OutOfMemoryException ... ... code which throws the OutOfMemoryException ...
}; };
Consider use of wildcards. Namespace/nested scope support in 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. *** Bring Aquinas' contract/assertion checking code online.
*** Add more intelligent information related to object ownership. *** 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 objects when they are assigned to pointer variables and structure
members as well as stored in a container (i.e., an array of pointers). 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: public:
Blah *operator->(); Blah *operator->();
}; };
class Bar : public Foo { 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 ** Unification of symbol tables and type system scopes. In a sense
they capture the same information so it is not necessary to have they capture the same information so it is not necessary to have
both. The existence of two symbol management systems is mostly both. The existence of two symbol management systems is mostly
historical. historical.
** Add a warning for uninstantiated templates. For example, if a function ** Add a warning for uninstantiated templates. For example, if a function
using a template type, but that type hasn't been instantiated using 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 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. **** 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. 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 * Upgrade autoconf? This will definitely help for Windows. The later the
version the better. version the better.
Library Library
------- -------
@ -218,10 +222,10 @@ Ruby
from Base2 would still work as they currently are, unless other derived from Base2 would still work as they currently are, unless other derived
classes also use MI. The exception and extra wrapper generation would classes also use MI. The exception and extra wrapper generation would
only kick in with the use of multiple inheritance where the base class 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 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, I was under the impression that the Tcl module, until a few releases ago,
did all inheritance this way (generating wrappers for superclass methods 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 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. 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 Another problem (which we can't really get around anyways) is that
basic inheritance relationships wouldn't be true at the Ruby level, 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) e.g. Derived#is_a?(Base1) would return true but Derived#is_a?(Base2)
would return false. would return false.
** A related suggestion from Brett Williams (and perhaps an alternative ** A related suggestion from Brett Williams (and perhaps an alternative
to the previously described workaround for MI) is to provide a to the previously described workaround for MI) is to provide a
variant of the %extend directive that allows you to pretend that these 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 As written, SWIG would expect you to have provided functions with
names classname_AddArtProperty(), etc. somewhere else in the wrapper names classname_AddArtProperty(), etc. somewhere else in the wrapper
code. We'd prefer that it somehow knew to call the function directly. code. We'd prefer that it somehow knew to call the function directly.
* Consider adding a switch to define everything in the global (Kernel) * Consider adding a switch to define everything in the global (Kernel)
module instead of nested in a user-defined module, but only if module instead of nested in a user-defined module, but only if
it comes up. it comes up.
@ -266,8 +270,7 @@ Ruby
Java Java
---- ----
* Consider using typemaps for proxy class code generation. [partially [DONE] Consider using typemaps for proxy class code generation.
implemented]
PHP PHP
--- ---
@ -315,7 +318,7 @@ Guile
code that puts the functions into our type table. No code that puts the functions into our type table. No
additional functions are generated. additional functions are generated.
-- The default for all pointer types would be: -- The default for all pointer types would be:
%typemap(destructor) SWIGPOINTER * "free"; %typemap(destructor) SWIGPOINTER * "free";
(or "delete" for C++) (or "delete" for C++)
@ -336,6 +339,8 @@ Guile
** Maybe communicate the type system between object modules via Scheme ** Maybe communicate the type system between object modules via Scheme
variables, rather than a shared object. variables, rather than a shared object.
** Provide a clean way to construct type predicates.
Mzscheme Mzscheme
-------- --------