Commit graph

4,386 commits

Author SHA1 Message Date
William S Fulton
ee17f8d04f C#, D, Java methodmodifiers on destructors
Add support so that the %csmethodmodifiers, %dmethodmodifiers,
%javamethodmodifiers can modify the method modifiers for the destructor wrappers
in the proxy class: dispose, Dispose, delete. With this feature, it is now possible
to make a C# proxy class sealed, eg when wrapping a class X, the virtual method modifiers
can be removed using:

  %typemap(csclassmodifiers) X "public sealed class"
  %csmethodmodifiers X::~X "public /*virtual*/";
2018-05-11 18:09:51 +01:00
William S Fulton
9fb996b83f Consistent spacing in generated exception specifications 2018-05-06 09:46:37 +01:00
William S Fulton
e7d626d1b4 Remove use of 'register' in C source
No noticable performance change using gcc x86-64 in Java and Python
test-suites.
2018-05-04 20:02:13 +01:00
Ben Elliston
6fb6636ce2 Remove superfluous parens in generated Python scripts. 2018-04-28 12:28:11 +10:00
William S Fulton
5ccae6eac6 Merge branch 'goatshriek-ruby-alias'
* goatshriek-ruby-alias:
  Fix ruby %alias directive for native c functions
2018-04-07 12:34:08 +01:00
Olly Betts
3bea8f6b7e [Ruby] Pass Qnil instead of NULL to rb_funcall()
This silences GCC -Wconversion-null warning (on by default with recent
GCC).
2018-04-03 18:01:58 +12:00
Joel Anderson
a1cea4f483 Fix ruby %alias directive for native c functions
Using the %alias directive on native C functions causes swig to segfault due to
a dereference of klass (which is NULL for native C functions) in the
defineAliases function of the Ruby module. This commit adds support for an alias
of native C functions for both separate module as well as global functions, as
well as three test cases for the %alias directive of the Ruby module.

Fixes:
mod.i
%module ruby_alias
%alias get_my_name "nickname,fullname";
%inline %{
const char *get_my_name(){
  return "Chester Tester";
}
%}
$ swig -ruby mod.i
Segmentation fault

Signed-off-by: Joel Anderson <joelanderson333@gmail.com>
2018-03-22 08:05:01 -04:00
William S Fulton
b4f4ce4fd5 Fix Java swigReleaseOwnership() and swigTakeOwnership() regression
Fixes segfault when using non-director classes.
Restores a dynamic_cast which was previously removed.
The dynamic_cast is not needed for the swig_connect_director call ...
we'll have to find another solution for #449 for Java.

Closes #1184
2018-03-09 08:13:41 +00:00
William S Fulton
60ee821bca Correct C# warning for missing cstype typemap 2018-03-09 06:58:08 +00:00
Luca Longinotti
30719feaf9 Fix handling of // comments inside macro arguments
/* */ are already handled correctly.

This completes the fix from commit
624ec3e1b7 related to swig/swig#974.
2018-03-07 14:49:08 +13:00
William S Fulton
e9ee1014e7 Merge branch 'JPEWdev-via-file'
* JPEWdev-via-file:
  Add documentation for option files
  Add option file support
  Terminate options when passed via env var
2018-02-18 20:58:20 +00:00
William S Fulton
72964a1faf Don't accept some invalid preprocessor code
Whitespace or non-numeric characters are required after a preprocessor
directive that requires an expression.
2018-01-16 08:07:37 +00:00
William S Fulton
532999f4f2 Improve error message when preprocessor expressions result in a floating point constant
Instead of a syntax error, the error is now:
  Warning 202: Error: 'Floating point constant in preprocessor expression'
2018-01-15 08:09:14 +00:00
William S Fulton
ea5b55ecf4 Fix floating point division by zero in preprocessor expressions.
Closes #1183
2018-01-15 07:51:18 +00:00
William S Fulton
07a30249f4 Fix seg fault parsing invalid exponents
Add error message when exponents are incomplete,
for example 5e and 5.e
2018-01-14 19:36:09 +00:00
William S Fulton
9b0e06a8e8 Seg fault fix running uffi tests 2018-01-14 13:27:01 +00:00
William S Fulton
ab5559f51c Fix out of bounds memory problems in handling simple macro arguments
Fixes handling macro in swigmacros.swg:
  #define %arg(Arg...)        Arg

