git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10259 626c5289-ae23-0410-ae9c-e8d60b6d4f22
228 lines
10 KiB
Text
228 lines
10 KiB
Text
Version 1.3.34 (in progress)
|
|
============================
|
|
|
|
02/13/2008: wsfulton
|
|
Add new special variables for use within %exception:
|
|
$wrapname - language specific wrapper name
|
|
$overname - if a method is overloaded this contains the extra mangling used on
|
|
the overloaded method
|
|
$decl - the fully qualified C/C++ declaration of the method being wrapped
|
|
without the return type
|
|
$fulldecl - the fully qualified C/C++ declaration of the method being wrapped
|
|
including the return type
|
|
|
|
02/12/2008: drjoe
|
|
[R] Now setting S4 flag in SWIG created objects. This
|
|
fixes R-SWIG for 2.6 and warning for 2.6 failure has been removed.
|
|
|
|
02/11/2008: mgossage
|
|
[Lua] Added a patch by Torsten Landschoff to fix the unary minus issue
|
|
Ran 'astyle --style=kr -2' across lua.cxx to neaten it up
|
|
|
|
02/10/2008: wsfulton
|
|
Bump SWIG_RUNTIME_VERSION to 4. This is because of the recently introduced API
|
|
change in the conversion functions, ie change in definition of swig_converter_func.
|
|
Anyone calling SWIG_TypeCast must pass in a valid value for the new additional
|
|
(third) parameter and then handle the newly created memory if the returned value
|
|
is set to SWIG_CAST_NEW_MEMORY else a memory leak will ensue.
|
|
|
|
02/09/2008: wsfulton
|
|
[Python] Experimental shared_ptr typemaps added. Usage is the same as the recently
|
|
added Java and C# shared_ptr typemaps. Two macros are available, although these
|
|
may well change in a future version:
|
|
|
|
For base classes or classes not in an inheritance chain:
|
|
SWIG_SHARED_PTR(PROXYCLASS, TYPE)
|
|
For derived classes:
|
|
SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE)
|
|
|
|
The PROXYCLASS is the name of the proxy class, but is only required for Java/C#.
|
|
Example usage:
|
|
|
|
%include "boost_shared_ptr.i"
|
|
|
|
SWIG_SHARED_PTR(Klass, Space::Klass)
|
|
SWIG_SHARED_PTR_DERIVED(KlassDerived, Space::Klass, Space::KlassDerived)
|
|
|
|
namespace Space {
|
|
struct Klass { ... };
|
|
struct KlassDerived : Klass { ... };
|
|
}
|
|
|
|
Further details to follow in future documentation, but the following features
|
|
should be noted:
|
|
|
|
- Not restricted to boost::shared_ptr, eg std::tr1::shared_ptr can also be used.
|
|
- Available typemap groups:
|
|
(a) Typemaps for shared_ptr passed by value, reference, pointer and pointer
|
|
reference.
|
|
- (b) Typemaps for passing by raw value, raw pointer, raw reference, raw pointer
|
|
reference.
|
|
- The code being wrapped does not even have to use shared_ptr, SWIG can use
|
|
shared_ptr as the underlying storage mechanism instead of a raw pointer due to
|
|
the typemaps in group (b) above.
|
|
- No array support as shared_ptr does not support arrays.
|
|
- This works quite differently to the usual SWIG smart pointer support when
|
|
operator-> is parsed by SWIG:
|
|
- An additional smart pointer class is not generated reducing code bloat in
|
|
the wrappers.
|
|
- Using smart pointers and raw pointers can be mixed seamlessly.
|
|
- Missing constructors for the smart pointers is no longer a problem and so
|
|
separate factory type functions do not have to be written and wrapped.
|
|
- The implicit C++ shared_ptr< derived class > to shared_ptr< base class >
|
|
cast also works in the target language. This negates the necessity to write
|
|
an explicit helper cast function providing the upcast which would need
|
|
calling prior to passing a derived class to a method taking a shared_ptr to
|
|
a base class.
|
|
|
|
02/09/2008: wsfulton
|
|
[Python] Add support for overriding the class registration function via a new
|
|
"smartptr" feature. This is a very low level of customisation most users
|
|
would never need to know. The feature will typically be used for intrusive
|
|
smart pointers along with additional typemaps. Example usage of the feature:
|
|
|
|
%feature("smartptr", noblock=1) Foo { boost::shared_ptr< Foo > }
|
|
class Foo {};
|
|
|
|
The generated Foo_swigregister function will then register boost::shared < Foo >
|
|
(SWIGTYPE_p_boost__shared_ptrTFoo_t instead of SWIGTYPE_p_Foo) as the underlying
|
|
type for instantiations of Foo.
|
|
|
|
02/09/2008: wsfulton
|
|
Features now supports the optional 'noblock' attribute for all usage of %feature.
|
|
When specified, the { } braces are removed from the feature code. This is identical
|
|
in behaviour to usage of 'noblock' in typemaps and is used when the preprocessor
|
|
is required to operate on the code in the feature and the enclosing { } braces
|
|
are not required. Example:
|
|
|
|
#define FOO foo
|
|
%feature("smartptr", noblock="1") { FOO::bar }
|
|
|
|
The preprocessor then reduces this as if this had been used instead:
|
|
|
|
%feature("smartptr") "foo::bar"
|
|
|
|
02/01/2008: olly
|
|
[Python] Fix format string bug (SF#1882220).
|
|
|
|
01/31/2008: wsfulton
|
|
Additions to the %types directive. Now the conversion / casting code can be
|
|
overridden to some custom code in the %types directive, like so:
|
|
|
|
%types(fromtype = totype) %{
|
|
... code to convert fromtype to totype and return ...
|
|
%}
|
|
|
|
The special variable $from will be replaced by the name of the parameter of the
|
|
type being converted from. The code must return the totype cast to void *. Example:
|
|
|
|
class Time;
|
|
class Date;
|
|
Date &Time::dateFromTime();
|
|
|
|
%types(Time = Date) %{
|
|
Time *t = (Time *)$from;
|
|
Date &d = t->dateFromTime();
|
|
return (void *) &d;
|
|
%}
|
|
|
|
resulting in the conversion / casting code looking something like:
|
|
|
|
static void *_p_TimeTo_p_Date(void *x) {
|
|
Time *t = (Time *)x;
|
|
Date &d = t->dateFromTime();
|
|
return (void *) &d;
|
|
}
|
|
|
|
This is advanced usage, please use only if you understand the runtime type system.
|
|
|
|
01/30/2008: mgossage
|
|
Small update to documentation in Typemaps.html, to warn about use of local
|
|
variables in typemaps for multiple types.
|
|
|
|
01/25/2008: wsfulton
|
|
[Java] Fix bug reported by Kevin Mills in ARRAYSOFCLASSES typemaps where any
|
|
changes made to an array element passed from Java to C are not reflected back
|
|
into Java.
|
|
|
|
01/24/2008: mgossage
|
|
More updates to the configure script for detecting lua.
|
|
Also looks in /usr/include/lua*
|
|
Also changed typemaps.i not to check for NULL before freeing a pointer
|
|
|
|
01/21/2008: wsfulton
|
|
[Python] For STL containers, SWIG no longer attempts to convert from one
|
|
STL container to another, eg from std::vector<int> to std::vector<double>
|
|
or std::list<int> to std::vector<int> or even std::vector<Foo> to
|
|
std::vector<Bar> as it previously did. In fact SWIG no longer attempts to
|
|
convert any SWIG wrapped C++ proxy class that is also a Python sequence,
|
|
whereas previously it would. Any non-SWIG Python sequence will still be
|
|
accepted wherever an STL container is accepted. Overloaded methods using
|
|
containers should be faster.
|
|
|
|
01/18/2008: wsfulton
|
|
[C#] Add 'directorinattributes' and 'directoroutattributes' typemap attributes
|
|
for the imtype typemap. These should contain C# attributes which will
|
|
be generated into the C# director delegate methods.
|
|
|
|
01/18/2008: olly
|
|
Fix handling of byte value 255 in input files on platforms where
|
|
char is signed (it was getting mapped to EOF). Fixes SF#1518219.
|
|
|
|
01/16/2008: wsfulton
|
|
Fix template member variables wrapped by a smart pointer. Bug reported
|
|
by Robert Lupton.
|
|
|
|
01/14/2008: mgossage
|
|
Substantial changes to configure script for detecting lua.
|
|
Code can now link to liblua.a, liblua50.a or liblua51.a
|
|
It's also a lot neater now.
|
|
|
|
12/16/2007: wsfulton
|
|
[Perl] Backed out #1798728 - numbers can be passed to functions taking char *
|
|
|
|
12/16/2007: wsfulton
|
|
Fix #1832613 - Templates and some typedefs involving pointers or function pointers
|
|
|
|
12/12/2007: wsfulton
|
|
[Java] Fix #1632625 - Compilation errors on Visual C++ 6 when using directors.
|
|
|
|
12/12/2007: wsfulton
|
|
[Perl] Fix #1798728 - numbers can be passed to functions taking char *.
|
|
|
|
12/12/2007: wsfulton
|
|
Fix #1819847 %template with just one default template parameter
|
|
|
|
template<typename T = int> class Foo {...};
|
|
%template(FooDefault) Foo<>;
|
|
|
|
12/12/2007: mgossage
|
|
[Lua] Small correction on Lua.html
|
|
|
|
12/09/2007: wsfulton
|
|
Apply patch #1838248 from Monty Taylor for vpath builds of SWIG.
|
|
|
|
12/08/2007: wsfulton
|
|
[Lua] Fixes to remove gcc-4.2 warnings
|
|
|
|
12/06/2007: wsfulton
|
|
Fix #1734415 - template template parameters with default arguments such as:
|
|
|
|
template<typename t_item, template<typename> class t_alloc = pfc::alloc_fast >
|
|
class list_t : public list_impl_t<t_item,pfc::array_t<t_item,t_alloc> > { ... };
|
|
|
|
12/04/2007: mgossage
|
|
[lua] Fix a bug in the class hierachy code, where the methods were not propagated,
|
|
if the name ordering was in a certain order.
|
|
Added new example programs (dual, embed) and runtime tests for test-suite.
|
|
|
|
11/30/2007: wsfulton
|
|
Fix using statements using a base class method where the methods were overloaded.
|
|
Depending on the order of the using statements and method declarations, these
|
|
were previously generating uncompileable wrappers, eg:
|
|
|
|
struct Derived : Base {
|
|
virtual void funk();
|
|
using Base::funk;
|
|
};
|
|
|