| Version 1.3.34 (27 February 2008) |
| ================================= |
| |
| 02/13/2008: wsfulton |
| [R] Fix wrapping of global function pointer variables. |
| |
| 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; |
| }; |
| |