New entry.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@258 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Thien-Thi Nguyen 2000-02-24 18:47:11 +00:00
commit bb54324f24

281
CHANGES
View file

@ -1,9 +1,16 @@
SWIG (Simplified Wrapper and Interface Generator) SWIG (Simplified Wrapper and Interface Generator)
2/24/00 : ttn
Incorporate Guile support contributed by Clark McGrew.
This works with Guile 1.3, but since it depends heavily
on the gh_ interface, it should work for all later versions.
It has not been tested with versions before 1.3.
WARNING: Code is unstable due to experimentation by ttn.
Version 1.3 Alpha 1 (February 11, 2000) Version 1.3 Alpha 1 (February 11, 2000)
======================================= =======================================
2/11/00 : Added 'void' to prototype of Python module initializer. 2/11/00 : Added 'void' to prototype of Python module initializer.
Reported by Mark Howson (1/20/00). Reported by Mark Howson (1/20/00).
2/11/00 : beazley 2/11/00 : beazley
@ -49,14 +56,14 @@ Version 1.3 Alpha 1 (February 11, 2000)
return val return val
becomes becomes
def method1(self, *_args): def method1(self, *_args):
val = apply(test2c.PyClass1_method1, (self,) + _args) val = apply(test2c.PyClass1_method1, (self,) + _args)
return val return val
2. Incorporate self into the _args tuple. This saves at least one tuple 2. Incorporate self into the _args tuple. This saves at least one tuple
allocation per method call. allocation per method call.
def method1(self, *_args): def method1(self, *_args):
val = apply(test2c.PyClass1_method1, (self,) + _args) val = apply(test2c.PyClass1_method1, (self,) + _args)
return val return val
@ -67,13 +74,13 @@ Version 1.3 Alpha 1 (February 11, 2000)
val = apply(test2c.PyClass1_method1, _args) val = apply(test2c.PyClass1_method1, _args)
return val return val
3. Remove *Ptr classes. 3. Remove *Ptr classes.
Assume that we are SWIGging a c++ class CppClass. Assume that we are SWIGging a c++ class CppClass.
Currently SWIG will generate both CppClassPtr class Currently SWIG will generate both CppClassPtr class
that hosts all methods and also CppClass that is derived that hosts all methods and also CppClass that is derived
from the former and contains just the constructor. from the former and contains just the constructor.
When CppClass method is called, the interpreter will try When CppClass method is called, the interpreter will try
to find it in the CppClass's dictionary first, and only then to find it in the CppClass's dictionary first, and only then
check the base class. check the base class.
CppClassPtr functionality may be emulated with: CppClassPtr functionality may be emulated with:
@ -85,10 +92,10 @@ Version 1.3 Alpha 1 (February 11, 2000)
This saves us one dictionary lookup per call. This saves us one dictionary lookup per call.
<DB>The new module was first added in Python-1.5.2 so it <DB>The new module was first added in Python-1.5.2 so it
won't work with older versions. I've implemented an won't work with older versions. I've implemented an
alternative that achieves the same thing</DB> alternative that achieves the same thing</DB>
4. Use CObjects instead of strings for pointers. 4. Use CObjects instead of strings for pointers.
Dave: This enhancements result in speedups of up to 50% in some Dave: This enhancements result in speedups of up to 50% in some
@ -97,7 +104,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
2/1/00 : Upgraded the Python module to use a new type-checking scheme that 2/1/00 : Upgraded the Python module to use a new type-checking scheme that
is more memory efficient, provides better performance, and is more memory efficient, provides better performance, and
is less error prone. Unfortunately, it will break all code that is less error prone. Unfortunately, it will break all code that
depends on the SWIG_GetPtr() function call in typemaps. depends on the SWIG_GetPtr() function call in typemaps.
These functions should be changed as follows: These functions should be changed as follows:
if (SWIG_GetPtr(string,&ptr,"_Foo_p")) { if (SWIG_GetPtr(string,&ptr,"_Foo_p")) {
@ -125,7 +132,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
Keep configure scripts so that people are not *forced* to autoconf Keep configure scripts so that people are not *forced* to autoconf
Keep sources generated by yacc so that compilation without yacc Keep sources generated by yacc so that compilation without yacc
is possible. is possible.
Source/LParse/cscanner.c: change lyacc.h into parser.h to please Source/LParse/cscanner.c: change lyacc.h into parser.h to please
default yacc generation rules. default yacc generation rules.
Use AC_CONFIG_SUBDIRS in configure.in instead of hand made script. Use AC_CONFIG_SUBDIRS in configure.in instead of hand made script.
Update all relevant .cvsignore to include .deps Update all relevant .cvsignore to include .deps
@ -145,18 +152,18 @@ Version 1.3 Alpha 1 (February 11, 2000)
Patch contributed by Dieter Baron. Patch contributed by Dieter Baron.
1/13/00 : loic 1/13/00 : loic
Added .cvsignore, Examples/.cvsignore, Source/DOH/Doh/.cvsignore Added .cvsignore, Examples/.cvsignore, Source/DOH/Doh/.cvsignore
Source/SWIG1.1/main.cxx: Fixed -I handling bug Source/SWIG1.1/main.cxx: Fixed -I handling bug
Source/Modules1.1/java.cxx: fixed char* -> const char* warnings that are Source/Modules1.1/java.cxx: fixed char* -> const char* warnings that are
errors when compiling with gcc-2.95.2 errors when compiling with gcc-2.95.2
Source/SWIG1.1/main.cxx: cast const char* to char* for String_replace Source/SWIG1.1/main.cxx: cast const char* to char* for String_replace
token and rep should really be const. token and rep should really be const.
1/12/00 : beazley 1/12/00 : beazley
Added Harco's Java modules. Added Harco's Java modules.
1/12/00 : beazley 1/12/00 : beazley
Revoked the %ifdef, %ifndef, %endif, %if, %elif, and %else Revoked the %ifdef, %ifndef, %endif, %if, %elif, and %else
directives. These are no longer needed as SWIG now has a real directives. These are no longer needed as SWIG now has a real
preprocessor. preprocessor.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
@ -167,7 +174,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
to begin with). to begin with).
1/12/00 : beazley 1/12/00 : beazley
Removed the -stat option for printing statistics. The Removed the -stat option for printing statistics. The
statistics reporting was inadequate and mostly broken statistics reporting was inadequate and mostly broken
anyway. anyway.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
@ -214,13 +221,13 @@ Version 1.3 Alpha 1 (February 11, 2000)
Examples/ Examples Examples/ Examples
More directories will be added as needed. More directories will be added as needed.
12/08/99: Loic Dachary (loic@senga.org) 12/08/99: Loic Dachary (loic@senga.org)
Enhanced package handling for perl5 and c++. Enhanced package handling for perl5 and c++.
With new option -hide Foo::Bar, every perl5 object (Frob) is With new option -hide Foo::Bar, every perl5 object (Frob) is
qualified by Foo::Bar::Frob. The package name is solely used qualified by Foo::Bar::Frob. The package name is solely used
to encapsulate C/C++ wrappers output in <module>_wrap.c and the to encapsulate C/C++ wrappers output in <module>_wrap.c and the
corresponding perl package in <module>.pm. Note that a package corresponding perl package in <module>.pm. Note that a package
name may contain :: (Frob::Nitz) and will be relative to the name may contain :: (Frob::Nitz) and will be relative to the
package name provided by -hide (Foo::Bar::Frob::Nitz). package name provided by -hide (Foo::Bar::Frob::Nitz).
@ -233,11 +240,11 @@ Version 1.3 Alpha 1 (February 11, 2000)
but contain perl code and applies to wrappers generated by but contain perl code and applies to wrappers generated by
-shadow. -shadow.
Lacking proper regression tests I used Lacking proper regression tests I used
Examples/perl5/{c++,constraint,defarg,except, Examples/perl5/{c++,constraint,defarg,except,
graph/graph[1234],multinherit,nested,shadow,simple,tree, graph/graph[1234],multinherit,nested,shadow,simple,tree,
typemaps/{argv,argv2,arraymember,database,file,ignore,integer, typemaps/{argv,argv2,arraymember,database,file,ignore,integer,
output,passref,reference,return}}/. I ran swig with and without output,passref,reference,return}}/. I ran swig with and without
the patches, diff the generatedsources, run the .pl files the patches, diff the generatedsources, run the .pl files
and checked that the results are identical. In all those examples and checked that the results are identical. In all those examples
I had no error. I had no error.
@ -248,7 +255,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
Now, we simply use variable traces to support everything. This may Now, we simply use variable traces to support everything. This may
break scripts that rely upon the older behavior. break scripts that rely upon the older behavior.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
11/21/99: Added slight tweak to wrapper generator to collect local variables 11/21/99: Added slight tweak to wrapper generator to collect local variables
of similar type. Produces somewhat more compact wrapper code. of similar type. Produces somewhat more compact wrapper code.
@ -281,7 +288,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
11/5/99 : Fixed an obscure code generation bug related to the generation 11/5/99 : Fixed an obscure code generation bug related to the generation
of default constructors. Bug reported by Brad Clements. of default constructors. Bug reported by Brad Clements.
11/5/99 : Fixed a few memory problems found by purify. 11/5/99 : Fixed a few memory problems found by purify.
11/5/99 : Officially deprecated the -htcl, -htk, and -plugin options 11/5/99 : Officially deprecated the -htcl, -htk, and -plugin options
@ -289,7 +296,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
10/26/99: Removed unused variable from python/typemaps.i. Patch 10/26/99: Removed unused variable from python/typemaps.i. Patch
contributed by Keith Davidson. contributed by Keith Davidson.
8/16/99 : Added _WIN32 symbol to libraries to better support Windows. 8/16/99 : Added _WIN32 symbol to libraries to better support Windows.
8/16/99 : Deprecated the Perl4 module. It is no longer included in the 8/16/99 : Deprecated the Perl4 module. It is no longer included in the
@ -306,7 +313,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
8/15/99 : Many changes to the libraries to support runtime libraries. 8/15/99 : Many changes to the libraries to support runtime libraries.
8/13/99 : Eliminated C++ compiler warning messages about extern "C" linkage. 8/13/99 : Eliminated C++ compiler warning messages about extern "C" linkage.
8/13/99 : Some cleanup of Python .swg files to better support runtime libraries 8/13/99 : Some cleanup of Python .swg files to better support runtime libraries
on Windows. on Windows.
@ -336,7 +343,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
8/13/99 : Patch to Python shadow classes to eliminate ignored 8/13/99 : Patch to Python shadow classes to eliminate ignored
exception errors in destructors. Patch contributed exception errors in destructors. Patch contributed
by Robin Dunn. by Robin Dunn.
8/11/99 : Minor patch to swig_lib/python/swigptr.swg (added SWIGSTATIC 8/11/99 : Minor patch to swig_lib/python/swigptr.swg (added SWIGSTATIC
declaration). Patch contributed by Lyle Johnson. declaration). Patch contributed by Lyle Johnson.
@ -366,8 +373,8 @@ Version 1.3 Alpha 1 (February 11, 2000)
is made to see if they are balanced (i.e., a %disabledoc is made to see if they are balanced (i.e., a %disabledoc
directive inside a class does not have to have a matching directive inside a class does not have to have a matching
%enabledoc in the same class). %enabledoc in the same class).
8/8/99 : Keyword argument handling is now supported in the Python 8/8/99 : Keyword argument handling is now supported in the Python
module. For example: module. For example:
int foo(char *bar, int spam, double x); int foo(char *bar, int spam, double x);
@ -381,8 +388,8 @@ Version 1.3 Alpha 1 (February 11, 2000)
should work as well. Unnamed arguments are assigned names should work as well. Unnamed arguments are assigned names
such as "arg1", "arg2", etc... such as "arg1", "arg2", etc...
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
Functions with duplicate argument names such as Functions with duplicate argument names such as
bar(int *OUTPUT, int *OUTPUT) will likely cause problematic bar(int *OUTPUT, int *OUTPUT) will likely cause problematic
wrapper code to be generated. To fix this, use different wrapper code to be generated. To fix this, use different
names or use %apply to map typemaps to alternate names. names or use %apply to map typemaps to alternate names.
@ -390,12 +397,12 @@ Version 1.3 Alpha 1 (February 11, 2000)
8/8/99 : Handling of the 'this' pointer has been changed in Python shadow 8/8/99 : Handling of the 'this' pointer has been changed in Python shadow
classes. Previously, dereferencing of '.this' occured in the classes. Previously, dereferencing of '.this' occured in the
Python shadow class itself. Now, this step occurs in the C Python shadow class itself. Now, this step occurs in the C
wrappers using the following function: wrappers using the following function:
SWIG_GetPtrObj(PyObject *, void **ptr, char *type) SWIG_GetPtrObj(PyObject *, void **ptr, char *type)
This function can accept either a string containing a pointer This function can accept either a string containing a pointer
or a shadow class instance with a '.this' attribute of or a shadow class instance with a '.this' attribute of
appropriate type. This change allows the following: appropriate type. This change allows the following:
1. The real shadow class instance for an object is 1. The real shadow class instance for an object is
@ -416,7 +423,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
8/8/99 : Fixed handling of "const" and pointers in classes. In particular, 8/8/99 : Fixed handling of "const" and pointers in classes. In particular,
declarations such as declarations such as
class foo { class foo {
... ...
@ -425,7 +432,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
} }
are handled as assignable variables as opposed to constant are handled as assignable variables as opposed to constant
values (this is the correct behavior in C/C++). Note: values (this is the correct behavior in C/C++). Note:
declarations such as "char *const msg" are still unsupported. declarations such as "char *const msg" are still unsupported.
Constants declared at the global level using const are also Constants declared at the global level using const are also
broken (because I have a number of interfaces that rely upon broken (because I have a number of interfaces that rely upon
@ -488,10 +495,10 @@ Version 1.3 Alpha 1 (February 11, 2000)
2/27/99 : Modified Perl5 module to recognize 'undef' as a NULL char *. 2/27/99 : Modified Perl5 module to recognize 'undef' as a NULL char *.
Patch contributed by Junio Hamano. Patch contributed by Junio Hamano.
2/27/99 : Fixed the Perl5 module to support the newer versions of 2/27/99 : Fixed the Perl5 module to support the newer versions of
ActiveState Perl for Win32. ActiveState Perl for Win32.
2/27/99 : Fixed the include order of files specified with the 2/27/99 : Fixed the include order of files specified with the
-I option. -I option.
2/5/98- : Dave finishes his dissertation, goes job hunting, moves to 2/5/98- : Dave finishes his dissertation, goes job hunting, moves to
@ -521,7 +528,7 @@ Version 1.1 Patch 4 (January 4, 1998)
===================================== =====================================
1/4/98 : Changed structured of the Examples directory to be more friendly 1/4/98 : Changed structured of the Examples directory to be more friendly
to Borland C++. to Borland C++.
1/4/98 : Added the function Makefile.win.bc for compiling the examples 1/4/98 : Added the function Makefile.win.bc for compiling the examples
under Borland 5.2. under Borland 5.2.
@ -541,25 +548,25 @@ Version 1.1 Patch 4 (January 4, 1998)
the original SWIG mechanism that assumed [incr Tcl] namespaces. the original SWIG mechanism that assumed [incr Tcl] namespaces.
To use namespaces, simply run SWIG with the following options To use namespaces, simply run SWIG with the following options
swig -tcl -namespace foo.i swig -tcl -namespace foo.i
This places everything in a namespace that matches This places everything in a namespace that matches
the module name the module name
swig -tcl -namespace -prefix bar foo.i swig -tcl -namespace -prefix bar foo.i
This places everything in the namespace 'bar' This places everything in the namespace 'bar'
The use of namespaces is new in Tcl 8.0. However, the wrapper code The use of namespaces is new in Tcl 8.0. However, the wrapper code
generated by SWIG will still work with all versions of Tcl newer generated by SWIG will still work with all versions of Tcl newer
than and including Tcl 7.3/Tk3.6 even if the -namespace option is than and including Tcl 7.3/Tk3.6 even if the -namespace option is
used. used.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
This change may break existing applications that relied on the This change may break existing applications that relied on the
-prefix and -namespace options. -prefix and -namespace options.
1/2/98 : Added the following constants to the Tcl wrapper code 1/2/98 : Added the following constants to the Tcl wrapper code
SWIG_name - Name of the SWIG module SWIG_name - Name of the SWIG module
SWIG_prefix - Prefix/namespace appended to command names SWIG_prefix - Prefix/namespace appended to command names
@ -577,7 +584,7 @@ Version 1.1 Patch 4 (January 4, 1998)
significant changes were made : significant changes were made :
1. The OUTPUT typemap now returns Python tuples instead of 1. The OUTPUT typemap now returns Python tuples instead of
lists. Lists can be returned as before by using the lists. Lists can be returned as before by using the
L_OUTPUT type. If compatibility with older versions L_OUTPUT type. If compatibility with older versions
is needed, run SWIG with the -DOUTPUT_LIST option. is needed, run SWIG with the -DOUTPUT_LIST option.
@ -589,11 +596,11 @@ Version 1.1 Patch 4 (January 4, 1998)
Changes to typemaps.i may break existing Python scripts that assume Changes to typemaps.i may break existing Python scripts that assume
output in the form of a list. output in the form of a list.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
12/31/97: Fixed long overdue problems with the testing scripts and certain 12/31/97: Fixed long overdue problems with the testing scripts and certain
makefiles that required the use of the bash shell. Everything should makefiles that required the use of the bash shell. Everything should
work properly with the standard Bourne shell (sh) now. work properly with the standard Bourne shell (sh) now.
12/31/97: Modified typemaps to allow $basetype as a valid local variable. 12/31/97: Modified typemaps to allow $basetype as a valid local variable.
This allows for all sorts of bizarre hackish typemaps that This allows for all sorts of bizarre hackish typemaps that
do cool things. Patch contributed by Dominique Dumont. do cool things. Patch contributed by Dominique Dumont.
@ -611,18 +618,18 @@ Version 1.1 Patch 4 (January 4, 1998)
12/31/97: Changed the default C constructor to use calloc() instead 12/31/97: Changed the default C constructor to use calloc() instead
of malloc() of malloc()
12/30/97: Changed the creation of constants in the Perl5 module. 12/30/97: Changed the creation of constants in the Perl5 module.
For all practical purposes, they should work in exactly the For all practical purposes, they should work in exactly the
same way as before except that they now require much less same way as before except that they now require much less
wrapper code. Modules containing large numbers of wrapper code. Modules containing large numbers of
constants may see greater than a 50% reduction in wrapper constants may see greater than a 50% reduction in wrapper
code size. code size.
12/30/97: Modified the Python module to be more intelligent about the 12/30/97: Modified the Python module to be more intelligent about the
creation of constants. SWIG no longer generates redundant creation of constants. SWIG no longer generates redundant
global variables and the size of the module initialization global variables and the size of the module initialization
function should be reduced. (Many thanks to Jim Fulton). function should be reduced. (Many thanks to Jim Fulton).
12/29/97: Fixed a bug in C++ code generation related to member functions, 12/29/97: Fixed a bug in C++ code generation related to member functions,
default arguments, and references. default arguments, and references.
@ -631,19 +638,19 @@ Version 1.1 Patch 4 (January 4, 1998)
12/29/97: Added 'embed15.i' library file. This file should be used to 12/29/97: Added 'embed15.i' library file. This file should be used to
staticly link versions of Python 1.5. To make it the default, staticly link versions of Python 1.5. To make it the default,
simply copy 'swig_lib/python/embed15.i' to 'swig_lib/python/embed.i' simply copy 'swig_lib/python/embed15.i' to 'swig_lib/python/embed.i'
Version 1.1 Patch 3 (November 24, 1997) Version 1.1 Patch 3 (November 24, 1997)
======================================== ========================================
11/23/97: Fixed a bug in the Perl5 module with shadow classes and 11/23/97: Fixed a bug in the Perl5 module with shadow classes and
static class functions that return class instances. static class functions that return class instances.
Note : The fix for this bug requires a slight restructuring of Note : The fix for this bug requires a slight restructuring of
of the .pm files created by SWIG. of the .pm files created by SWIG.
11/23/97: Fixed a bug in the Tcl/Tcl8 modules related to variable linking 11/23/97: Fixed a bug in the Tcl/Tcl8 modules related to variable linking
of character arrays. If you declared a global variable 'char foo[10]', of character arrays. If you declared a global variable 'char foo[10]',
the generated wrapper code would either cause a segmentation fault the generated wrapper code would either cause a segmentation fault
immediately upon loading or weird memory corruption elsewhere. immediately upon loading or weird memory corruption elsewhere.
This should now be fixed although character arrays can only be This should now be fixed although character arrays can only be
read-only. read-only.
@ -657,7 +664,7 @@ Version 1.1 Patch 3 (November 24, 1997)
11/23/97: Changed the behavior of the -o option when used with shadow 11/23/97: Changed the behavior of the -o option when used with shadow
classes. If -o was used to specify both the pathname and filename classes. If -o was used to specify both the pathname and filename
of SWIG's output such as of SWIG's output such as
swig -o /home/swig/wrapper.c -shadow -perl5 foo.i swig -o /home/swig/wrapper.c -shadow -perl5 foo.i
The wrapper code would be placed the file specified with -o, The wrapper code would be placed the file specified with -o,
@ -688,13 +695,13 @@ Version 1.1 Patch 3 (November 24, 1997)
11/23/97: Modified the typemap mechanism to allow output 11/23/97: Modified the typemap mechanism to allow output
typemaps of type 'void'. These were ignored previously, typemaps of type 'void'. These were ignored previously,
but now if you specify, but now if you specify,
%typemap(lang,out) void { %typemap(lang,out) void {
... return a void ... ... return a void ...
} }
You can change or assign a return value to the function. You can change or assign a return value to the function.
11/23/97: Fixed processing of 'bool' datatypes in the Python module. 11/23/97: Fixed processing of 'bool' datatypes in the Python module.
11/23/97: Fixed minor parsing error with C++ initializers. For example, 11/23/97: Fixed minor parsing error with C++ initializers. For example,
@ -717,7 +724,7 @@ Version 1.1 Patch 3 (November 24, 1997)
%include typemaps.i %include typemaps.i
void foo(double *OUTPUT, double *OUTPUT, double a); void foo(double *OUTPUT, double *OUTPUT, double a);
Previously, doing this resulted in the creation of an Previously, doing this resulted in the creation of an
extraneous comma in the output, resulting in a C syntax error. extraneous comma in the output, resulting in a C syntax error.
11/22/97: Fixed a bug when template handling that was stripping whitespace 11/22/97: Fixed a bug when template handling that was stripping whitespace
@ -747,7 +754,7 @@ Version 1.1 Patch 3 (November 24, 1997)
void foo(Vector a, Vector b = d); void foo(Vector a, Vector b = d);
should now work properly. should now work properly.
Version 1.1 Patch 2 (September 4, 1997) Version 1.1 Patch 2 (September 4, 1997)
======================================= =======================================
@ -785,7 +792,7 @@ Version 1.1 Patch 1 (August 27, 1997)
void foo(double *a, double *b, double *result); void foo(double *a, double *b, double *result);
three local variables will be created as follows : three local variables will be created as follows :
double temp_a; double temp_a;
double temp_b; double temp_b;
double temp_result; double temp_result;
@ -799,14 +806,14 @@ Version 1.1 Patch 1 (August 27, 1997)
%apply double [ANY] { Real [ANY] }; %apply double [ANY] { Real [ANY] };
%apply double [4] { double [10] }; %apply double [4] { double [10] };
A generic version of apply like this : A generic version of apply like this :
%apply double { Real }; %apply double { Real };
should now work--even if arrays involving doubles and Reals are should now work--even if arrays involving doubles and Reals are
used later. used later.
7/27/97 : Changed warning message about "Array X has been converted to Y" to 7/27/97 : Changed warning message about "Array X has been converted to Y" to
only appear if running SWIG in verbose mode. only appear if running SWIG in verbose mode.
@ -827,7 +834,7 @@ Version 1.1 Patch 1 (August 27, 1997)
The problem with this is that typemaps allow a user to redefine The problem with this is that typemaps allow a user to redefine
the output behavior of a function--as a result, we can no longer the output behavior of a function--as a result, we can no longer
make any assumptions about the return type being a pointer or make any assumptions about the return type being a pointer or
even being a single value for that matter (it could be a list, even being a single value for that matter (it could be a list,
tuple, etc...). If SWIG detects the use of output typemaps tuple, etc...). If SWIG detects the use of output typemaps
(either "out" or "argout") it returns the result unmodified like (either "out" or "argout") it returns the result unmodified like
@ -840,7 +847,7 @@ Version 1.1 Patch 1 (August 27, 1997)
In this case, it is up to the user to figure out what to do In this case, it is up to the user to figure out what to do
with the return value (including the possibility of converting it with the return value (including the possibility of converting it
into a Python class). into a Python class).
7/26/97 : Fixed a parsing problem with types like 'unsigned long int', 7/26/97 : Fixed a parsing problem with types like 'unsigned long int',
'unsigned short int', etc... 'unsigned short int', etc...
@ -854,7 +861,7 @@ Version 1.1 Patch 1 (August 27, 1997)
Mark Hammond's COM support. I'm not entirely sure they Mark Hammond's COM support. I'm not entirely sure they
work yet however. Needs documentation and testing. work yet however. Needs documentation and testing.
7/24/97 : Fixed code generation bugs when structures had array members 7/24/97 : Fixed code generation bugs when structures had array members
and typemaps were used. For example : and typemaps were used. For example :
%typemap(memberin) double [20][20] { %typemap(memberin) double [20][20] {
@ -876,7 +883,7 @@ Version 1.1 Patch 1 (August 27, 1997)
When writing typemaps, one can assume that the source variable When writing typemaps, one can assume that the source variable
is an array of the *same* type as the structure member. This is an array of the *same* type as the structure member. This
may break some codes that managed to work around the array bug. may break some codes that managed to work around the array bug.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
7/13/97 : Fixed bug in Perl5 module when using C global variables that 7/13/97 : Fixed bug in Perl5 module when using C global variables that
are pointers. When used in function calls and other operations, are pointers. When used in function calls and other operations,
@ -936,7 +943,7 @@ Version 1.1 Patch 1 (August 27, 1997)
7/8/97 : Fixed bizarre code generation bug with typemaps and C++ classes. 7/8/97 : Fixed bizarre code generation bug with typemaps and C++ classes.
In some cases, typemaps containing printf formatting strings such as In some cases, typemaps containing printf formatting strings such as
%typemap(memberout) int * { %typemap(memberout) int * {
printf("%d",42); printf("%d",42);
} }
@ -944,7 +951,7 @@ Version 1.1 Patch 1 (August 27, 1997)
Would generate completely bogus code with garbage replacing Would generate completely bogus code with garbage replacing
the '%d'. Caused by one faulty use of printf (wasn't able to find the '%d'. Caused by one faulty use of printf (wasn't able to find
any other occurences). any other occurences).
7/7/97 : Fixed bug in Python shadow class generation with non-member 7/7/97 : Fixed bug in Python shadow class generation with non-member
functions that are returning more than one value. functions that are returning more than one value.
@ -968,7 +975,7 @@ Version 1.1 Patch 1 (August 27, 1997)
Version 1.1 (June 24, 1997) Version 1.1 (June 24, 1997)
=========================== ===========================
6/24/97 : Fixed Objective-C constructor bug when working with Perl5 6/24/97 : Fixed Objective-C constructor bug when working with Perl5
shadow classes. shadow classes.
6/23/97 : Fixed some parsing problems with Objective-C. Declarations 6/23/97 : Fixed some parsing problems with Objective-C. Declarations
@ -980,7 +987,7 @@ Version 1.1 (June 24, 1997)
the SWIG pointer type-checker and support functions the SWIG pointer type-checker and support functions
that are normally included in every module. By using that are normally included in every module. By using
the library, it is easier to work with multiple SWIG the library, it is easier to work with multiple SWIG
generated modules. generated modules.
6/22/97 : Fixed minor bug in Perl5 module related to static linking 6/22/97 : Fixed minor bug in Perl5 module related to static linking
of multiple modules. of multiple modules.
@ -1008,7 +1015,7 @@ Version 1.1 (June 24, 1997)
At most, only one typemap file can be specified in this manner. At most, only one typemap file can be specified in this manner.
*** NEW FEATURE *** *** NEW FEATURE ***
6/18/97 : Need a Makefile fast? Type 6/18/97 : Need a Makefile fast? Type
swig [-tcl, -perl5, -python] -co Makefile swig [-tcl, -perl5, -python] -co Makefile
@ -1024,12 +1031,12 @@ Version 1.1 (June 24, 1997)
Checks the file foobar.i into the Tcl part of the library. Checks the file foobar.i into the Tcl part of the library.
In order to check a file into the general library (accessible In order to check a file into the general library (accessible
to all languages modules), do the following to all languages modules), do the following
swig -ci -o ../foobar.i foobar.i swig -ci -o ../foobar.i foobar.i
(Admittedly this looks a little strange but is unavoidable). (Admittedly this looks a little strange but is unavoidable).
The check-in option is primarily designed for SWIG maintenance The check-in option is primarily designed for SWIG maintenance
and library development. The command will fail if the user does and library development. The command will fail if the user does
not have write permission to the SWIG library. Third party library not have write permission to the SWIG library. Third party library
extensions can easily install themselves by simply providing extensions can easily install themselves by simply providing
@ -1041,7 +1048,7 @@ Version 1.1 (June 24, 1997)
6/16/97 : Fixed a bug in shadow class generation when %name() was applied 6/16/97 : Fixed a bug in shadow class generation when %name() was applied
to a class definition. Unfortunately, fixing the bug required to a class definition. Unfortunately, fixing the bug required
a change in the Language C API by adding an extra argument to a change in the Language C API by adding an extra argument to
the Language::cpp_class_decl() function. This may break the Language::cpp_class_decl() function. This may break
SWIG C++ extensions. SWIG C++ extensions.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
@ -1062,7 +1069,7 @@ Version 1.1 (June 24, 1997)
Unlike %name, %rename will rename any occurence of the old name. Unlike %name, %rename will rename any occurence of the old name.
This applies to functions, variables, class members and so forth. This applies to functions, variables, class members and so forth.
There is no way to disable %rename once set, but you can change the There is no way to disable %rename once set, but you can change the
name by redeclaring it to something else. name by redeclaring it to something else.
*** NEW FEATURE *** *** NEW FEATURE ***
6/15/97 : Improved the implementation of the %name directive so that it 6/15/97 : Improved the implementation of the %name directive so that it
@ -1072,7 +1079,7 @@ Version 1.1 (June 24, 1997)
%name(NewName) %name(NewName)
#endif #endif
int OldName(int); int OldName(int);
6/15/97 : Added support for functions with no return datatype. In this case, 6/15/97 : Added support for functions with no return datatype. In this case,
SWIG assumes a return type of 'int'. SWIG assumes a return type of 'int'.
@ -1080,7 +1087,7 @@ Version 1.1 (June 24, 1997)
less sensitive to errors that occur inside class definitions less sensitive to errors that occur inside class definitions
now. Also reports errors for function pointers. now. Also reports errors for function pointers.
6/11/97 : Made '$' a legal symbol in identifiers. This is to support 6/11/97 : Made '$' a legal symbol in identifiers. This is to support
some Objective-C libraries. Some compilers (such as gcc) may also some Objective-C libraries. Some compilers (such as gcc) may also
allow identifiers to contain a $ in C/C++ code as well (this is allow identifiers to contain a $ in C/C++ code as well (this is
an obscure feature of C). When '$' appears in identifier, SWIG an obscure feature of C). When '$' appears in identifier, SWIG
@ -1116,8 +1123,8 @@ Version 1.1 (June 24, 1997)
6/2/97 : Fixed code generation bug when read-only variables were inherited 6/2/97 : Fixed code generation bug when read-only variables were inherited
into other classes. Under inheritance, the variables would into other classes. Under inheritance, the variables would
become writable, but this has now been corrected. become writable, but this has now been corrected.
5/30/97 : An empty %name() directive is no longer allowed or supported. 5/30/97 : An empty %name() directive is no longer allowed or supported.
This directive was originally used to strip the prefix This directive was originally used to strip the prefix
off of a class or structure. Unfortunately, this never really off of a class or structure. Unfortunately, this never really
seemed to work right and it complicated the C++ code generator seemed to work right and it complicated the C++ code generator
@ -1143,16 +1150,16 @@ Version 1.1 (June 24, 1997)
When used, the entire name 'vector<complex>' becomes the name When used, the entire name 'vector<complex>' becomes the name
of the datatype. Due to space limitations in datatype of the datatype. Due to space limitations in datatype
representations, the name should not exceed 96 characters. representations, the name should not exceed 96 characters.
Note : This is only part of what is needed for template support. Note : This is only part of what is needed for template support.
Template class definitions are not yet supported by SWIG. Template class definitions are not yet supported by SWIG.
The template notation above may also be used when specifying The template notation above may also be used when specifying
Objective-C protocol lists. Objective-C protocol lists.
*** NEW FEATURE *** *** NEW FEATURE ***
5/24/97 : First cut at Objective-C support added. As it turns out, almost 5/24/97 : First cut at Objective-C support added. As it turns out, almost
everything can be handled with only a few minor modifications to everything can be handled with only a few minor modifications to
the C++ module. the C++ module.
*** NEW FEATURE *** *** NEW FEATURE ***
@ -1175,7 +1182,7 @@ Version 1.1 (June 24, 1997)
"DWORD". This now includes pointers to the two datatypes. "DWORD". This now includes pointers to the two datatypes.
For example, a typemap applied to "unsigned long **" would For example, a typemap applied to "unsigned long **" would
also be applied to any occurrence of "DWORD **" as well. also be applied to any occurrence of "DWORD **" as well.
5/19/97 : Fixed an ownership assignment bug in the Perl5 module when 5/19/97 : Fixed an ownership assignment bug in the Perl5 module when
class members were returning new objects belonging to class members were returning new objects belonging to
different classes. different classes.
@ -1184,12 +1191,12 @@ Version 1.1 (June 24, 1997)
$name - Name of function/variable/member $name - Name of function/variable/member
$basetype - Base datatype (type without pointers) $basetype - Base datatype (type without pointers)
$argnum - Argument number $argnum - Argument number
5/16/97 : Fixed embarrassing underscore error in local variable 5/16/97 : Fixed embarrassing underscore error in local variable
allocator. allocator.
5/16/97 : Fixed namespace clash bug in parameterized typemaps 5/16/97 : Fixed namespace clash bug in parameterized typemaps
when creating arrays as new local variables. when creating arrays as new local variables.
5/15/97 : Fixed some bugs with inheritance of added methods across 5/15/97 : Fixed some bugs with inheritance of added methods across
@ -1234,7 +1241,7 @@ Version 1.1 Beta6 (May 9, 1997)
Old versions automatically turned the result into a Old versions automatically turned the result into a
Python list. The new version does nothing, leaving the Python list. The new version does nothing, leaving the
implementation up to the user. This provides more flexibility implementation up to the user. This provides more flexibility
but may break older codes that rely on typemaps. but may break older codes that rely on typemaps.
*** POTENTIAL INCOMPATIBILITY *** *** POTENTIAL INCOMPATIBILITY ***
5/5/97 : Fixed bug in Python module related to the interaction of 5/5/97 : Fixed bug in Python module related to the interaction of
@ -1267,7 +1274,7 @@ Version 1.1 Beta6 (May 9, 1997)
unique, even if the same typemap is applied many times unique, even if the same typemap is applied many times
in a given function. in a given function.
** Not currently supported in Perl4 or Guile modules. ** Not currently supported in Perl4 or Guile modules.
5/2/97 : Fixed processing of %ifdef, %endif, %if, etc... (These are 5/2/97 : Fixed processing of %ifdef, %endif, %if, etc... (These are
SWIG equivalents of the C preprocessor directives that SWIG equivalents of the C preprocessor directives that
can pass through the C preprocessor without modification). can pass through the C preprocessor without modification).
@ -1323,8 +1330,8 @@ Version 1.1 Beta6 (May 9, 1997)
4/13/97 : Added %pragma directive for Perl5 module. Two new pragmas are 4/13/97 : Added %pragma directive for Perl5 module. Two new pragmas are
available : available :
%pragma(perl5) code = "string" %pragma(perl5) code = "string"
%pragma(perl5) include = "file.pl" %pragma(perl5) include = "file.pl"
Both insert code into the .pm file created by SWIG. This can Both insert code into the .pm file created by SWIG. This can
be used to automatically customize the .pm file created by SWIG. be used to automatically customize the .pm file created by SWIG.
@ -1333,7 +1340,7 @@ Version 1.1 Beta6 (May 9, 1997)
option has been specified. This provides support for C programs option has been specified. This provides support for C programs
that make use of these keywords for identifiers. that make use of these keywords for identifiers.
SWIG may need to be explicitly run with the -c++ option when SWIG may need to be explicitly run with the -c++ option when
compiling C++ code (this was allowed, but not recommended in compiling C++ code (this was allowed, but not recommended in
previous versions). **POTENTIAL INCOMPATIBILITY** previous versions). **POTENTIAL INCOMPATIBILITY**
4/11/97 : Fixed a rather nasty bug in the Perl5 module related to using 4/11/97 : Fixed a rather nasty bug in the Perl5 module related to using
@ -1352,14 +1359,14 @@ Version 1.1 Beta6 (May 9, 1997)
4/8/97 : Fixed code generation bugs in Python and Perl5 modules related to 4/8/97 : Fixed code generation bugs in Python and Perl5 modules related to
using class renaming (applying the %name directive to a class using class renaming (applying the %name directive to a class
definition) and shadow classes. definition) and shadow classes.
4/7/97 : Fixed minor bugs in swigptr.swg, tcl8ptr.swg, and perl5ptr.swg to 4/7/97 : Fixed minor bugs in swigptr.swg, tcl8ptr.swg, and perl5ptr.swg to
prevent infinite loops when weird datatypes are passed. prevent infinite loops when weird datatypes are passed.
3/29/97 : 'Makefile.win' added. This is used to build most of the examples 3/29/97 : 'Makefile.win' added. This is used to build most of the examples
in the Examples directory under Windows NT/95. in the Examples directory under Windows NT/95.
3/27/97 : Fixes to SWIG's error return codes. SWIG now returns non-zero 3/27/97 : Fixes to SWIG's error return codes. SWIG now returns non-zero
exit codes for certain kinds of errors (which makes it more exit codes for certain kinds of errors (which makes it more
friendly to makefiles). An overhaul of the error handling friendly to makefiles). An overhaul of the error handling
@ -1407,7 +1414,7 @@ Version 1.1 Beta6 (May 9, 1997)
make modules from SWIG library files. For example, if you make modules from SWIG library files. For example, if you
want to make a Python module from the SWIG timers library, just want to make a Python module from the SWIG timers library, just
type this in any directory : type this in any directory :
swig -python timers.i swig -python timers.i
You will get the files timers_wrap.c and timers_wrap.doc in You will get the files timers_wrap.c and timers_wrap.doc in
@ -1424,14 +1431,14 @@ Version 1.1 Beta6 (May 9, 1997)
unix > unix >
Once in your directory you can customize the file to suit your Once in your directory you can customize the file to suit your
particular purposes. The checkout option makes it easy to particular purposes. The checkout option makes it easy to
grab library files without knowing anything about the SWIG grab library files without knowing anything about the SWIG
installation, but it also makes it possible to start installation, but it also makes it possible to start
including scripts, C code, and other miscellaneous files including scripts, C code, and other miscellaneous files
in the library. For example, you could put a cool script in the library. For example, you could put a cool script
in the library and check it out whenever you wanted to use it. in the library and check it out whenever you wanted to use it.
*** New Feature *** *** New Feature ***
3/24/97 : #pragma export directives added to Tcl output for compiling 3/24/97 : #pragma export directives added to Tcl output for compiling
shared libraries on the Mac. shared libraries on the Mac.
@ -1445,11 +1452,11 @@ Version 1.1 Beta6 (May 9, 1997)
typemap to achieve some safety. For example : typemap to achieve some safety. For example :
%typemap(perl5,check) Node * { %typemap(perl5,check) Node * {
if (!$target) if (!$target)
croak("NULL Pointers not allowed."); croak("NULL Pointers not allowed.");
} }
This prevents any NULL value of a "Node *" pointer to be This prevents any NULL value of a "Node *" pointer to be
passed to a function. (I think this is much cleaner passed to a function. (I think this is much cleaner
than the old -DALLOW_NULL hack anyways). than the old -DALLOW_NULL hack anyways).
@ -1461,7 +1468,7 @@ Version 1.1 Beta6 (May 9, 1997)
validity of function input values. For example : validity of function input values. For example :
%typemap(perl5,check) int posint { %typemap(perl5,check) int posint {
if ($target < 0) if ($target < 0)
croak("Argument is not a positive integer"); croak("Argument is not a positive integer");
} }
@ -1473,7 +1480,7 @@ Version 1.1 Beta6 (May 9, 1997)
3/18/97 : Fixed a few glitches in the typemap module with respect to 3/18/97 : Fixed a few glitches in the typemap module with respect to
chaining. For example : chaining. For example :
%typemap(tcl,in) int { %typemap(tcl,in) int {
$in // Inserts prexisting typemap $in // Inserts prexisting typemap
printf("Received a %d\n", $target); printf("Received a %d\n", $target);
@ -1502,7 +1509,7 @@ Version 1.1b5 Patch 1 (March 16, 1997)
attached to the previous declaration and will stay in the proper attached to the previous declaration and will stay in the proper
location relative to the previous entry. location relative to the previous entry.
Version 1.1b5 (March 12, 1997) Version 1.1b5 (March 12, 1997)
============================== ==============================
3/11/97 : Fixed compilation problems introduced by Tcl/Tk 8.0a2. 3/11/97 : Fixed compilation problems introduced by Tcl/Tk 8.0a2.
@ -1514,7 +1521,7 @@ Version 1.1b5 (March 12, 1997)
3/9/97 : Parsing bugs with nested class definitions and privately 3/9/97 : Parsing bugs with nested class definitions and privately
declared nested class definitions fixed. declared nested class definitions fixed.
3/9/97 : Fixed a few minor code generation bugs with C++ classes and 3/9/97 : Fixed a few minor code generation bugs with C++ classes and
constructors. In some cases, the resulting wrapper code constructors. In some cases, the resulting wrapper code
would not compile properly. SWIG now attempts to use would not compile properly. SWIG now attempts to use
the default copy constructor instead. the default copy constructor instead.
@ -1531,7 +1538,7 @@ Version 1.1b5 (March 12, 1997)
swig -python example.i # Build a dynamically loaded extension swig -python example.i # Build a dynamically loaded extension
swig -python -lembed.i example.i # Build a static extension swig -python -lembed.i example.i # Build a static extension
These kinds of options could previously be accomplished with These kinds of options could previously be accomplished with
conditional compilation such as : conditional compilation such as :
%module example %module example
@ -1567,10 +1574,10 @@ Version 1.1b5 (March 12, 1997)
would override a double [ANY][ANY][ANY]. However, overuse of the ANY would override a double [ANY][ANY][ANY]. However, overuse of the ANY
tag in arrays of high-dimensions may not work as you expect due to tag in arrays of high-dimensions may not work as you expect due to
the pattern matching rule used. For example, which of the following the pattern matching rule used. For example, which of the following
typemaps has precedence? typemaps has precedence?
%typemap(in) double [ANY][5] {} // Avoid this! %typemap(in) double [ANY][5] {} // Avoid this!
%typemap(in) double [5][ANY] {} %typemap(in) double [5][ANY] {}
3/7/97 : Fixed a number of bugs related to multi-dimensional array handling. 3/7/97 : Fixed a number of bugs related to multi-dimensional array handling.
Typedefs involving multi-dimensional arrays now works correctly. Typedefs involving multi-dimensional arrays now works correctly.
@ -1581,9 +1588,9 @@ Version 1.1b5 (March 12, 1997)
... ...
extern double foo(MATRIX a); extern double foo(MATRIX a);
Typecasting of pointers into multi-dimensional arrays is now Typecasting of pointers into multi-dimensional arrays is now
implemented properly when making C/C++ function calls. implemented properly when making C/C++ function calls.
3/6/97 : Fixed potentially dangerous bug in the Tcl Object-oriented 3/6/97 : Fixed potentially dangerous bug in the Tcl Object-oriented
interface. Well, actually, didn't fix it but issued a interface. Well, actually, didn't fix it but issued a
Tcl error instead. The bug would manifest itself as follows: Tcl error instead. The bug would manifest itself as follows:
@ -1604,7 +1611,7 @@ Version 1.1b5 (March 12, 1997)
... ...
% set m [List -this $l] % set m [List -this $l]
Object name already exists! Object name already exists!
Use catch{} to ignore the error. Use catch{} to ignore the error.
3/3/97 : Better support for enums added. Datatypes of 'enum MyEnum' 3/3/97 : Better support for enums added. Datatypes of 'enum MyEnum'
@ -1624,17 +1631,17 @@ Version 1.1b5 (March 12, 1997)
3/3/97 : Added %import directive. This works exactly like %extern 3/3/97 : Added %import directive. This works exactly like %extern
except it tells the language module that the declarations are except it tells the language module that the declarations are
coming from a separate module. This is usually only coming from a separate module. This is usually only
needed when working with shadow classes. needed when working with shadow classes.
3/2/97 : Changed pointer type-checker to be significantly more 3/2/97 : Changed pointer type-checker to be significantly more
efficient when working with derived datatypes. This efficient when working with derived datatypes. This
has been accomplished by storing type-mappings in sorted has been accomplished by storing type-mappings in sorted
order, using binary search schemes, and caching recently order, using binary search schemes, and caching recently
used datatypes. For SWIG generated C++ modules that used datatypes. For SWIG generated C++ modules that
make a large number of C function calls with derived types, make a large number of C function calls with derived types,
this could result in speedups of between 100 and 50000 percent. this could result in speedups of between 100 and 50000 percent.
However, due to the required sorting operation, module However, due to the required sorting operation, module
loading time may increased slightly when there are lots of loading time may increased slightly when there are lots of
datatypes. datatypes.
@ -1647,8 +1654,8 @@ Version 1.1b5 (March 12, 1997)
2/26/97 : Fixed bug in Python module with -c option. 2/26/97 : Fixed bug in Python module with -c option.
2/26/97 : Slight tweak of parser to allow trailing comma in enumerations 2/26/97 : Slight tweak of parser to allow trailing comma in enumerations
such as such as
enum Value (ALE, STOUT, LAGER, }; enum Value (ALE, STOUT, LAGER, };
2/25/97 : Fixed code generation bug in Tcl module when using the 2/25/97 : Fixed code generation bug in Tcl module when using the
@ -1665,7 +1672,7 @@ Version 1.1b5 (March 12, 1997)
Activeware port of Perl 5.003 running under Windows 95. Activeware port of Perl 5.003 running under Windows 95.
The C source generated by SWIG should compile without The C source generated by SWIG should compile without
modification under both versions of Perl, but is now modification under both versions of Perl, but is now
even more hideous than before. even more hideous than before.
2/25/97 : Modified parser to allow scope resolution operation to 2/25/97 : Modified parser to allow scope resolution operation to
appear in expressions and default arguments as in : appear in expressions and default arguments as in :
@ -1698,7 +1705,7 @@ Version 1.1b5 (March 12, 1997)
running under Win95. running under Win95.
2/19/97 : Fixed typedef handling bug in Perl5 shadow classes. 2/19/97 : Fixed typedef handling bug in Perl5 shadow classes.
2/19/97 : Added exception support. To use it, do the following : 2/19/97 : Added exception support. To use it, do the following :
%except(lang) { %except(lang) {
@ -1731,8 +1738,8 @@ Version 1.1b5 (March 12, 1997)
but seemingly unnecessary declarations. but seemingly unnecessary declarations.
2/18/97 : Optimized handling of member functions under inheritance. 2/18/97 : Optimized handling of member functions under inheritance.
SWIG can now use wrapper functions generated for a SWIG can now use wrapper functions generated for a
base class instead of regenerating wrappers for base class instead of regenerating wrappers for
the same functions in a derived class. This could the same functions in a derived class. This could
make a drastic reduction in wrapper code size for C++ make a drastic reduction in wrapper code size for C++
applications with deep inheritance hierarchies and applications with deep inheritance hierarchies and
@ -1781,10 +1788,10 @@ Version 1.1b5 (March 12, 1997)
Would apply the second typemap to all functions in Foo Would apply the second typemap to all functions in Foo
due to delayed generation of C++ wrapper code (clearly this due to delayed generation of C++ wrapper code (clearly this
is not the desired effect). Problem has been fixed by is not the desired effect). Problem has been fixed by
assigning unique numerical identifiers to every datatype in assigning unique numerical identifiers to every datatype in
an interface file and recording the "range of effect" of each an interface file and recording the "range of effect" of each
typemap. typemap.
2/11/97 : Added support for "ignore" and "default" typemaps. Only use 2/11/97 : Added support for "ignore" and "default" typemaps. Only use
if you absolutely know what you're doing. if you absolutely know what you're doing.
@ -1804,7 +1811,7 @@ Version 1.1b5 (March 12, 1997)
2/9/97 : Added -make_default option for producing default constructors 2/9/97 : Added -make_default option for producing default constructors
and destructors for classes without them. and destructors for classes without them.
2/9/97 : Changed the syntax of the SWIG %pragma directive to 2/9/97 : Changed the syntax of the SWIG %pragma directive to
%pragma option=value or %pragma(lang) option=value. %pragma option=value or %pragma(lang) option=value.
This change makes the syntax a little more consistent This change makes the syntax a little more consistent
between general pragmas and language-specific pragmas. between general pragmas and language-specific pragmas.
@ -1815,7 +1822,7 @@ Version 1.1b5 (March 12, 1997)
structures, classes, and unions. structures, classes, and unions.
2/9/97 : Fixed C++ compilation problem in Python 'embed.i' library file. 2/9/97 : Fixed C++ compilation problem in Python 'embed.i' library file.
2/9/97 : Fixed missing return value in perlmain.i library file. 2/9/97 : Fixed missing return value in perlmain.i library file.
2/9/97 : Fixed Python shadow classes to return an AttributeError when 2/9/97 : Fixed Python shadow classes to return an AttributeError when
@ -1842,7 +1849,7 @@ Version 1.1b5 (March 12, 1997)
shadow classes. shadow classes.
1/23/97 : Fixed bug with nested %extern declarations. 1/23/97 : Fixed bug with nested %extern declarations.
1/21/97 : Fixed problem with typedef involving const datatypes. 1/21/97 : Fixed problem with typedef involving const datatypes.
1/21/97 : Somewhat obscure, but serious bug with having multiple levels 1/21/97 : Somewhat obscure, but serious bug with having multiple levels
@ -1855,7 +1862,7 @@ Version 1.1 Beta4 (January 16, 1997)
==================================== ====================================
Note : SWIG 1.1b3 crashed and burned shortly after take off due Note : SWIG 1.1b3 crashed and burned shortly after take off due
to a few major run-time problems that surfaced after release. to a few major run-time problems that surfaced after release.
This release should fix most, if not all, of those problems. This release should fix most, if not all, of those problems.
1/16/97 : Fixed major memory management bug on Linux 1/16/97 : Fixed major memory management bug on Linux
@ -1875,7 +1882,7 @@ This release should fix most, if not all, of those problems.
a C++ class. SWIG was not generating correct code, a C++ class. SWIG was not generating correct code,
but a new scoping mechanism and method for handling but a new scoping mechanism and method for handling
datatypes inside a C++ class have been added. datatypes inside a C++ class have been added.
1/14/97 : Changed enumerations to use the value name instead 1/14/97 : Changed enumerations to use the value name instead
of any values that might have appeared in the interface of any values that might have appeared in the interface
file. This makes the code a little more friendly to file. This makes the code a little more friendly to
@ -1937,7 +1944,7 @@ Version 1.1 Beta2 (December 3, 1996)
#define A (int) 3 #define A (int) 3
4. Added support for typedef lists. For example : 4. Added support for typedef lists. For example :
typedef struct { typedef struct {
double x,y,z; double x,y,z;
} Vector, *VectorPtr; } Vector, *VectorPtr;
@ -2113,7 +2120,7 @@ There are lots of changes in this release :
5. The syntax of the %name directive has been changed. Use of the 5. The syntax of the %name directive has been changed. Use of the
old one should generate a warning message, but may still work. old one should generate a warning message, but may still work.
6. To support Tcl/Tk on non-unix platforms, SWIG imports a file called 6. To support Tcl/Tk on non-unix platforms, SWIG imports a file called
swigtcl.cfg from the $(SWIG_LIB)/tcl directory. I don't have access swigtcl.cfg from the $(SWIG_LIB)/tcl directory. I don't have access
to an NT machine, but this file is supposedly allows SWIG to to an NT machine, but this file is supposedly allows SWIG to
@ -2132,7 +2139,7 @@ There are lots of changes in this release :
- Documentation order is printed in interface file order by - Documentation order is printed in interface file order by
default. This can be overridden by putting an %alpha default. This can be overridden by putting an %alpha
directive in the beginning of the interface file. directive in the beginning of the interface file.
- You can supply additional documentation text using - You can supply additional documentation text using
%text %{ put your text here %} %text %{ put your text here %}
@ -2203,9 +2210,9 @@ notes are in no particular order--hope I remembered everything....
1. Tcl/Tk 1. Tcl/Tk
SWIG is known to work with Tcl7.3, Tk3.6 and later versions. SWIG is known to work with Tcl7.3, Tk3.6 and later versions.
I've also tested SWIG with expect-5.19. I've also tested SWIG with expect-5.19.
Normally SWIG expects to use the header files "tcl.h" and "tk.h". Normally SWIG expects to use the header files "tcl.h" and "tk.h".
Newer versions of Tcl/Tk use version numbers. You can specify these Newer versions of Tcl/Tk use version numbers. You can specify these
in SWIG as follows : in SWIG as follows :
@ -2231,7 +2238,7 @@ This is a somewhat experimental implementation, but is alot less
buggy than the alpha release. SWIG operates independently of buggy than the alpha release. SWIG operates independently of
the XS language and xsubpp supplied with Perl5. Currently SWIG the XS language and xsubpp supplied with Perl5. Currently SWIG
produces the necessary C code and .pm file needed to dynamically produces the necessary C code and .pm file needed to dynamically
load a module into Perl5. load a module into Perl5.
To support Perl5's notion of modules and packages (as with xsubpp), To support Perl5's notion of modules and packages (as with xsubpp),
you can use the following command line options : you can use the following command line options :
@ -2263,18 +2270,18 @@ If you really want to live on the edge, pick up a copy of Guile-iii and
play around with this. This is highly experimental---especially since play around with this. This is highly experimental---especially since
I'm not sure what the official state of Guile is these days. This I'm not sure what the official state of Guile is these days. This
implementation may change at any time should I suddenly figure out better implementation may change at any time should I suddenly figure out better
ways to do things. ways to do things.
6. Extending SWIG 6. Extending SWIG
SWIG is written in C++ although I tend to think of the code as mostly SWIG is written in C++ although I tend to think of the code as mostly
being ANSI C with a little inheritance thrown in. Each target language being ANSI C with a little inheritance thrown in. Each target language
is implemented as a C++ class that can be plugged into the system. is implemented as a C++ class that can be plugged into the system.
If you want to add your own modifications, see Appendix C of the user If you want to add your own modifications, see Appendix C of the user
manual. Then take a look at the "user" directory which contains some manual. Then take a look at the "user" directory which contains some
code for building your own extenions. code for building your own extenions.
7. The SWIG library 7. The SWIG library
The SWIG library is still incomplete. Some of the files mentioned in The SWIG library is still incomplete. Some of the files mentioned in
the user manual are unavailable. These files will be made available the user manual are unavailable. These files will be made available
@ -2293,7 +2300,7 @@ Version 0.1 Alpha (February 9, 1996)
1. Run-time type-checking of SWIG pointers. Pointers are now represented 1. Run-time type-checking of SWIG pointers. Pointers are now represented
as strings with both numeric and encoded type information. This makes as strings with both numeric and encoded type information. This makes
it a little harder to shoot yourself in the foot (and it eliminates it a little harder to shoot yourself in the foot (and it eliminates
some segmentation faults and other oddities). some segmentation faults and other oddities).
2. Python 1.3 now supported. 2. Python 1.3 now supported.
@ -2301,7 +2308,7 @@ Version 0.1 Alpha (February 9, 1996)
3. #define and enum can be used to install constants. 3. #define and enum can be used to install constants.
4. Completely rewrote the %include directive and made it alot more powerful. 4. Completely rewrote the %include directive and made it alot more powerful.
5. Restructured the SWIG library to make it work better. 5. Restructured the SWIG library to make it work better.
6. Various bug fixes to Tcl, Perl4, Perl5, and Guile implementations. 6. Various bug fixes to Tcl, Perl4, Perl5, and Guile implementations.
@ -2310,7 +2317,7 @@ Version 0.1 Alpha (February 9, 1996)
8. Made some changes to SWIG's class structure to make it easier to expand. 8. Made some changes to SWIG's class structure to make it easier to expand.
SWIG is now built into a library file that you can use to make your SWIG is now built into a library file that you can use to make your
own extenions. own extenions.
9. Made extensive changes to the documentation. 9. Made extensive changes to the documentation.
@ -2325,7 +2332,7 @@ Version 0.1 Alpha (February 9, 1996)