git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7683 626c5289-ae23-0410-ae9c-e8d60b6d4f22
156 lines
5.2 KiB
Text
156 lines
5.2 KiB
Text
Version 1.3.27 (October 15, 2005)
|
|
=================================
|
|
|
|
10/18/2005: wuzzeb
|
|
Chicken:
|
|
- Correctly handle %ignored classes
|
|
- Correctly convert long, long long, unsigned long, etc
|
|
to chicken primitives. (Thanks to Felix Winkelmann)
|
|
- Using argout parameters when the return value was a
|
|
wrapped pointer caused a memory corruption. The chicken
|
|
garbage collector moved a pointer out from under us.
|
|
This is now fixed by running all the proxy creation
|
|
functions as continuations after the wrapper function
|
|
returns. As part of this, we no longer need the
|
|
chickenfastproxy flag on output typemaps.
|
|
- using -proxy and -nocollection together works now
|
|
Before, it was not exporting the destructor in the proxy
|
|
wrapper.
|
|
|
|
10/18/2005: mmatus
|
|
|
|
Unifying the typemaps for
|
|
|
|
python, ruby, tcl
|
|
|
|
and in the process, fix several problems in three
|
|
languages to work in the "canonical" way now stablished in
|
|
the typemap library
|
|
|
|
SWIG/Lib/typempas
|
|
|
|
The current status of the unification is that everything
|
|
compiles and runs inside the test-suite and examples
|
|
directories. And for the first type we have three
|
|
languages than pass the primitive_types.i case.
|
|
|
|
Also, we have uniform way to treat the errors, for example
|
|
if you do something like
|
|
|
|
>>> from primitive_types import *
|
|
>>> print val_uchar(10)
|
|
10
|
|
>>> print val_uchar(1000)
|
|
Traceback (most recent call last):
|
|
File "<stdin>", line 1, in ?
|
|
OverflowError: in argument 1 of type 'unsigned char'
|
|
|
|
you get the same exception in all the three languages.
|
|
|
|
And well, many more good things will come from this
|
|
unification, as proper support of the STL/STD classes
|
|
for all the languages, and hopefully, we can keep
|
|
adding other languages.
|
|
|
|
The hardest part, writting a common typemap library
|
|
that suites the three different languages, is done,
|
|
and adding another language it is easy now.
|
|
|
|
Still the global unification is not complete, the STL/STD
|
|
part is next, and probably adding one or two more
|
|
languages.
|
|
|
|
If you are curious, look at the python, ruby and/or tcl
|
|
directories to see what is needed to support the new
|
|
common typemaps library. Still, the final way to
|
|
integrate a new language could change as we move to
|
|
integrate the STD/STL.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
Some missing typemaps could start working, and change
|
|
the old expected behavior, specially in ruby and tcl.
|
|
|
|
|
|
|
|
10/15/2005: wsfulton
|
|
[Java] Fix for typesafe enum wrapping so that it is possible to
|
|
overload a method with 2 different enum types.
|
|
|
|
10/15/2005: wsfulton
|
|
Fix for %feature("immutable","0") attempting to generate setters
|
|
for constants.
|
|
|
|
Restored %immutable and %makedefault to clear the feature as it
|
|
behaved in SWIG-1.3.25 and earlier.
|
|
|
|
10/14/2005: mmatus
|
|
Fix bug in anonymous typedef structures which was leading to
|
|
strange behaviour.
|
|
|
|
10/13/2005: mmatus
|
|
Several minor changes:
|
|
|
|
- Improve the wchar_t type support
|
|
- Add a warning for when you define the 'in' typemap but
|
|
you don't define the 'typecheck' one. Very common mistake.
|
|
- Add proper default rule for function pointers, now you
|
|
can define a typemap such as:
|
|
|
|
%typemap(in) SWIGTYPE ((*)(ANY)) {...}
|
|
|
|
That will apply to all the pointer to functions. The
|
|
rule in C++ also apply to the function 'reference', ie,
|
|
in both cases
|
|
|
|
typedef int (*fptr)(int a);
|
|
typedef int (func)(int a);
|
|
|
|
This was needed since it seems to be 'illegal' in C++ to
|
|
do something like:
|
|
|
|
void *ptr = static_cast<void *>(fptr);
|
|
|
|
and probably, as for member functions, it is not
|
|
warrantied that the pointer sizes will match.
|
|
|
|
- Add the #error/#warning directives to swig's cpp.
|
|
|
|
- Add the noblock option for typemaps, which is used as
|
|
follows: supposed you a typemap, like this
|
|
|
|
|
|
%typemap(in,noblock=1) Hello {
|
|
....
|
|
}
|
|
|
|
then the typemap will be inserted without the block
|
|
imposed by the brackets, similar to
|
|
|
|
%typemap(in) Hello "...";
|
|
|
|
So, why you don't just use the quote style?, because:
|
|
|
|
1.- The quote style doesn't get preprocessed, for example
|
|
|
|
%typemap(in) Hello "$1= SWIG_macro($1);";
|
|
|
|
here, SWIG_macro doesn't get expanded
|
|
|
|
2.- Inside a quote typemap, you have to use
|
|
quotes carefully
|
|
|
|
%typemap(in) Hello "$1 = \"hello\" ";
|
|
|
|
3.- You can't make emacs and/or other editors
|
|
to indent inside a string!.
|
|
|
|
|
|
So, why do you want to remove the block?, because an extra
|
|
block when not needed (no local variables in it):
|
|
|
|
1.- makes the code harder to read
|
|
2.- makes the code larger
|
|
3.- or in short, for the same reason we have the quote style.
|
|
|
|
|