| Version 1.3.26 (October 9, 2005) |
| ================================ |
| |
| 10/08/2005: wsfulton |
| [Php] Added 'throws' typemaps. |
| |
| 10/08/2005: wsfulton |
| Fixes for languages that don't support multiple inheritance. The |
| first non-ignored class in the public base class list is used for inheritance. |
| by the proxy class. Previously, if the first class in the list was ignored, then |
| the proxy class wouldn't have any base classes. |
| |
| 10/07/2005: mmatus |
| Update more features to follow new convention, including: |
| |
| callback |
| ref/unref |
| except |
| |
| All of them use not only the feature as a flag, but also |
| as code value. To deal with those features, we use now |
| GetFlagAttr, which is similar to GetFlag, but instead or |
| returning 1 or 0, it returns the attr value, if happens |
| to be different of "0" of course. |
| |
| Now there are also more uniform directive names for the |
| ones based in features, for example, for the old |
| %newobject directive now we have tree directives defined: |
| |
| |
| #define %newobject %feature("new") |
| #define %nonewobject %feature("new","0") |
| #define %clearnewobject %feature("new","") |
| |
| and so on for all the other feature directives. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 09/30/2005: wsfulton |
| Subtle change to some features. Previously it was not possible to disable many |
| features once they had been enabled. This was for most features that behave as |
| flags. These features now work as follows: |
| |
| %feature("name") // enables the feature |
| %feature("name", "1") // enables the feature |
| %feature("name", "0") // disables the feature |
| %feature("name", "") // clears the feature |
| |
| In fact any non-empty value other than "0" will enable the feature (like C boolean logic). |
| Previously "1", "0" or any other non-empty value would enable the feature and it would |
| only be possible to disable the feature by clearing it (assuming there was no global enable). |
| |
| The following features are affected: |
| |
| allowexcept |
| compactdefaultargs |
| classic (Python) |
| cs:const (C#) |
| director |
| exceptionclass (Python) |
| ignore |
| immutable |
| java:const (Java) |
| java:downcast (Java) |
| kwargs |
| modern (Python) |
| new |
| noautodoc (Python) |
| nodefault |
| nodirector |
| noref |
| notabstract |
| nounref |
| novaluewrapper |
| python:maybecall (Python) |
| python:nondynamic (Python) |
| modula3:multiretval (Modula3) |
| predicate (Ruby) |
| trackobjects (Ruby) |
| valuewrapper |
| |
| It is now possible, for example to ignore all methods/classes in a header file, except for a |
| few targetted methods, for example: |
| |
| %feature("ignore"); // ignore all methods/classes |
| %feature("ignore","0") some_function(int, double); // do not ignore this function |
| %feature("ignore","0") SomeClass; // do not ignore this Class |
| %feature("ignore","0") SomeClass::method; // do not ignore this method |
| %include "bigheader.h" |
| |
| Removed %pythondynamic - it never worked properly. Use %pythonnondynamic instead. |
| Removed %feature("nokwargs") - it wasn't fully implemented - use %feature("kwargs","0") instead. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 09/25/2005: mkoeppe |
| [Guile] Add "throws" typemaps. |
| |
| 09/24/2005: cfisavage |
| [Ruby] Adds new %trackobjects functionality that maps C++ objects to |
| Ruby objects. This functionality makes it much easier to implement |
| mark functions for the garbage collector. For more information |
| refer to the update documentation and examples. |
| |
| 09/20/2005: wsfulton |
| [Perl] Patch 1116431 from Josh Cherry. Fixes non member functions inadvertently |
| being called instead of member functions. |
| |
| 09/20/2005: wsfulton |
| [Lua] Patch from Mark Gossage to add support for Lua-5.1, std::string, |
| std::vector, std::exception and documentation. |
| |
| 09/14/2005: mmatus |
| [Python] Add -nocppcast. Now the default behavior is to |
| always use the cppcast operators. Before that was the case |
| only when you used the -cppcast option. |
| |
| If this seems to break your code... your welcome!, it |
| means it was broken before, and you never notice. |
| |
| If you thing the error is due to one of the SWIG typemaps, |
| send us an example. |
| |
| Use -nocppcast only with very old C++ compilers that |
| do not support the cppcast operations. |
| |
| So, here applies: |
| |
| This change doesn't break compatibility, it was broken before. |
| |
| 09/13/2005: wsfulton |
| [Java] Fix for director methods when a class is passed by value as a |
| parameter. |
| |
| 09/11/2005: mmatus |
| Adding the module option to the %import directive. Now you |
| can use it as |
| |
| %import(module="BigModule") foo.i |
| |
| where subfile could (or not) define the module name via |
| the %module directive. The module option take precedence |
| and it has the same effects than having the directive |
| |
| %module BigModule |
| |
| inside the imported file foo.i. |
| |
| You can use the option in mainly two cases: |
| |
| 1.- You used the -module option when you generated the |
| module to be imported, and hence the module name in |
| the imported %module directive is not really useful. |
| |
| 2.- The module you want to import is very large, and it |
| has several .i/.h files. Then, if you just one to |
| import a class or so from the module, says 'foo', and |
| not the entire module via importing the main |
| BigModule.i file, then you just do: |
| |
| %import(module="BigModule") foo.h |
| |
| or |
| |
| %import(module="BigModule") foo.i |
| |
| where foo.i contains the 'foo' declaration and maybe a |
| couple of extra %include directives, as needed. |
| |
| |
| 09/11/2005: mmatus |
| Fix bug #1282637, about the -module option not having effect |
| in places where it was needed. |
| |
| 09/11/2005: wsfulton |
| When wrapping variables, ensure that none of the typemaps used for the |
| set wrappers are used when generating the get wrappers. I doubt this was a |
| problem for any languages except for the recently introduced null attribute |
| in the out typemap (C# only). |
| |
| 09/08/2005: wsfulton |
| More descriptive error messages when files fail to open. |
| |
| 09/06/2005: mmatus |
| |
| Allow a %define a macro inside another %define macro, for example |
| |
| %define hello(name, Type) |
| %define name ## a(Type) |
| %typemap(in) Type "hello;"; |
| %enddef |
| %enddef |
| |
| To learn how to use this new features in your own typemaps library, see |
| python/cstring.i, python/cwstring.i and python/cwstrbase.i. |
| |
| [Python] Normalize the cstring.i implementation to use fragments, and add |
| cwstring.i, which implements the same typemaps but for wchar_t strings. |
| |
| [Python] Bug fixed: 1247477, 1245591, 1249878 and others. |
| |
| 08/18/2005: wsfulton |
| [Ruby] Implement support for SWIGTYPE* DISOWN typemap (like in Python) for |
| better control of memory management, eg when adding an object created in Ruby |
| to a C++ container. Patch #1261692 from Charlie Savage. |
| |
| 08/18/2005: wsfulton |
| [Tcl] 64 bit platform fixes for the varargs handling in SWIG_GetArgs. This is an |
| improved fix for bug #1011604 as suggested by Jeremy Lin. |
| |
| 08/18/2005: wsfulton |
| [Tcl] Bug #1240469 - %newobject support for Tcl. Patch from Bob Marinier. |
| |
| 08/16/2005: wsfulton |
| [Perl] Bug #1254494 - Fix for global namespace pollution by perl header files |
| (bool define) prevented STL headers from being used on some systems, eg |
| Windows with Visual Studio. |
| |
| 08/16/2005: wsfulton |
| [Java] Bug #1240937 - Redefinition of __int64 typedef for Intel compilers. |
| |
| 08/15/2005: wsfulton |
| [Xml] Bug #1251832 - C++ template may generate invalid XML file |
| |
| 08/15/2005: wsfulton |
| [Lua] Support added for Lua. Patch #1242772 from Mark Gossage. |
| It supports most C/C++ features (functions, struct, classes, arrays, pointers, |
| exceptions), as well as lots of documentation and a few test cases & examples. |
| |
| 08/14/2005: wsfulton |
| [Xml] Fix incorrect xml escaping in base class name when base class is a template. |
| |
| 08/13/2005: efuzzyone |
| [CLISP] Added support for handling enums. Does not adds the return type declaration |
| to the function definition, if a function returns void. |
| |
| 08/09/2005: mkoeppe |
| New language module, Common Lisp with UFFI, from Utz-Uwe Haus. |
| |
| 08/09/2005: mkoeppe |
| Fix the Lisp s-expression output module; it no longer complains about "unknown targets". |
| |
| 07/27/2005: wsfulton |
| Modifications to STL wrappers so that it is possible for a user's %exception directive |
| to be applied to the STL wrapper methods. Previously the following global %exception |
| directive would not be used on the wrapper methods: |
| |
| %exception { |
| try { |
| $action |
| } catch (...) { |
| // handle uncaught exceptions |
| } |
| } |
| |
| This has been implemented by replacing %exception directives for specific STL wrapper |
| methods with an exception specification declared on the wrapper methods. throws typemaps |
| are now supplied for handling the STL exception specification. These can also be easily |
| overridden, for example the std::out_of_range exception, which is used a lot in the STL |
| wrappers, can be customised easily: |
| |
| %include "std_vector.i" |
| %typemap(throws) std::out_of_range { |
| // custom exception handler |
| } |
| %template(VectInt) std::vector<int>; |
| |
| 07/22/2005: efuzzyone |
| [CLISP] The clisp module for SWIG: |
| - It can only handle C, clisp currently does not supports ffi bindings to C++. |
| - It has two options, (a) -extern-all this will generate wrappers for all functions |
| and variablestions, (b) -generate-typedef this will generate wrappers "def-c-type" |
| wrappers for typedefs |
| - Can handle pointers to functions, complex types such as n-dimensional arrays of |
| pointers of depth d |
| - Generates wrappers for constants as well as variables |
| - Correctly distinguishes between the declaration of variables in structures and functions |
| - Creates a defpackage "declaration" with the module name as the package name, the created |
| package exports both functions and variables |
| - tries to guess when should a pointer variable be declared as c-ptr or c-pointer |
| |
| 07/22/2005: wsfulton |
| [C#] Changes to support C# structs returned by value. The changes required are: |
| - Using an optional 'null' attribute in the out typemap. If this attribute is specified, |
| then it is used for the $null special variable substitution. |
| - The ctype used in the C/C++ wrappers is no longer initialised to 0 on declaration. |
| Both of these changes fix the situations where an attempt was made to assign 0 to the |
| returned struct. Marshalling structs as value types still requires user defined typemaps. |
| See documentation for an example. |
| |
| 07/22/2005: wsfulton |
| [C#, Java] Fix SWIG_exception usage to work with compilers that don't support empty macro |
| arguments. Unfortunately this fix will stop usage of SWIG_exception being used within typemaps |
| that use "" or %{ %} delimeters, but continues to work with typemaps using {} delimeters. |
| Please use the SWIG_CSharpSetPendingExceptionArgument or SWIG_JavaThrowException methods instead |
| as SWIG_exception is really intended as a platform independent macro for the SWIG library writers. |
| |
| 07/16/2005: mkoeppe |
| [Allegro CL] Use specific foreign types rather than (* :void). |
| Use *swig-identifier-converter*. |
| |
| 06/27/2005: wsfulton |
| Functions declared as 'extern' no longer have an additional function declaration added to the |
| wrapper files. There are some cases where SWIG does not get this right, eg bug #1205859 (extern |
| functions with default arguments declared in a namespace). Also SWIG cannot get non-standard |
| calling conventions correct, eg Windows calling conventions are usually handled like this: |
| |
| %{ |
| #define DLLIMPORT __declspec(dllimport) |
| #define STDCALL __stdcall |
| %} |
| #define DLLIMPORT |
| #define STDCALL |
| %inline %{ |
| DLLIMPORT extern STDCALL void function(int); |
| %} |
| |
| SWIG incorrectly generates: |
| |
| extern void function(int); |
| |
| To which there is no solution as SWIG doesn't handle non-standard calling conventions. The extra |
| 'extern' function that SWIG generates is superfluous unless a user has forgotten to add the function |
| declaration into the wrappers. |
| |
| The -noextern commandline argument is now redundant and a new commandline argument -addextern can |
| be used to obtain the original behaviour. This shouldn't be necessary unless the header file |
| containing the function declaration was inadvertently not added to the wrappers. To fix this |
| add the function declaration into your wrappers, For example, replace: |
| |
| extern void foo(int); |
| |
| with: |
| |
| %inline %{ |
| extern void foo(int); |
| %} |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 06/22/2005: wsfulton |
| [C#, Java, Modula3, Ocaml] |
| The intermediary function names have been changed when wrapping variables to |
| match the other language modules so that %extend for a member variable works |
| uniformly across all language modules, eg: |
| |
| %extend ExtendMe { |
| Var; |
| }; |
| |
| %{ |
| void ExtendMe_Var_set(ExtendMe *, double) {...} |
| double ExtendMe_Var_get(ExtendMe *) {...} |
| %} |
| |
| The methods implementing the get/set used to be: |
| |
| %{ |
| void set_ExtendMe_Var(ExtendMe *, double) {...} |
| double get_ExtendMe_Var(ExtendMe *) {...} |
| %} |
| |
| This also changes the name of variable wrapper functions when using -noproxy. |
| The original names can be generated with the -oldvarnames commandline option. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |