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)
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)
=======================================
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).
2/11/00 : beazley
@ -49,14 +56,14 @@ Version 1.3 Alpha 1 (February 11, 2000)
return val
becomes
def method1(self, *_args):
val = apply(test2c.PyClass1_method1, (self,) + _args)
return val
2. Incorporate self into the _args tuple. This saves at least one tuple
allocation per method call.
def method1(self, *_args):
val = apply(test2c.PyClass1_method1, (self,) + _args)
return val
@ -67,13 +74,13 @@ Version 1.3 Alpha 1 (February 11, 2000)
val = apply(test2c.PyClass1_method1, _args)
return val
3. Remove *Ptr classes.
3. Remove *Ptr classes.
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
from the former and contains just the constructor.
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.
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.
<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
alternative that achieves the same thing</DB>
4. Use CObjects instead of strings for pointers.
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
is more memory efficient, provides better performance, and
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:
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 sources generated by yacc so that compilation without yacc
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.
Use AC_CONFIG_SUBDIRS in configure.in instead of hand made script.
Update all relevant .cvsignore to include .deps
@ -145,18 +152,18 @@ Version 1.3 Alpha 1 (February 11, 2000)
Patch contributed by Dieter Baron.
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/Modules1.1/java.cxx: fixed char* -> const char* warnings that are
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.
1/12/00 : beazley
Added Harco's Java modules.
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
preprocessor.
*** POTENTIAL INCOMPATIBILITY ***
@ -167,7 +174,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
to begin with).
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
anyway.
*** POTENTIAL INCOMPATIBILITY ***
@ -214,13 +221,13 @@ Version 1.3 Alpha 1 (February 11, 2000)
Examples/ Examples
More directories will be added as needed.
12/08/99: Loic Dachary (loic@senga.org)
Enhanced package handling for perl5 and c++.
With new option -hide Foo::Bar, every perl5 object (Frob) is
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
name may contain :: (Frob::Nitz) and will be relative to the
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
-shadow.
Lacking proper regression tests I used
Lacking proper regression tests I used
Examples/perl5/{c++,constraint,defarg,except,
graph/graph[1234],multinherit,nested,shadow,simple,tree,
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
and checked that the results are identical. In all those examples
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
break scripts that rely upon the older behavior.
*** POTENTIAL INCOMPATIBILITY ***
11/21/99: Added slight tweak to wrapper generator to collect local variables
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
of default constructors. Bug reported by Brad Clements.
11/5/99 : Fixed a few memory problems found by purify.
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
contributed by Keith Davidson.
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
@ -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/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
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
exception errors in destructors. Patch contributed
by Robin Dunn.
8/11/99 : Minor patch to swig_lib/python/swigptr.swg (added SWIGSTATIC
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
directive inside a class does not have to have a matching
%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:
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
such as "arg1", "arg2", etc...
*** POTENTIAL INCOMPATIBILITY ***
Functions with duplicate argument names such as
*** POTENTIAL INCOMPATIBILITY ***
Functions with duplicate argument names such as
bar(int *OUTPUT, int *OUTPUT) will likely cause problematic
wrapper code to be generated. To fix this, use different
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
classes. Previously, dereferencing of '.this' occured in the
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)
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:
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,
declarations such as
declarations such as
class foo {
...
@ -425,7 +432,7 @@ Version 1.3 Alpha 1 (February 11, 2000)
}
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.
Constants declared at the global level using const are also
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 *.
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.
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.
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
to Borland C++.
to Borland C++.
1/4/98 : Added the function Makefile.win.bc for compiling the examples
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.
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
the module name
swig -tcl -namespace -prefix bar foo.i
This places everything in the namespace 'bar'
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
than and including Tcl 7.3/Tk3.6 even if the -namespace option is
used.
used.
*** POTENTIAL INCOMPATIBILITY ***
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_prefix - Prefix/namespace appended to command names
@ -577,7 +584,7 @@ Version 1.1 Patch 4 (January 4, 1998)
significant changes were made :
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
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
output in the form of a list.
*** POTENTIAL INCOMPATIBILITY ***
12/31/97: Fixed long overdue problems with the testing scripts and certain
makefiles that required the use of the bash shell. Everything should
12/31/97: Fixed long overdue problems with the testing scripts and certain
makefiles that required the use of the bash shell. Everything should
work properly with the standard Bourne shell (sh) now.
12/31/97: Modified typemaps to allow $basetype as a valid local variable.
This allows for all sorts of bizarre hackish typemaps that
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
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
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
code size.
12/30/97: Modified the Python module to be more intelligent about the
creation of constants. SWIG no longer generates redundant
global variables and the size of the module initialization
function should be reduced. (Many thanks to Jim Fulton).
12/29/97: Fixed a bug in C++ code generation related to member functions,
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
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'
Version 1.1 Patch 3 (November 24, 1997)
========================================
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
of the .pm files created by SWIG.
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]',
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
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
classes. If -o was used to specify both the pathname and filename
of SWIG's output such as
swig -o /home/swig/wrapper.c -shadow -perl5 foo.i
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
typemaps of type 'void'. These were ignored previously,
but now if you specify,
%typemap(lang,out) void {
... return a void ...
}
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 minor parsing error with C++ initializers. For example,
@ -717,7 +724,7 @@ Version 1.1 Patch 3 (November 24, 1997)
%include typemaps.i
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.
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);
should now work properly.
should now work properly.
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);
three local variables will be created as follows :
double temp_a;
double temp_b;
double temp_result;
@ -799,14 +806,14 @@ Version 1.1 Patch 1 (August 27, 1997)
%apply double [ANY] { Real [ANY] };
%apply double [4] { double [10] };
A generic version of apply like this :
%apply double { Real };
should now work--even if arrays involving doubles and Reals are
used later.
7/27/97 : Changed warning message about "Array X has been converted to Y" to
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 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,
tuple, etc...). If SWIG detects the use of output typemaps
(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
with the return value (including the possibility of converting it
into a Python class).
7/26/97 : Fixed a parsing problem with types like 'unsigned long int',
'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
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 :
%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
is an array of the *same* type as the structure member. This
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
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.
In some cases, typemaps containing printf formatting strings such as
%typemap(memberout) int * {
printf("%d",42);
}
@ -944,7 +951,7 @@ Version 1.1 Patch 1 (August 27, 1997)
Would generate completely bogus code with garbage replacing
the '%d'. Caused by one faulty use of printf (wasn't able to find
any other occurences).
7/7/97 : Fixed bug in Python shadow class generation with non-member
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)
===========================
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.
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
that are normally included in every module. By using
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
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.
*** NEW FEATURE ***
6/18/97 : Need a Makefile fast? Type
6/18/97 : Need a Makefile fast? Type
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.
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
(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
not have write permission to the SWIG library. Third party library
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
to a class definition. Unfortunately, fixing the bug required
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.
*** POTENTIAL INCOMPATIBILITY ***
@ -1062,7 +1069,7 @@ Version 1.1 (June 24, 1997)
Unlike %name, %rename will rename any occurence of the old name.
This applies to functions, variables, class members and so forth.
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 ***
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)
#endif
int OldName(int);
6/15/97 : Added support for functions with no return datatype. In this case,
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
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
allow identifiers to contain a $ in C/C++ code as well (this is
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
into other classes. Under inheritance, the variables would
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
off of a class or structure. Unfortunately, this never really
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
of the datatype. Due to space limitations in datatype
representations, the name should not exceed 96 characters.
Note : This is only part of what is needed for template support.
Template class definitions are not yet supported by SWIG.
The template notation above may also be used when specifying
Objective-C protocol lists.
Objective-C protocol lists.
*** NEW FEATURE ***
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.
*** NEW FEATURE ***
@ -1175,7 +1182,7 @@ Version 1.1 (June 24, 1997)
"DWORD". This now includes pointers to the two datatypes.
For example, a typemap applied to "unsigned long **" would
also be applied to any occurrence of "DWORD **" as well.
5/19/97 : Fixed an ownership assignment bug in the Perl5 module when
class members were returning new objects belonging to
different classes.
@ -1184,12 +1191,12 @@ Version 1.1 (June 24, 1997)
$name - Name of function/variable/member
$basetype - Base datatype (type without pointers)
$argnum - Argument number
$argnum - Argument number
5/16/97 : Fixed embarrassing underscore error in local variable
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.
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
Python list. The new version does nothing, leaving the
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 ***
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
in a given function.
** Not currently supported in Perl4 or Guile modules.
5/2/97 : Fixed processing of %ifdef, %endif, %if, etc... (These are
SWIG equivalents of the C preprocessor directives that
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
available :
%pragma(perl5) code = "string"
%pragma(perl5) include = "file.pl"
%pragma(perl5) code = "string"
%pragma(perl5) include = "file.pl"
Both insert code into the .pm file created by SWIG. This can
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
that make use of these keywords for identifiers.
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**
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
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
prevent infinite loops when weird datatypes are passed.
3/29/97 : 'Makefile.win' added. This is used to build most of the examples
in the Examples directory under Windows NT/95.
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
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
want to make a Python module from the SWIG timers library, just
type this in any directory :
swig -python timers.i
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 >
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
installation, but it also makes it possible to start
including scripts, C code, and other miscellaneous files
in the library. For example, you could put a cool script
in the library and check it out whenever you wanted to use it.
*** New Feature ***
3/24/97 : #pragma export directives added to Tcl output for compiling
shared libraries on the Mac.
@ -1445,11 +1452,11 @@ Version 1.1 Beta6 (May 9, 1997)
typemap to achieve some safety. For example :
%typemap(perl5,check) Node * {
if (!$target)
if (!$target)
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
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 :
%typemap(perl5,check) int posint {
if ($target < 0)
if ($target < 0)
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
chaining. For example :
%typemap(tcl,in) int {
$in // Inserts prexisting typemap
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
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.
@ -1514,7 +1521,7 @@ Version 1.1b5 (March 12, 1997)
3/9/97 : Parsing bugs with nested class definitions and privately
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
would not compile properly. SWIG now attempts to use
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 -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 :
%module example
@ -1567,10 +1574,10 @@ Version 1.1b5 (March 12, 1997)
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
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 [5][ANY] {}
%typemap(in) double [5][ANY] {}
3/7/97 : Fixed a number of bugs related to multi-dimensional array handling.
Typedefs involving multi-dimensional arrays now works correctly.
@ -1581,9 +1588,9 @@ Version 1.1b5 (March 12, 1997)
...
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.
3/6/97 : Fixed potentially dangerous bug in the Tcl Object-oriented
interface. Well, actually, didn't fix it but issued a
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]
Object name already exists!
Use catch{} to ignore the error.
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
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.
3/2/97 : Changed pointer type-checker to be significantly more
efficient when working with derived datatypes. This
has been accomplished by storing type-mappings in sorted
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,
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
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 : Slight tweak of parser to allow trailing comma in enumerations
such as
such as
enum Value (ALE, STOUT, LAGER, };
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.
The C source generated by SWIG should compile without
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
appear in expressions and default arguments as in :
@ -1698,7 +1705,7 @@ Version 1.1b5 (March 12, 1997)
running under Win95.
2/19/97 : Fixed typedef handling bug in Perl5 shadow classes.
2/19/97 : Added exception support. To use it, do the following :
%except(lang) {
@ -1731,8 +1738,8 @@ Version 1.1b5 (March 12, 1997)
but seemingly unnecessary declarations.
2/18/97 : Optimized handling of member functions under inheritance.
SWIG can now use wrapper functions generated for a
base class instead of regenerating wrappers for
SWIG can now use wrapper functions generated for a
base class instead of regenerating wrappers for
the same functions in a derived class. This could
make a drastic reduction in wrapper code size for C++
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
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
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
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
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.
This change makes the syntax a little more consistent
between general pragmas and language-specific pragmas.
@ -1815,7 +1822,7 @@ Version 1.1b5 (March 12, 1997)
structures, classes, and unions.
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 Python shadow classes to return an AttributeError when
@ -1842,7 +1849,7 @@ Version 1.1b5 (March 12, 1997)
shadow classes.
1/23/97 : Fixed bug with nested %extern declarations.
1/21/97 : Fixed problem with typedef involving const datatypes.
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
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.
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,
but a new scoping mechanism and method for handling
datatypes inside a C++ class have been added.
1/14/97 : Changed enumerations to use the value name instead
of any values that might have appeared in the interface
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
4. Added support for typedef lists. For example :
typedef struct {
double x,y,z;
} 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
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
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
@ -2132,7 +2139,7 @@ There are lots of changes in this release :
- Documentation order is printed in interface file order by
default. This can be overridden by putting an %alpha
directive in the beginning of the interface file.
- You can supply additional documentation text using
%text %{ put your text here %}
@ -2203,9 +2210,9 @@ notes are in no particular order--hope I remembered everything....
1. Tcl/Tk
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
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
the XS language and xsubpp supplied with Perl5. Currently SWIG
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),
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
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
ways to do things.
ways to do things.
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
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
manual. Then take a look at the "user" directory which contains some
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 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
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).
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.
4. Completely rewrote the %include directive and made it alot more powerful.
5. Restructured the SWIG library to make it work better.
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.
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.
@ -2325,7 +2332,7 @@ Version 0.1 Alpha (February 9, 1996)