AddressSanitizer error running Python test-suite.
2018-01-14 13:25:57 +00:00
Joshua Watt
e9b4d3378b Add option file support
Arguments may be passed using an option file prefixed with the '@'
character. Processing of option files is the same as for the same
feature in gcc.
2018-01-12 15:01:45 -06:00
William S Fulton
49af1907b8 Add missing Java throws clause for interfaces when using the %interface family of macros.
Fixes #1156.
2018-01-12 07:34:32 +00:00
William S Fulton
6607acdf3a Merge branch 'davedissian-redundant-typedef-fix'
* davedissian-redundant-typedef-fix:
  Add more runtime typedef_classforward_same_name runtime testing
  Fixed 'typedef class Foo Foo;' edge case by iterating through linked list.
  Added test case for a forward declaration in a typedef with the same name
2018-01-06 15:27:52 +00:00
William S Fulton
ef378407d0 Fix parsing of default argument expressions containing ->. 2018-01-05 07:58:25 +00:00
David Avedissian
3617e22fda Fixed 'typedef class Foo Foo;' edge case by iterating through linked
list.

Suggested fix by wsfulton
2017-12-31 00:37:43 +00:00
William S Fulton
589b7237e9 Tweak Perl's director method's $result variable generation.
Use same code as other languages - no real change in output.
2017-12-19 07:49:16 +00:00
William S Fulton
717b7866d4 Perl - Add support for missing directorfree typemaps
Related to issue #1167, to free up memory when returning reference types.
SWIG_Perl_AcquirePtr still needs implementing.
2017-12-14 07:51:45 +00:00
Olly Betts
224bb9e023 [PHP] Use ZEND_MODULE_GLOBALS_ACCESSOR to access globals
This should make the generated code work with PHP 7.2.0.
2017-12-08 15:50:14 +13:00
Joshua Watt
7eff4e7c1d Terminate options when passed via env var
The C standard requires that argv be terminated with a NULL pointer
(that is, argv[argc] == NULL). There are several places in the swig
codebase that require this to check for missing arguments. However,
SWIG_merge_envopt() was not keeping the NULL terminator, resulting in
argument parsing failures (typically program aborts) when arguments were
passed via the SWIG_FEATURES environment variable.
2017-12-04 09:28:17 -06:00
William S Fulton
eef3e7aa8f Cosmetic whitespace improvement in generated code from throws typemaps. 2017-11-29 20:32:15 +00:00
William S Fulton
923091da13 Changes to use common DirectorException class
Add director.swg for Go as was completely absent.
This is just the start of a common exception handling approach to directors.
An exception thrown in a Java director method will be propogated back to
Java via a C++ DirectorException.
DirectorException throws typemap for Java is fully working, all other languages need work.
DirectorException throws typemap for Perl added just to fix compilation errors.
Add director_exception_catches test.
2017-11-29 20:31:55 +00:00
William S Fulton
7aa28e37ec Java director exception handling improvements
When a director method throws an exception and it is caught by DirectorException
and passed back to Java using DirectorException::raiseJavaException, the Java
stack trace now contains the original source line that threw the exception.

Director exception handling code improved slightly to add some missing
ExceptionClear calls before calling JNI code.
2017-11-10 19:50:22 +00:00
William S Fulton
7d6808daab Small code simplification using SwigValueWrapper
Closes #1139
2017-11-03 07:11:12 +00:00
William S Fulton
2d095b2fe3 Merge branch 'shared_ptr_directors'
* shared_ptr_directors:
  Add director typemaps for pointer const ref types
  Generation of director method declarations fixes
  Add director shared_ptr typemaps for D
  Add director shared_ptr typemaps for C#
  Typo correction in changes file
  Enhancements for directorin typemaps
  Add director shared_ptr typemaps for Java
  Director shared_ptr typemaps for scripting languages
  R memory handling standardisation
  Scilab, R and Octave shared_ptr typemaps null fix
  Octave and R shared_ptr typemaps update
  Remove duplicate director shared_ptr pointer reference typemaps
  For shared_ptr directorin, make copy of shared_ptr in all cases.
  Add directorin typemap for Python and Ruby shared_ptr.
