Update for SWIG-1.3.16
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4007 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
8eb3766522
commit
a3255749ac
3 changed files with 1875 additions and 94 deletions
28
README
28
README
|
|
@ -1,6 +1,6 @@
|
||||||
SWIG (Simplified Wrapper and Interface Generator)
|
SWIG (Simplified Wrapper and Interface Generator)
|
||||||
|
|
||||||
Version: 1.3.15 (September 9, 2002)
|
Version: 1.3.16 (October 14, 2002)
|
||||||
|
|
||||||
$Header$
|
$Header$
|
||||||
|
|
||||||
|
|
@ -26,13 +26,13 @@ working on this are:
|
||||||
Luigi Ballabio (luigi.ballabio@fastwebnet.it) (Macintosh, STL wrapping)
|
Luigi Ballabio (luigi.ballabio@fastwebnet.it) (Macintosh, STL wrapping)
|
||||||
Sam Liddicott (saml@liddicott.com) (PHP)
|
Sam Liddicott (saml@liddicott.com) (PHP)
|
||||||
Art Yerkes (ayerkes@speakeasy.net) (Ocaml)
|
Art Yerkes (ayerkes@speakeasy.net) (Ocaml)
|
||||||
|
Thien-Thi Nguyen (ttn@glug.org) (build/test/misc)
|
||||||
|
|
||||||
Major contributors include:
|
Major contributors include:
|
||||||
Shibukawa Yoshiki (Japanese Translation)
|
Shibukawa Yoshiki (Japanese Translation)
|
||||||
Marcelo Matus (Evil C++ testing)
|
Marcelo Matus (Evil C++ testing)
|
||||||
Loic Dachary (Perl5)
|
Loic Dachary (Perl5)
|
||||||
Masaki Fukushima (Ruby)
|
Masaki Fukushima (Ruby)
|
||||||
Thien-Thi Nguyen (Testing/Misc)
|
|
||||||
|
|
||||||
Past contributors include:
|
Past contributors include:
|
||||||
Clark McGrew, Dustin Mitchell, Ian Cooke, Catalin Dumitrescu, Baran
|
Clark McGrew, Dustin Mitchell, Ian Cooke, Catalin Dumitrescu, Baran
|
||||||
|
|
@ -78,7 +78,7 @@ The most notable changes since SWIG1.1 include the following:
|
||||||
|
|
||||||
- Parsing support for almost all C/C++ datatypes.
|
- Parsing support for almost all C/C++ datatypes.
|
||||||
|
|
||||||
- A full C preprocessor with macro expansion.
|
- A full C preprocessor with macro expansion.
|
||||||
Includes C99 variadic macro support.
|
Includes C99 variadic macro support.
|
||||||
|
|
||||||
- Java, Ruby, MzScheme, PHP4, OCAML, Pike, and XML modules added.
|
- Java, Ruby, MzScheme, PHP4, OCAML, Pike, and XML modules added.
|
||||||
|
|
@ -132,10 +132,10 @@ well advised to read this.
|
||||||
|
|
||||||
Windows Installation
|
Windows Installation
|
||||||
====================
|
====================
|
||||||
Please see the Doc/Manual/Windows.html file for instructions on installing
|
Please see the Doc/Manual/Windows.html file for instructions on installing
|
||||||
SWIG on Windows and running the examples. The Windows distribution is
|
SWIG on Windows and running the examples. The Windows distribution is
|
||||||
called swigwin and includes a prebuilt SWIG executable, swig.exe, included in
|
called swigwin and includes a prebuilt SWIG executable, swig.exe, included in
|
||||||
the same directory as this README file. Otherwise it is exactly the same as
|
the same directory as this README file. Otherwise it is exactly the same as
|
||||||
the main SWIG distribution. There is no need to download anything else.
|
the main SWIG distribution. There is no need to download anything else.
|
||||||
|
|
||||||
Unix Installation
|
Unix Installation
|
||||||
|
|
@ -160,12 +160,12 @@ if you do this.
|
||||||
|
|
||||||
The file INSTALL details more about using configure. Also try
|
The file INSTALL details more about using configure. Also try
|
||||||
|
|
||||||
% ./configure --help.
|
% ./configure --help.
|
||||||
|
|
||||||
The configure script will attempt to locate various packages on your
|
The configure script will attempt to locate various packages on your
|
||||||
machine, including Tcl, Perl5, Python and other target languages that SWIG
|
machine, including Tcl, Perl5, Python and other target languages that SWIG
|
||||||
uses. Don't panic if you get 'not found' messages--SWIG does not need these
|
uses. Don't panic if you get 'not found' messages--SWIG does not need these
|
||||||
packages to compile or run. The configure script is actually looking for
|
packages to compile or run. The configure script is actually looking for
|
||||||
these packages so that you can try out the SWIG examples contained
|
these packages so that you can try out the SWIG examples contained
|
||||||
in the 'Examples' directory without having to hack Makefiles.
|
in the 'Examples' directory without having to hack Makefiles.
|
||||||
|
|
||||||
|
|
@ -194,16 +194,16 @@ many parts of the implementation including obscure corner cases. If some
|
||||||
of these tests fail or generate warning messages, there is no reason for
|
of these tests fail or generate warning messages, there is no reason for
|
||||||
alarm---the test may be related to some new SWIG feature or a difficult bug
|
alarm---the test may be related to some new SWIG feature or a difficult bug
|
||||||
that we're trying to resolve. Chances are that SWIG will work just fine
|
that we're trying to resolve. Chances are that SWIG will work just fine
|
||||||
for you.
|
for you.
|
||||||
|
|
||||||
Note: SWIG's support for C++ is sufficiently advanced that certain
|
Note: SWIG's support for C++ is sufficiently advanced that certain
|
||||||
tests may fail on older C++ compilers (for instance if your compiler
|
tests may fail on older C++ compilers (for instance if your compiler
|
||||||
does not support member templates). These errors are harmless if you
|
does not support member templates). These errors are harmless if you
|
||||||
don't intend to use these features in your own programs.
|
don't intend to use these features in your own programs.
|
||||||
|
|
||||||
Note: The test-suite currently contains more than 170 tests. If you
|
Note: The test-suite currently contains more than 170 tests. If you
|
||||||
have many different target languages installed and a slow machine, it
|
have many different target languages installed and a slow machine, it
|
||||||
might take more than an hour to run the test-suite.
|
might take more than an hour to run the test-suite.
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
========
|
========
|
||||||
|
|
|
||||||
113
TODO
113
TODO
|
|
@ -1,6 +1,6 @@
|
||||||
SWIG TO-DO
|
SWIG TO-DO
|
||||||
|
|
||||||
Release: SWIG-1.3.15 (Late August, 2002)
|
Release: SWIG-1.3.16 (Late September, 2002)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
**** = High Priority
|
**** = High Priority
|
||||||
|
|
@ -8,7 +8,7 @@ Release: SWIG-1.3.15 (Late August, 2002)
|
||||||
** = 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.16
|
defer = Implement in 1.3.17
|
||||||
|
|
||||||
CORE:
|
CORE:
|
||||||
|
|
||||||
|
|
@ -27,71 +27,47 @@ 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.
|
||||||
|
|
||||||
[DONE] Refinement of the overloading dispatch rules. If you have two
|
|
||||||
classes like this:
|
|
||||||
|
|
||||||
class Foo {
|
|
||||||
};
|
|
||||||
|
|
||||||
class Bar : public Foo {
|
|
||||||
};
|
|
||||||
|
|
||||||
and two overloaded methods:
|
|
||||||
|
|
||||||
void spam(Foo *f);
|
|
||||||
void spam(Bar *b);
|
|
||||||
|
|
||||||
SWIG should make sure that the derived class version is checked
|
|
||||||
first.
|
|
||||||
|
|
||||||
[DONE] Refinement of using directives. For example:
|
|
||||||
|
|
||||||
namespace foo {
|
|
||||||
int blah(int);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace bar {
|
|
||||||
double blah(double);
|
|
||||||
}
|
|
||||||
|
|
||||||
using foo::blah;
|
|
||||||
using bar::blah;
|
|
||||||
|
|
||||||
Currently, SWIG reports an error (redefined symbol). Instead, it should be
|
|
||||||
silent.
|
|
||||||
|
|
||||||
It's not entirely clear what should happen in terms of overloading. Currently,
|
|
||||||
the two functions can't be combined into an overloaded method (they are
|
|
||||||
in separate namespaces and the functions don't quite combine like that).
|
|
||||||
|
|
||||||
One could generate wrappers for the using declarations. However, this
|
|
||||||
could generate a conflict (if both the namespace and non-namespace version
|
|
||||||
are wrapped).
|
|
||||||
|
|
||||||
[DONE] Modify exception handling code not to apply to attribute access. Should
|
|
||||||
reduce the amount of wrapper code substantially when a global exception
|
|
||||||
handler is used.
|
|
||||||
|
|
||||||
**** Typemap environments. Stay tuned.
|
**** Typemap environments. Stay tuned.
|
||||||
|
|
||||||
[DONE] Implement option to print dependencies.
|
**** Merge "in" and "ignore" typemaps into a single "in" typemap.
|
||||||
|
This would solve a variety of subtle problems with multiple
|
||||||
|
argument typemaps and other typemap code. I propose to merge
|
||||||
|
the typemaps by making "ignore" a typemap attribute.
|
||||||
|
For example:
|
||||||
|
|
||||||
**** Implement "throw" typemaps for all of the target languages.
|
%typemap(in,ignore="1") int *OUTPUT (int temp) {
|
||||||
|
$1 = &temp;
|
||||||
|
}
|
||||||
|
|
||||||
[DONE] If a wrapper can't be generated to a function/method for some
|
This merging makes a lot of sense because "in" and "ignore"
|
||||||
reason, provide a flag that prevents that function/method from
|
typemaps both deal with input argument handling and they are
|
||||||
appearing the dispatch function.
|
meant to be mutually exclusive of each other. By unifying
|
||||||
|
into a single typemap, you fix the mutual exclusion problem
|
||||||
|
(since there is only one typemap). I also think it makes
|
||||||
|
more sense to think of an "ignored" argument as a input value
|
||||||
|
property.
|
||||||
|
|
||||||
If a language module sets the "error" attribute of a node, it is
|
Update: Matthias proposes a generalization in which the
|
||||||
not included in the dispatch function.
|
number of input arguments could be specified. For example:
|
||||||
|
|
||||||
[DONE] Investigate the enhancement of exception handling to match against exceptions
|
%typemap(in,numinputs="0") int *OUTPUT (int temp) {
|
||||||
specified with throw specifiers.
|
$1 = &temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
This seems to be a better solution.
|
||||||
|
|
||||||
|
|
||||||
|
**** Implement "throws" typemaps for all of the target languages.
|
||||||
|
Partly implemented for Tcl, Perl, Python, Ruby, Java.
|
||||||
|
|
||||||
*** 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
|
||||||
|
to properly transfer control out of a wrapper function while
|
||||||
|
reclaiming resources.
|
||||||
|
|
||||||
*** 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:
|
||||||
|
|
@ -119,10 +95,11 @@ defer ready to go. The primary obstacle lies in the target language
|
||||||
|
|
||||||
[ Partially finished for Tcl/Python. ]
|
[ Partially finished for Tcl/Python. ]
|
||||||
|
|
||||||
|
[DONE] Modify smart pointer handling to properly handle inheritance. For
|
||||||
*** Modify smart pointer handling to properly handle inheritance. For
|
|
||||||
example:
|
example:
|
||||||
|
|
||||||
|
%ignore Foo;
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
public:
|
public:
|
||||||
Blah *operator->();
|
Blah *operator->();
|
||||||
|
|
@ -161,12 +138,6 @@ defer ready to go. The primary obstacle lies in the target language
|
||||||
using a template type, but that type hasn't been instantiated using
|
using a template type, but that type hasn't been instantiated using
|
||||||
%template.
|
%template.
|
||||||
|
|
||||||
[DONE] Fix build problems on 64-bit platforms. We need to replace
|
|
||||||
NULL by (char *) NULL in most modules.
|
|
||||||
|
|
||||||
Defined NIL as (char *) NULL. Used that in most modules--especially
|
|
||||||
with functions like Printv().
|
|
||||||
|
|
||||||
* Fix template partial specialization matching rules. SWIG does not
|
* Fix template partial specialization matching rules. SWIG does not
|
||||||
implement the proper C++ type deduction rules, but it does handle
|
implement the proper C++ type deduction rules, but it does handle
|
||||||
the most common cases. This is likely to be hard and implementing
|
the most common cases. This is likely to be hard and implementing
|
||||||
|
|
@ -174,7 +145,6 @@ defer ready to go. The primary obstacle lies in the target language
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
[DONE] Fix Python Windows examples.
|
|
||||||
|
|
||||||
**** Upgrade libtool to a more recent version. Might fix linking on OS-X
|
**** Upgrade libtool to a more recent version. Might fix linking on OS-X
|
||||||
but should definitely help on Cygwin.
|
but should definitely help on Cygwin.
|
||||||
|
|
@ -198,13 +168,11 @@ Library
|
||||||
|
|
||||||
All language modules
|
All language modules
|
||||||
--------------------
|
--------------------
|
||||||
[DONE] Convert use of char * to String *. Suggest using Replaceall()
|
|
||||||
instead of Replace(..., DOH_REPLACE_ANY);
|
|
||||||
|
|
||||||
Python
|
Python
|
||||||
------
|
------
|
||||||
|
|
||||||
**** Ability to wrap certain classes as Python built-in types.
|
*** Ability to wrap certain classes as Python built-in types.
|
||||||
|
|
||||||
Perl
|
Perl
|
||||||
----
|
----
|
||||||
|
|
@ -314,13 +282,6 @@ PHP
|
||||||
interact with the php "new <class>" notation.
|
interact with the php "new <class>" notation.
|
||||||
See: abstract_inherit_wrap.cpptest
|
See: abstract_inherit_wrap.cpptest
|
||||||
|
|
||||||
[DONE] Work out when we can but shouldn't dispose of objects because the
|
|
||||||
creator will. See %newobject in the docs. Works automatically for
|
|
||||||
constructors and return-by-value.
|
|
||||||
|
|
||||||
[DONE] Got class properties to work, and global vars to work both ways
|
|
||||||
with _set and _get accessors
|
|
||||||
|
|
||||||
** Look at pass by point and passby ref,
|
** Look at pass by point and passby ref,
|
||||||
Make sometype** to be auto allocated
|
Make sometype** to be auto allocated
|
||||||
Make sometype& and sometype* to be autoallocated IF THEY ARE NOT
|
Make sometype& and sometype* to be autoallocated IF THEY ARE NOT
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue