git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5241 626c5289-ae23-0410-ae9c-e8d60b6d4f22
886 lines
38 KiB
Text
886 lines
38 KiB
Text
Version 1.3.20 (In progress)
|
|
============================
|
|
10/31/2003: cheetah (William Fulton)
|
|
[C#] Fix since introducing the exception and std::string delegates.
|
|
The fix overcomes linker errors when using more than one SWIG module.
|
|
Problem reported by Andreas Schörk.
|
|
|
|
10/31/2003: beazley
|
|
Incorporated patch: [ 823302 ] Incr Tcl support.
|
|
Contributed by Alexey Dyachenko.
|
|
Note: needs documentation.
|
|
|
|
10/31/2003: beazley
|
|
Incorporated patch: [ 829325 ] new Python Module options and features.
|
|
Robin Dunn writes:
|
|
|
|
This patch makes a number of changes to the SWIG python module.
|
|
|
|
1. Add -apply option, and change the default code
|
|
output to use the foo(*args, **kw) calling syntax
|
|
instead of using apply(). If the -apply option is
|
|
given then code is generated as before. This is very
|
|
similar to Patch #737281 but the new -modern option
|
|
makes the second half of that patch unnecessary so it
|
|
is not included here.
|
|
|
|
2. Add -new_repr option. This is the same as my Patch
|
|
#797002 which I will mark as closed since it is no
|
|
longer needed. When this new option is used then the
|
|
__repr__ methods that are generated for proxy classes
|
|
will be more informative and give details about the
|
|
python class and the C++ class.
|
|
|
|
3. Add %feature("addtofunc"). It allows you to insert
|
|
one or more lines of code inside the shadow method or
|
|
function that is already generated, instead of
|
|
replacing the whole thing like %feature("shadow") does.
|
|
For __init__ it goes at the end, for __del__ it goes
|
|
at the begining and for all others the code generated
|
|
is expanded out to be like
|
|
|
|
def Bar(*args, **kwargs):
|
|
val = _module.Foo_Bar(*args, **kwargs)
|
|
return val
|
|
|
|
and the "addtofunc" code is inserted just before the
|
|
return statement. If the feature is not used for a
|
|
particular method or function then the shorter code is
|
|
generated just like before.
|
|
|
|
4. A little bit of refactoring to make implementing
|
|
addtofunc a little easier.
|
|
|
|
5. Added a -modern command-line flag that will cause
|
|
SWIG to omit the cruft in the proxy modules that allows
|
|
it to work with versions of Python prior to 2.2. The
|
|
result is a simpler, cleaner and faster python proxy
|
|
module, but one that requires Python 2.2 or greater.
|
|
|
|
10/31/2003: beazley
|
|
Incorporated patch: [ 829319 ] XML module tweaks.
|
|
This adds a new command line option -xmllite that
|
|
greatly reduces the amount of emitted XML code by
|
|
eliminating some fields mostly used in SWIG's
|
|
internal processing. Contributed by Robin Dunn.
|
|
|
|
10/31/2003: beazley
|
|
Incorporated patch: [ 829317 ] Adds DohSplitLines function.
|
|
Contributed by Robin Dunn.
|
|
|
|
10/29/2003: beazley
|
|
Fixed [ 827907 ] argout objects not being wrapped properly (PATH).
|
|
Patch contributed by Salvador Fandiño García.
|
|
|
|
10/29/2003: beazley
|
|
Fixed [ 826996 ] perl type checking ignores perl subclasses.
|
|
This enhancement makes it so wrapped classes and structs can
|
|
be subclassed in Perl and used normally.
|
|
Patch contributed by Salvador Fandiño García.
|
|
|
|
10/16/2003: cheetah (William Fulton)
|
|
[C#] IntPtr marshalled with a void* instead of int in C function
|
|
declarations. The casts thus look more conventional, for example:
|
|
|
|
// old
|
|
DllExport double SWIGSTDCALL CSharp_get_Shape_x(int jarg1) {
|
|
...
|
|
Shape *arg1 = (Shape *) 0 ;
|
|
arg1 = *(Shape **)&jarg1;
|
|
...
|
|
}
|
|
// new
|
|
DllExport double SWIGSTDCALL CSharp_get_Shape_x(void * jarg1) {
|
|
...
|
|
Shape *arg1 = (Shape *) 0 ;
|
|
arg1 = (Shape *)jarg1;
|
|
...
|
|
}
|
|
|
|
|
|
10/14/2003: beazley
|
|
Fixed a subtle problem with overloaded methods and smart pointers.
|
|
If a class has overloaded methods like this:
|
|
|
|
class Foo {
|
|
public:
|
|
int bar(int x);
|
|
static int bar(int x, int y);
|
|
};
|
|
|
|
and the class is used as a smart pointer:
|
|
|
|
class FooPtr {
|
|
public:
|
|
Foo *operator->();
|
|
};
|
|
|
|
The SWIG would try to expose the static member Foo::bar
|
|
through FooPtr---resulting bogus wrapper code and a compiler
|
|
error.
|
|
|
|
Due to the way in which overloading is handled, it is
|
|
extremely difficult to eliminate the static method in
|
|
this case. Therefore, it is still exposed. However,
|
|
the generated code now compiles and works.
|
|
|
|
10/05/2003: mkoeppe (Matthias Koeppe)
|
|
[Guile, MzScheme, Chicken]: Remove symbol clashes between
|
|
the runtime libraries by renaming all extern common.swg
|
|
functions with the preprocessor.
|
|
|
|
10/05/2003: mkoeppe (Matthias Koeppe)
|
|
[Guile] Added basic GOOPS support, contributed by John Lenz.
|
|
See the documentation for details.
|
|
|
|
*** NEW FEATURE ***
|
|
|
|
10/04/2003: mkoeppe (Matthias Koeppe)
|
|
[Guile] New option, -only-setters, which disables
|
|
traditional getter and setter procedures for structure slots.
|
|
|
|
10/03/2003: mkoeppe (Matthias Koeppe)
|
|
[Guile] Added run test for reference_global_vars by John Lenz.
|
|
|
|
09/30/2003: beazley
|
|
Partial solution to [ 792180 ] C++ smart-pointer/namespace mixup revisited.
|
|
The problem is not easy to fix (at least it doesn't seem so), but is
|
|
related to the instantiation of qualified templates inside of other
|
|
namespaces. SWIG now generates an error message in this case rather
|
|
than generating broken wrappers.
|
|
|
|
09/30/2003: beazley
|
|
Fixed [ 800012 ] ENTER macro from CORE/scope.h clashes with libc search.h.
|
|
Reported by Britton Leo Kerin.
|
|
|
|
09/30/2003: beazley
|
|
Fixed [ 811518 ] Casting ints to doubles (w/ solution?)
|
|
Addresses a problem with overloading in the Perl module.
|
|
Reported by Gerald Dalley.
|
|
|
|
09/28/2003: mkoeppe
|
|
[Guile with -scm option] Fix typo in generated code for
|
|
procedures-with-setters. Reported by John Lenz.
|
|
|
|
09/26/2003: beazley
|
|
Fixed [ 812528 ] externs not correct when throw is in signature.
|
|
Reported by Joseph Winston.
|
|
|
|
09/23/2003: cheetah (William Fulton)
|
|
SWIG was generating a number of symbols that didn't comply with
|
|
the ISO C/C++ standard, in particular ISO/IEC 14882:1998(E) 17.4.3.1.2
|
|
where double underscores are forbidden as well as symbols starting with
|
|
an underscore followed by an upper case letter. Most of these have
|
|
been rooted out. See new section added to internals.html development
|
|
manual 'Symbol Naming Guidelines for Generated C/C++ Code'.
|
|
|
|
09/23/2003: cheetah (William Fulton)
|
|
Director typemap name changes:
|
|
inv => directorin
|
|
outv => directorout
|
|
argoutv => directorargout
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
09/19/2003: mrose (Mark Rose)
|
|
[Python] Director constructors now default to __disown = 0,
|
|
which is the intended behavior and fixes the director_finalizer
|
|
test case under python.
|
|
|
|
09/12/2003: cheetah (William Fulton)
|
|
[C#] - Typemaps added for std::string and const std::string &.
|
|
- New delegate for creating a C# string given a char *. It
|
|
can be used by calling SWIG_csharp_string_callback as shown
|
|
in the std::string 'out' typemap. Useful if the return type is
|
|
mapped to a C# string and the calling function is responsible
|
|
for cleaning up memory as the C# garbage collector doesn't
|
|
free the memory created in C/C++ and then returned as a C# string.
|
|
- The exception delegates have moved into an inner class in the
|
|
intermediate class, thereby freeing up the static constructor.
|
|
|
|
09/11/2003: beazley
|
|
(Internals)
|
|
Major refactoring of iteration over lists and hashes. The
|
|
DOH library now uses iterators. They work like this:
|
|
|
|
List *l = (some list);
|
|
|
|
Iterator i;
|
|
for (i = First(l); i.item; i = Next(i)) {
|
|
// i.item contains the actual list item.
|
|
// i.item is NULL at end of list
|
|
...
|
|
}
|
|
|
|
Hash *h = (some hash);
|
|
Iterator j;
|
|
for (j = First(h); j.item; j = Next(j)) {
|
|
// j.item contains hash table item
|
|
// j.key contains hash table key
|
|
// Both j.item and j.key are NULL at end
|
|
...
|
|
}
|
|
|
|
The old iteration functions Firstitem(), Nextitem(), Firstkey(),
|
|
and Nextkey() are gone.
|
|
|
|
The new iterators are simpler, result in better memory use,
|
|
and may be faster. Also, there are no longer any problems
|
|
iterating over the same list/hash in multiple places at
|
|
the same time. For example, this is fine:
|
|
|
|
Iterator i,j;
|
|
for (i = First(l); i.item; i = Next(i)) {
|
|
for (j = First(l); j.item; j = Next(j)) {
|
|
...
|
|
}
|
|
}
|
|
|
|
(This never worked in previous versions).
|
|
*** POTENTIAL INCOMPATIBILITY ***. This will probably break
|
|
third party extensions to SWIG (or give them further encouragement
|
|
to join the SWIG CVS-tree :-).
|
|
|
|
09/10/2003: mkoeppe (Matthias Koeppe)
|
|
[Guile] Fix memory leaks in the "list-vector.i" typemaps.
|
|
|
|
09/09/2003: mkoeppe (Matthias Koeppe)
|
|
[Chicken] Use C_mk_bool rather than C_mkbool. This fixes
|
|
the wrapping of boolean values for Chicken 1.10 and newer.
|
|
Reported by Dave <hundo@yahoo.com> / Felix Winkelmann
|
|
<felix@proxima-mt.de>.
|
|
|
|
09/05/2003: cheetah (William Fulton)
|
|
[Java] Directors implemented for Java. In summary this is a big new feature
|
|
which supports upcalls from C++ to Java. Code is generated to support C++
|
|
callbacks to call into Java and true polymorphic behaviour for Java classes
|
|
derived from C++ classes. See java.html for details. Contributed by
|
|
Scott Michel.
|
|
|
|
09/05/2003: Tiger
|
|
Created contract example directory at /SWIG/Examples/contract
|
|
Added simple contract examples (simple_c & simple_cxx)
|
|
Modified contract module's output format
|
|
|
|
*** NEW FEATURE ***
|
|
|
|
09/01/2003: cheetah (William Fulton)
|
|
Test-suite build improvements:
|
|
- Multiple build directories working for the test suite, so it is now
|
|
possible to run configure in multiple subdirectories and run the test
|
|
suite in each of these sub directories.
|
|
- 'make distclean' fixed so it doesn't bomb out on the Examples directory
|
|
when using multiple subdiretory builds. Required the following directories
|
|
to be moved:
|
|
Examples/GIFPlot/Perl -> Examples/GIFPlot/Perl5
|
|
Examples/GIFPlot/Php -> Examples/GIFPlot/Php4
|
|
These new directories used to be symbolic links to the old directory.
|
|
Also the Examples/test-suite/Perl symbolic link has been removed.
|
|
- Running the test-suite, other than from the root directory, say
|
|
in Examples/test-suite/python will now display all the code being
|
|
executed.
|
|
- The following 3 C# compilers are detected during configure and work with
|
|
the test-suite: Mono, Portable.NET and Microsoft.
|
|
|
|
09/01/2003: Tiger
|
|
Added inheritance support for design by contract feature.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 794914 ] Wrong types in template specialization.
|
|
SWIG was not handling arguments correctly in template
|
|
partial specialization. For example,
|
|
|
|
template<class T> class Foo<T *> {
|
|
public:
|
|
T *blah();
|
|
};
|
|
|
|
%template(FooInt) Foo<int *>;
|
|
|
|
in this class, the return type of blah was set to
|
|
'int **', but it should really be 'int *'. This has been
|
|
fixed, but it will affect all prior uses of partial
|
|
specialization.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 786394 ] Patch for generated perl code does not compile under RedHat9.
|
|
Reported by Scott Finneran.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 791579 ] (unsigned) long long handled incorrectly (Tcl).
|
|
This was an error in the Tcl typemaps.i file.
|
|
Reported by Kjell Wooding.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 797573 ] no way to rename classes coming from C structures.
|
|
This problem relates to renaming of anonymous structures with a
|
|
typedef. For example:
|
|
|
|
%rename(Bar) Foo;
|
|
typedef struct {
|
|
...
|
|
} Foo;
|
|
|
|
Reported by Britton Leo Kerin.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 797576 ] -help seems to imply that only tcl-specific options exist.
|
|
Added a comment to alert user to other options.
|
|
Reported by Britton Leo Kerin.
|
|
|
|
09/01/2003: beazley
|
|
Fixed [ 798205 ] Segfault in SWIG_ConvertPtr.
|
|
Reported by Prabhu Ramachandran.
|
|
|
|
08/30/2003: mrose (Mark Rose)
|
|
Modified the director typemaps in python/std_complex.i to use the
|
|
new-style macro and conversion functions, which eliminated some
|
|
redundant code. Fixed a few bugs in these typemaps as well, although
|
|
more testing is needed.
|
|
|
|
08/29/2003: mrose (Mark Rose)
|
|
Completed initial support for wrapping abstract classes with directors.
|
|
Constructor wrappers will be generated for abstract classes that have
|
|
directors, and instances of the director classes will be created regardless
|
|
of whether the proxy class has been subclassed in the target language.
|
|
No checks are made during construction to ensure that all pure virtual
|
|
methods are implemented in the target language. Instead, calls to
|
|
unimplemented methods will throw SWIG_DIRECTOR_PURE_VIRTUAL_EXCEPTION
|
|
exceptions in C++.
|
|
|
|
Integrated Prabhu Ramachandran's typemap patches, which provide director
|
|
typemap support for enums and std::size_t, and fix a couple bugs in the
|
|
director std::vector<> typemaps.
|
|
|
|
08/29/2003: cheetah (William Fulton)
|
|
[C#] Implemented exception handling for throwing C# exceptions from C/C++ code.
|
|
A few delegate functions are available for calling which then throw the C#
|
|
exception. Use the SWIG_CSharpThrowException function from C/C++ typemaps.
|
|
See the generated wrapper code or csharphead.swg for all available exceptions.
|
|
Example:
|
|
|
|
SWIG_CSharpThrowException(SWIG_CSharpException, "exception description");
|
|
|
|
The 'throws' typemaps are also now implemented, so code is automatically
|
|
generated to convert any C++ exception into a C# System.Exception when the C++
|
|
method declares an exception specification such as:
|
|
|
|
int foo() throw(Bar);
|
|
|
|
Also any parameters that are references to a C++ class or a class passed by value
|
|
and are passed as a C# null will now throw a C# NullReferenceException.
|
|
|
|
08/29/2003: cheetah (William Fulton)
|
|
[C#] Fix to match the calling convention of all pinvoke methods so that they
|
|
match the calling convention used by default in the C# 'static extern' declarations
|
|
(__stdcall is used on Windows).
|
|
|
|
08/19/2003: cheetah (William Fulton)
|
|
[Java] Reworked std::string typemaps. Fixes a number of string in std namespace
|
|
problems. For example %template vector<string>. The templated class' get method
|
|
wasn't returning a Java String, but a SWIGTYPE_p_string. Reported
|
|
by Zach Baum.
|
|
|
|
08/15/2003: beazley
|
|
Fixed [ 763522 ] 1.3.19 segfault in SwigType_add_pointer/DohInsertitem.
|
|
Related to problem with unnamed class handling in Perl module.
|
|
|
|
08/15/2003: beazley
|
|
Fixed [ 763563 ] Missing indication of optional arguments.
|
|
Tcl module. Reported by Krzysztof Kozminski.
|
|
|
|
08/15/2003: beazley
|
|
Fixed [ 787432 ] long param handled as int. Tcl module
|
|
now uses Tcl_GetLongFromObj to convert integer values.
|
|
|
|
08/11/2003: beazley
|
|
Fixed [ 775989 ] numeric template parameters. There were
|
|
some errors in template expansion related to the use of
|
|
arrays where the array dimension was a template parameter.
|
|
It should work now. Reported by Bryan Green.
|
|
|
|
08/10/2003: mrose (Mark Rose)
|
|
Added a director typemap (outv) for return by value and cleaned up up a few
|
|
of the commented director typemaps.
|
|
|
|
08/10/2003: mrose (Mark Rose)
|
|
Fixed constructor generation for director classes to ignore private
|
|
constructors. Protected constructors are also ignored for now, pending
|
|
a solution to the problem of wrapping classes that only define protected
|
|
constructors.
|
|
|
|
08/07/2003: cheetah (William Fulton)
|
|
New commandline option -outdir <dir> to specify where the language specific
|
|
files are to be generated. This is useful for target languages like Python,
|
|
Java etc which generate proxy files in the appropriate language.
|
|
This option does not apply to the C/C++ wrapper file.
|
|
|
|
08/07/2003: cheetah (William Fulton)
|
|
On Windows the generated files (other than the _wrap.c or _wrap.cxx files)
|
|
were sometimes incorrectly being generated into the current directory unless
|
|
the input file used the Unix path separator. The Windows path separator
|
|
should now be used. Bug reported by Robert Davies.
|
|
|
|
08/07/2003: beazley
|
|
Added array variable set typemap to Perl module.
|
|
|
|
08/07/2003: beazley
|
|
Fixed [ 775677 ] Array init causes codegen bug..
|
|
|
|
08/07/2003: beazley
|
|
Fixed [ 779062 ] Class"\n"::foo not supported. SWIG
|
|
should now correctly handle whitespace in between
|
|
namespace qualifiers. For example "A :: Foo :: Bar".
|
|
|
|
07/31/2003: cheetah (William Fulton)
|
|
Fixes for parameters which are classes that are passed by value and have
|
|
a default value. A copy constructor for SwigValueWrapper is required
|
|
(SF #780056). Also fixed memory leak in these circumstances. These mods
|
|
also fix SF #780054.
|
|
|
|
07/28/2003: beazley
|
|
Improved run-time error message for pointers in Python module.
|
|
Contributed by Zooko.
|
|
|
|
07/10/2003: ballabio (Luigi Ballabio)
|
|
[Almost all languages] Wrappers for std::pair added.
|
|
Typemaps for Python, Ruby, Guile and MzScheme.
|
|
|
|
07/01/2003: mkoeppe (Matthias Koeppe)
|
|
[Chicken] Handle the case of more than one argout typemap
|
|
per function.
|
|
|
|
06/29/2003: cheetah (William Fulton)
|
|
[Java, C#] SF #670949 request. The destructor wrapper function name is now
|
|
configurable. A new attribute called methodname in the
|
|
javadestruct/javadestruct_derived (Java) or csdestruct/csdestruct_derived (C#)
|
|
typemaps specifies the method name. For example in Java the destructor is
|
|
wrapped by default with the delete method:
|
|
|
|
%typemap(javadestruct, methodname="delete") SWIGTYPE {...}
|
|
|
|
06/27/2003: cheetah (William Fulton)
|
|
[Java, C#] The throws attribute for adding exception classes to the throws
|
|
clause also now works with the following typemaps:
|
|
newfree
|
|
javain, javaout (Java)
|
|
csin, csout (C#)
|
|
|
|
For example, the 'AnException' will be added to the throws clause in the
|
|
proxy function:
|
|
|
|
%typemap(javaout, throws="AnException") int {
|
|
int returnValue=$jnicall;
|
|
if (returnValue==0) throw new AnException("Value must not be zero");
|
|
return returnValue;
|
|
}
|
|
|
|
06/25/2003: mrose (Mark Rose)
|
|
[Python] Director typemap marshalling checks for null pointers when
|
|
walking the parameter list instead of relying soley on the parameter
|
|
count. Cures a segfault that occured for multiple argument inv typemaps.
|
|
Someone with more Swig experience should probably review this code.
|
|
|
|
06/24/2003: mkoeppe (Matthias Koeppe)
|
|
[Chicken] Don't emit calls to "C_check_for_interrupt",
|
|
which may result in an endless loop. Patch by felix@proxima-mt.de.
|
|
|
|
06/20/2003: cheetah (William Fulton)
|
|
[C#] Finalizers now use destructor syntax as the override which was used in
|
|
the Finalize method is not in the ECMA standards, spotted by the MS compiler.
|
|
|
|
06/10/2003: cheetah (William Fulton)
|
|
[C#] A number of changes have been made to remove the Java naming
|
|
that was used in the C# module.
|
|
|
|
Typemap name changes:
|
|
jni -> ctype
|
|
jtype -> imtype
|
|
jstype -> cstype
|
|
javain -> csin
|
|
javaout -> csout
|
|
javainterfaces -> csinterfaces
|
|
javabase -> csbase
|
|
javaclassmodifiers -> csclassmodifiers
|
|
javacode -> cscode
|
|
javaimports -> csimports
|
|
javaptrconstructormodifiers -> csptrconstructormodifiers
|
|
javagetcptr -> csgetcptr
|
|
javafinalize -> csfinalize
|
|
|
|
Feature name changes:
|
|
javaconst -> csconst
|
|
javamethodmodifiers -> csmethodmodifiers
|
|
|
|
Pragma changes:
|
|
pragma(java) -> pragma(csharp)
|
|
jniclassbase -> imclassbase
|
|
jniclassclassmodifiers -> imclassclassmodifiers
|
|
jniclasscode -> imclasscode
|
|
jniclassimports -> imclassimports
|
|
jniclassinterfaces -> imclassinterfaces
|
|
|
|
Special variable name changes:
|
|
$javaclassname -> $csclassname
|
|
$javainput -> $csinput
|
|
$jnicall -> $imcall
|
|
|
|
This will break SWIG interface files that use these typemaps, features
|
|
and pragmas. Please update your code or use macros for backwards
|
|
compatibility.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***
|
|
|
|
06/10/2003: mkoeppe (Matthias Koeppe)
|
|
[MzScheme] Applied MzScheme module updates contributed by
|
|
John Lenz <jelenz@students.wisc.edu>.
|
|
|
|
- Updated mzscheme to use SWIG's common runtime type
|
|
system from common.swg.
|
|
|
|
- The Lib/mzscheme directory has been reorganized to
|
|
standardize names across the language modules:
|
|
mzscheme.i was moved to mzscheme.swg, mzscheme.swg and
|
|
mzschemedec.swg have been removed, mzrun.swg (which
|
|
contains the runtime code) has been added.
|
|
|
|
- The swig_proxy structure was renamed to swig_mz_proxy.
|
|
swig_mz_proxy now contains a pointer to a swig_type_info
|
|
structure.
|
|
|
|
- Added varin and varout typemaps for SWIGTYPE [] and
|
|
SWIGTYPE &.
|
|
|
|
- Garbage collection by calling scheme_add_finalizer() has
|
|
been added.
|
|
|
|
*** NEW FEATURE [MzScheme] ***
|
|
|
|
06/10/2003: cheetah (William Fulton)
|
|
[Java] New typemaps: javadestruct and javadestruct_derived
|
|
for the C++ destructor wrapper. The javadestruct version gets used by
|
|
classes at the top of an inheritance chain and the javadestruct_derived
|
|
version gets used by other classes.
|
|
|
|
[C#] cildispose and cildisposeoverride typemaps replaced by
|
|
csdestruct and csdestruct_derived typemaps. The delete()
|
|
method has been removed and its functionality put into these
|
|
typemaps designed for the Dispose() method.
|
|
|
|
- New typemaps csinterfaces and csinterfaces_derived replace
|
|
the javainterfaces typemap. Also fixes the peculiarity of all classes
|
|
in an inheritance chain individually deriving from the IDisposable
|
|
interface.
|
|
|
|
- New typemap csfinalize for finalizers. C++ destructors are now called
|
|
by garbage collector during finalization. Problem reported by
|
|
Andreas Schörk.
|
|
|
|
06/10/2003: Tiger
|
|
Modified contract code for error message output.
|
|
Contract code can now print out simple error message.
|
|
Modified contract code to prepare for inheritance
|
|
|
|
06/03/2003: mkoeppe
|
|
[Guile] Applied Guile module updates contributed by
|
|
John Lenz <jelenz@students.wisc.edu>.
|
|
|
|
- SWIG currently uses Guile's gh_ API, which is marked as
|
|
deprecated in Guile 1.6 and will be removed in Guile
|
|
1.9. This change introduces a command-line flag "-scm"
|
|
which causes SWIG to generate wrappers that use Guile's
|
|
SCM API instead; this requires Guile >= 1.6.
|
|
|
|
- The Lib/guile directory has been reorganized to
|
|
standardize names across language modules: guiledec.swg
|
|
and guile.swg have been moved into guile_gh_run.swg,
|
|
guile.i has been moved to guile_gh.swg, guile_scm.swg
|
|
and guile_scm_run.swg which contain the SCM API stuff
|
|
have been added
|
|
|
|
- ghinterface.i, which contains the defines from the gh_
|
|
functions to the scm_functions has been added
|
|
|
|
- The API for dealing with pointer objects is now
|
|
SWIG_ConvertPtr, SWIG_MustGetPtr, SWIG_NewPointerObj.
|
|
|
|
- Added varin and varout typemaps for SWIGTYPE [] and SWIGTYPE &
|
|
|
|
- Garbage collection has been added.
|
|
|
|
*** NEW FEATURE [Guile] ***
|
|
|
|
06/01/2003: cheetah (William Fulton)
|
|
Dimensionless arrays such as
|
|
|
|
int foo[] = {1, 2};
|
|
extern int bar[];
|
|
|
|
produce a warning that the variable is read-only. Depending on the target
|
|
language, this used to cause compile errors or generate a setter that
|
|
generated a runtime error. A setter cannot be automatically generated
|
|
because the array size cannot be determined by SWIG. A varin, globalin
|
|
or memberin typemap (depending on the target language) must be written
|
|
by the user.
|
|
|
|
05/29/2003: beazley
|
|
Refinement to default typemap matching and arrays. When an
|
|
array is declared like this:
|
|
|
|
int foo[4];
|
|
|
|
The default typemap now resolves to
|
|
|
|
SWIGTYPE [ANY]
|
|
|
|
If no match is found for that, it then resolves to
|
|
|
|
SWIGTYPE []
|
|
|
|
If no array dimension is specified in the original declaration,
|
|
the SWIGTYPE [] is used right away.
|
|
|
|
Note: This change has been made to resolve problems related to
|
|
arrays with and without dimensions. For example, sometimes SWIG
|
|
was generating setter functions for array variables with no dimensions
|
|
(an error). Likewise, SWIG sometimes made arrays with dimensions
|
|
read-only (also an error). This fixes the arrays_global test
|
|
problem.
|
|
|
|
05/28/2003: beazley
|
|
Fixed subtle type handling bug with references and pointers.
|
|
If you had functions like this:
|
|
|
|
typedef Foo Bar;
|
|
|
|
Foo *func1();
|
|
void func2(Bar &x);
|
|
|
|
Then func2() wouldn't accept objects returned by func1()
|
|
because of a type error. It should work now.
|
|
Reported by Brian Yang.
|
|
|
|
05/21/2003: cheetah (William Fulton)
|
|
Fixes to some of the Visual C++ example project files which would not
|
|
work with spaces in the paths held in the environment variables used to
|
|
point to the target language's library / include directory.
|
|
SF bug #740769
|
|
|
|
05/21/2003: songyanf (Tiger)
|
|
Added -contracts option.
|
|
First try of the idea of "Wrap by Contract":
|
|
build up realiable cross-language module by wrapping with SWIG.
|
|
Implemented basic assertion
|
|
(preassertion & postassertion & invariant)
|
|
for simple C/C++ functions.
|
|
|
|
Current format of contracts are:
|
|
%contract class_name :: func_name (paras...) {
|
|
require:
|
|
boolean exprs;
|
|
exprs;
|
|
ensure:
|
|
boolean expr;
|
|
exprs;
|
|
invariant:
|
|
boolean expr;
|
|
exprs;
|
|
}
|
|
|
|
*** NEW FEATURE ***
|
|
|
|
05/19/2003: cheetah (William Fulton)
|
|
Build tweaks. There were a few preprocessor definitions which were
|
|
specified in the Makefile for passing on the commandline when compiling.
|
|
These are now all defined in swigconfig.h. Autoconf doesn't normally
|
|
allow installation directories to be defined in this config header file,
|
|
but an autoconf archive macro enables this. This macro along with future
|
|
autoconf macros are going to be put in the Tools/config directory.
|
|
|
|
'swig -version' now reports the target build platform.
|
|
|
|
05/11/2003: cheetah (William Fulton)
|
|
[C# and Java] Fix to the following typemaps:
|
|
|
|
javabase, javainterfaces, javaimports, javaclassmodifiers,
|
|
javaptrconstructormodifiers, javafinalize, javagetcptr & javacode.
|
|
|
|
These are the typemaps for modifying/generating proxy classes.
|
|
Previously the typemaps would use the proxy class name and not the
|
|
C++ type, which was inconsistent with all other typemaps.
|
|
|
|
In most circumstances the proxy class name and the C++ class name/type
|
|
is the same except for classes in namespace, templated classes etc. so
|
|
this shouldn't affect most cases.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY FOR JAVA and C# MODULES ***
|
|
|
|
05/01/2003: beazley
|
|
Fixed problem with return by value, const, and private constructors.
|
|
For example:
|
|
|
|
class B {
|
|
private:
|
|
B();
|
|
public:
|
|
B(const B&);
|
|
};
|
|
|
|
class A {
|
|
...
|
|
const B returnB() const;
|
|
...
|
|
};
|
|
|
|
Problem and patch suggestion reported by Bill Hoffman.
|
|
|
|
04/29/2003: cheetah (William Fulton)
|
|
Build changes:
|
|
- Single autoconf invocation - autoconf in the Tools directory has gone.
|
|
|
|
- Libtool bootstrapped when running autogen.sh. This requires anyone
|
|
using the cvs version of SWIG to have libtool installed on their
|
|
machine. Suggest version 1.4.2 or higher, preferably the latest - 1.5.
|
|
|
|
- Automake is now used to build the runtime libraries in conjunction
|
|
with libtool.
|
|
|
|
- Runtime libraries are now successfully built as DLLs on Cygwin.
|
|
|
|
- Skipping languages is no longer just determined in the top level
|
|
makefile but in configure.in. This info is used for building
|
|
the runtime libraries and for running the examples and test-suite.
|
|
|
|
- These changes have fixed multiple build directory builds, that is
|
|
building from directories other than the top level directory.
|
|
Installation from multiple build directories also working. An initial
|
|
configure in the top level directory is no longer needed as described
|
|
in 04/02/2003 entry. A 'make distclean' will be needed before building
|
|
in a directory other than the top level directory if the autotools
|
|
have been run from this top level directory at some point, but
|
|
autoconf will tell you this. Note that 'make check' only works from
|
|
the top level directory at the moment.
|
|
|
|
04/28/2003: beazley
|
|
Fixed [ 723471 ] Wrapper_print() fails with preprocessor directives.
|
|
|
|
04/28/2003: beazley
|
|
Minor refinement of const static member variable handling
|
|
described in CHANGES 08/11/2002. Previously, SWIG merely
|
|
checked to see if there was an initializer in the declaration.
|
|
Now, SWIG additionally checks to make sure the static member
|
|
is const.
|
|
|
|
04/25/2003: ljohnson (Lyle Johnson)
|
|
[Ruby] Added a kind of limited support for multiple inheritance,
|
|
activated using the -minherit command-line option. I've also updated
|
|
the "C++ Inheritance" section of the Ruby documentation to discuss
|
|
how this works, and its limitations. Also also modified the minherit.i
|
|
test case to run against this.
|
|
|
|
04/25/2003: ljohnson (Lyle Johnson)
|
|
[Ruby] Added the -globalmodule command-line option for the Ruby
|
|
module, for wrapping stuff into the global module (Kernel) instead
|
|
of a nested module. Updated documentation accordingly.
|
|
|
|
04/23/2003: mrose (Mark Rose)
|
|
Fixed symname error in director calls to Python methods
|
|
that extend C++ operators.
|
|
|
|
Stopped director destructor wrappers from calling __set_up,
|
|
which was leaving the director flag in an inconsistent state.
|
|
|
|
04/23/2003: beazley
|
|
Fixed problem with namespace resolution and nested namespaces.
|
|
Reported by Alfred Lorber (and Marcelo Matus).
|
|
|
|
04/16/2003: cheetah (William Fulton)
|
|
Patch for Java examples and test-suite to run on Mac OS X.
|
|
|
|
04/15/2003: ljohnson (Lyle Johnson)
|
|
[Ruby] Incorporated Nobu Nakada's patches for supporting the Ruby
|
|
1.8 allocation framework.
|
|
|
|
04/15/2003: ljohnson (Lyle Johnson)
|
|
[Ruby] Replaced all uses of the deprecated STR2CSTR() macro with the
|
|
safer StringValuePtr() macro. For more information, see ruby-talk:67059
|
|
and follow-ups to that post.
|
|
|
|
04/11/2003: beazley
|
|
Fixed problem with preprocessor macro expansion. For example:
|
|
|
|
#define min(x,y) ((x) < (y)) ? (x) : (y)
|
|
int f(int min);
|
|
|
|
Reported by Sebastien Recio.
|
|
|
|
04/10/2003: cheetah (William Fulton)
|
|
[Java] Added a runtime check to typemaps in arrays_java.i library to check
|
|
that the Java array passed in is the same size as the C array and throw an
|
|
exception if not.
|
|
|
|
Also fix to use delete instead of free for arrays created using new.
|
|
|
|
04/07/2003: cheetah (William Fulton)
|
|
Remove GCC3 warning when compiling the examples and test-suite:
|
|
|
|
cc1plus: warning: changing search order for system directory "/usr/include"
|
|
cc1plus: warning: as it has already been specified as a non-system directory
|
|
|
|
See SF patch #715531 submitted by Gerald Williams
|
|
|
|
04/03/2003: cheetah (William Fulton)
|
|
[C#] Improved wrapping of enums and constants. These were previously
|
|
wrapped as C# variables rather than constants. Either these are wrapped
|
|
as readonly (runtime) constants or compile time constants, depending on
|
|
the %javaconst directive (The directive is likely to change name soon).
|
|
For example wrapping:
|
|
%javaconst(0);
|
|
#define ABC 22
|
|
%javaconst(1) XYZ;
|
|
#define XYZ 33
|
|
is now:
|
|
public static readonly int ABC = examplePINVOKE.get_ABC();
|
|
public const int XYZ = 33;
|
|
|
|
04/03/2003: cheetah (William Fulton)
|
|
[Java] Global constants and enums are put in their own interface called
|
|
xxxConstants, where xxx is the module name. This is an improvement as
|
|
it is possible to derive (implement) a Java class from the xxxConstants
|
|
interface to improve the syntax; namely when wrapping:
|
|
enum {ONE=1, TWO, THREE};
|
|
accessing these from a Java class implementing xxxConstants is neater:
|
|
int number = ONE;
|
|
than the previous:
|
|
int number = xxx.ONE;
|
|
|
|
Patch submitted by Dave Dribin.
|
|
|
|
04/02/2003: cheetah (William Fulton)
|
|
Build improvements for multiple builds. This allows one to build
|
|
the SWIG executable and runtime libraries for different platforms/compilers
|
|
etc by running configure in different directories. This isn't 100% just
|
|
yet and won't be until libtool is better configured... a 'configure' and
|
|
'make distclean' needs to be run in the root directory before it all works.
|
|
For example:
|
|
$ ./configure
|
|
$ make distclean
|
|
$ mkdir config1; cd config1; ../configure CC=gcc CXX=g++; make; cd ..
|
|
$ mkdir config2; cd config2; ../configure CC=cc CXX=c++; make; cd ..
|
|
|
|
To be improved. A 'make check' does not work yet either.
|
|
|
|
04/01/2003: beazley
|
|
Fixed template partial specialization argument expansion bug.
|
|
This showed up when trying to use std_vector.i with vectors
|
|
of pointers.
|
|
|
|
03/31/2003: cheetah (William Fulton)
|
|
Fix for parallel make builds of SWIG, for example
|
|
make -j 4
|
|
Build failure reported by Bill Clarke.
|
|
|
|
03/28/2003: beazley
|
|
Released 1.3.19.
|
|
|
|
|