2017-10-26 07:00:32 +01:00
William S Fulton
dafe2d6949 Add director typemaps for pointer const ref types 2017-10-24 23:47:40 +01:00
William S Fulton
ae044c1c2f Generation of director method declarations fixes
- Fixes generation of director method declarations containing C++11 ref-qualifiers.
- Fixes generation of director method declarations returning more complex types such
  as const ref pointers.
- Rewrite Swig_method_call to use more up to date code in the core.
2017-10-23 18:55:14 +01:00
William S Fulton
3f8b8fe734 Enhancements for directorin typemaps
The directorin typemaps will now generate a temporary variable
(specified after the type), such as:
%typemap(directorin) MyType (MyType *temp) { ... use temp ... }

The shared_ptr director typemaps have been fixed for use in functions
that take more than one parameter.
2017-10-16 19:28:27 +01:00
William S Fulton
fcd7ecd9e2 R memory handling standardisation
Replace R_SWIG_EXTERNAL and R_SWIG_OWNER with the standard equivalent
macros. I can't see where these were actually used, but in case they are,
equivalent backwards compatibility can be obtained using:

  #define R_SWIG_EXTERNAL 0
  #define R_SWIG_OWNER SWIG_POINTER_OWN

SWIG_MakePtr does not seem to be used within the R SWIG code base so I
havn't added the above as backwards compatibility macros.
There seems to be no memory management in R. I've made this change
to fit in with the rest of SWIG though in preparation for an upcoming
commit to use the same shared_ptr macros as is used elsewhere.
2017-10-13 07:34:38 +01:00
Olly Betts
91f9eab2d8 Fix comment typo 2017-10-13 18:35:51 +13:00
Joseph C Wang
be05daa39a change r to allow logical enums. add change to CHANGES.current 2017-10-10 17:50:58 +08:00
Joseph Wang
8c9b06c9c0 Merge pull request #1118 from ojwb/r-enum-improvements
[R] Improve handling of enums
2017-10-10 04:45:34 +08:00
Olly Betts
0c56d0cb72 [PHP] Fix incorrect wrapper code generation
Fix code generated when there's a combination of overloading, parameters
with a default value and %newobject.  Fixes
https://sourceforge.net/p/swig/bugs/1350/
2017-10-09 10:40:27 +13:00
Olly Betts
59ebe27a95 Merge pull request #1111 from ojwb/empty-arglist-macros
Fix handling of macro with empty argument list
2017-10-08 15:34:37 +13:00
Olly Betts
0863eca5e7 Fix constants involved parenthesised char literals
Fixes https://sourceforge.net/p/swig/bugs/1168/
2017-10-08 13:43:02 +13:00
Olly Betts
f85d87a64c Fix bug with macro invocation with empty first arg
The first argument was being dropped in this case.
2017-10-08 09:02:28 +13:00
Olly Betts
866840f791 Fix handling of macro with empty argument list 2017-10-08 09:02:28 +13:00
Olly Betts
4236b1ec9e [R] Improve handling of enums
Partial fix for https://github.com/swig/swig/issues/1116 but this needs
more work.
2017-10-07 10:36:07 +13:00
William S Fulton
4a7976a5d8 Fix platorm inconsistency in Python default argument handling.
32 bit and 64 bit compiled versions of SWIG generated different Python files
when default arguments were outside the range of 32 bit signed integers.
The default arguments specified in Python are now only those that are in the
range of a 32 bit signed integer, otherwise the default is obtained from C/C++ code.

Closes #1108
2017-10-06 21:57:04 +01:00
William S Fulton
afd986c577 Python - set errno for default args handling
errno needs setting otherwise a failed strol may result in subsequent
unnecessary code generation to use *args instead of actual default
argument values. Related to issue #1108.
2017-10-04 06:50:47 +01:00
William S Fulton
8834047dcd Enhance -debug-csymbols and -debug-symbols to show siblings 2017-10-02 19:07:24 +01:00
Joseph C Wang
f0acfcfb4b Merge branch 'r_fixes_2' of https://github.com/fschlimb/swig 2017-10-01 09:48:37 +08:00
William S Fulton
e27a606335 Allow an instantiated template to have the same name as the C++ template name
For example, this is now possible:
  template<typename T> struct X { ... };
  %template(X) X<int>;
Closes #1100.
2017-09-29 23:28:04 +01:00
William S Fulton
d37e41fed8 Cosmetic variable name change in parser 2017-09-29 21:16:19 +01:00