Commit graph

22,651 commits

Author SHA1 Message Date
Jiulong Wang
b4b4c0a25e Fix extra quote escape in golang 2016-10-10 21:34:19 -07:00
Frank Schlimbach
49cd031f12 restricting chaching template default types 2016-10-10 10:42:23 -05:00
Simon Marchetto
6b2caca8b9 scilab: add runtime function SWIG_Scilab_TypeQuery() checks runtime is initialized 2016-10-05 14:09:08 +02:00
Simon Marchetto
36156a2295 scilab: clean runtime code (move error functions..) 2016-10-05 14:09:08 +02:00
Frank Schlimbach
1cf7a5e925 Merge pull request #1 from swig/master
merge with master
2016-10-05 09:17:55 +02:00
Jiulong Wang
256e283fc3 Fix #define error when value contains char in compound expression 2016-10-02 13:01:16 -07:00
William S Fulton
08e32e794c Add further documentation/info on the smartptr feature to the shared_ptr library file
[skip ci]
2016-09-30 18:43:49 +01:00
William S Fulton
08688d7d9d Add support for "ret" typemap where missing and improve documentation on it. 2016-09-29 08:07:26 +01:00
William S Fulton
7bfa5fb951 Temporarily remove OSX testing of Guile on Travis
Seems like OSX 10.9 is now too old for homebrew and Guile
2016-09-27 08:12:49 +01:00
Olly Betts
209074dfff Add entry for PR #777
Give up waiting for the submitter to.
2016-09-27 15:17:51 +13:00
ahmed-usman
2d871655e3 Update xml.cxx to return typenames (#777)
Typenames were being returned wrong, so add a condition to handle templateparms correctly.
2016-09-27 15:15:47 +13:00
Olly Betts
bbebd1a012 Add entry for #795 fix 2016-09-27 15:13:10 +13:00
Li Shengqiu
bac85d5b1a [Go] Fix argument names in inherited functions #795 (#797)
* [Go] Fix argument names in inherited functions #795

This commit fixes a wrong argument name replacement in the inherited functions as well as a memory leak.

* Add testcase for #795

* Move variable_replacement testcase into common

* Move variable_replacement testcase into common
2016-09-27 15:08:47 +13:00
Simon Marchetto
457ea5d209 scilab: remove compilation warnings 2016-09-26 13:55:45 +02:00
Simon Marchetto
0c09b00d6e scilab: mlists that map pointers can be given a custom type name 2016-09-26 11:54:17 +02:00
William S Fulton
d3f7fd965c Add bad_cast enhancement to changes file 2016-09-25 14:21:29 +01:00
William S Fulton
777c825cd2 Rework Python builtin CLOSURE macros
The new approach uses support functions and minimal code in the macros
to make debugging easier.
2016-09-25 14:15:38 +01:00
William S Fulton
848628ae91 More flexible python builtin slots
The closure names used for builtin slots are mangled with their functype so
 that overloaded C++ method names can be used for multiple slots.
For example:
%feature("python:slot", "mp_subscript", functype="binaryfunc") SimpleArray::__getitem__;
%feature("python:slot", "sq_item", functype="ssizeargfunc") SimpleArray::__getitem__(Py_ssize_t n);
will generate closures:
  SWIGPY_SSIZEARGFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___ssizeargfunc_closure */
  SWIGPY_BINARYFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___binaryfunc_closure */
2016-09-25 14:15:38 +01:00
William S Fulton
5b8e8fa107 Merge pull request #793 from q-p/bad_cast
Add std::bad_cast to std_except.i
2016-09-25 14:12:01 +01:00
Olly Betts
1adfe2f537 [PHP] Fix code generated for feature("director:except")
Previously the return value of call_user_function() was ignored and we
checked an uninitialised value instead.  Fixes #627.  Based on patch
from Sergey Seroshtan.
2016-09-25 14:42:04 +13:00
Daniel Vollmer
dd7a5a6e6e Fix missed files 2016-09-17 19:01:42 +02:00
William S Fulton
0769e9b727 Fix iterators for containers of NULL pointers (or Python None) when using -builtin.
Previously iteration would stop at the first element that had a NULL pointer value.
2016-09-17 17:53:48 +01:00
Daniel Vollmer
ce1cb85d86 Add <typeinfo> header for std::bad_cast 2016-09-17 13:24:32 +02:00
Daniel Vollmer
2dc87d7485 Add std::bad_cast to std_except.i
This exception occurs when dynamic_cast<T&> fails.

Fixes #783.
2016-09-17 10:26:54 +02:00
Olly Betts
b138f054e5 [Javascript] Fix SWIG_exception() macro (#792)
Fix SWIG_exception() macro to return from the current function.
Fixes #789, reported by Julien Dutriaux.
2016-09-17 17:29:42 +12:00
Olly Betts
26bbc96d58 Arrange to return after calling zend_throw_exception()
Fixes github issue#240.
2016-09-16 17:54:02 +12:00
Marcin Wojdyr
902f5d3f32 cstrings.swg: fix function names inside comments (#790) 2016-09-16 12:26:35 +12:00
Jiulong Wang
9e53432aef Add more test case for char const expression in enum 2016-09-14 22:41:02 -07:00
Vadim Zeitlin
93ca7451e6 Also remove SWIGTYPE*& typemaps for C
They seem unnecessary too and look suspicious, notably the use of "static" in
the "out" typemap is almost certainly wrong.

As all the tests still pass without them, don't bother fixing these typemaps
but just remove them completely.
2016-09-15 01:46:28 +02:00
Vadim Zeitlin
7a6edf8b82 Remove nonsensical typemaps for SWIGTYPE**
It's not clear why they were defined in the first place, but they broke
li_std_vector_ptr unit test, which now uses "T**", after the latest merge with
master, so just remove them to let the test pass again.
2016-09-15 01:41:20 +02:00
Vadim Zeitlin
f919896306 Merge branch 'master' into C 2016-09-15 01:30:49 +02:00
Vadim Zeitlin
9204e57cc1 Fix $typemap() expansion for "ctype" typemap
This didn't work correctly before because we need to override the base class
replaceSpecialVariables() method to expand $resolved_type, which appears
during the expansion, using the type supplied as $typemap() argument instead
of doing it later using it the type to which the typemap containing the macro
is attached.

This is a prerequisite for implementing smart pointers support.
2016-09-15 01:27:42 +02:00
Vadim Zeitlin
2f4eb2d412 Replace output_target parameter with global current_output
This will allow implementing replaceSpecialVariables(): as it is called from
inside the typemap lookup code, we can't pass any parameters to it directly,
but we can use a class language-global member variable to it indirectly.

No real changes yet.
2016-09-15 01:27:42 +02:00
Vadim Zeitlin
dcda566ce6 Remove unnecessary memory allocation from substituteResolvedType()
Don't allocate memory just to leak it, SwigType_typedef_resolve_all() already
returns a copy we can use.
2016-09-15 01:27:42 +02:00
Vadim Zeitlin
bf71891197 Just get rid of an unnecessary variable
Simplify the code by avoiding a superfluous extra variable.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
0353317a21 Remove substituteResolvedType() return value as it is unused
It doesn't matter if this function did anything or not as its output parameter
is always used anyhow by the caller.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
ad5de803b5 Avoid unnecessary allocation in get_wrapper_func_return_type()
Don't call NewString() just to overwrite it with another pointer (and leak the
one allocated by NewString()).
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
11426ac1cd Drop code dealing with tmap:ctype:out which is never used
This typemap attribute is not used with C (so far), there is no point in
checking for it in the code.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
6e0e728a14 Refactor node copying in C::classHandler()
Don't create a new node just to delete it if we don't need it, but rather only
create it if we do need it.

Also copy as much as can be copied in copy_node() helper, it was confusing to
copy part of the attributes in it and part in the caller. And one of them
("c:inherited_from") was even copied twice, it was first created in the
function and then unconditionally overwritten by the caller -- don't do this
any more.

No real changes.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
2ce15d3e6a Don't leak a Node in C::classHandler()
Delete the copied node if we end up not using it.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
fe8c6fad44 Ignore std::vector<T>::get_allocator()
This is not really useful in C wrappers and results in ugly descriptor for the
allocator type appearing in the output, better to avoid it.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
65d9cad1ca Don't force inheritance of ignored methods
If a symbol is ignored in the base class, it shouldn't appear in the derived
class neither.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
d89a95a48c Use std/std_vector.i instead of a poor copy in c/std_vector.i
At the very least, this gives us a working vector<bool> and allows
"li_std_vector" unit test to pass. It is also just nice to reuse the existing
typemaps instead of having another copy of them.

As C doesn't have UTL, some parts of std_vector.i had to be excluded from it
however.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
29563ec98e Fix typemaps for bool
The existing typemaps didn't make much sense, simplify (there doesn't seem to
be any point in using $1_basetype when dealing with "bool") them and treat
"const bool&" as "bool", not as pointer, as this is much more convenient in C.

This also allows another unit test to pass.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
8eba14c6e0 Resolve typedefs in parameter types after applying ctype typemap
Typedefs were not resolved for non-object types in spite of
SwigType_typedef_resolve_all() call as it didn't affect "c_parm_type".

Actually it is not even clear if resolving typedefs is a good idea as using
them probably makes the generated code more clear, but at least in the case of
nested typedefs we do need to do it as "Class::Type" can't appear in C code.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
f533e3c488 Pass const references to primitive types by value
Change the typemaps to use values, not pointers, for arguments of "T const&"
type, this is much more natural in C.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
8fa28e0ce9 Don't lose the correct sym:name when inheriting base class methods
For some reason, the copy of the function made in the derived class used the
"name" attribute instead of "sym:name", which means that any %renames attached
to it were lost and didn't affect the derived class version.

Fix this and also a problem uncovered by doing it in the operator_overload
unit test as the assignment operator shouldn't be inherited at all, the
compiler-generated operator is used instead if the derived class doesn't
define its own one.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
1912fd3a42 Suppress a warning in abstract_typedef unit test
Use an explicit cast to cast from derived to base, there is no better solution
currently.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
0c936d9089 Simplify and inline functionWrapperAddCPPResult()
This function seemed to be doing a few unnecessary things, e.g. it resolved
the typedefs which doesn't seem to be necessary and the test for member
pointer seems to be useless too.

Just add a local "cppresult" directly in the caller instead of using a
separate function to do all this.
2016-09-15 01:27:41 +02:00
Vadim Zeitlin
bca00c65dd Implement cdata typemaps for C
Just use the struct directly in the C wrappers.
2016-09-15 01:27:40 +02:00