Source/DoxygenTranslator/src directory is renamed Source/Doxygen
Renamed files in this directory to short names using lowercase as is the
convention for the rest of the SWIG source.
C++ extension is also .cxx like other SWIG source code.
I used doxy as the prefix for most file renames because without this
Doxygen/parser.* would be easily confused with CParse/parser.* so
Doxygen/doxyparser.* is renamed from DoxygenTranslator/src/DoxygenParser.*
* master:
Add Octave 4.4 to Travis allow_failures
Fixes for appveyor image changes
Javascript test-suite Makefile parallel jobs
Add changes entry for csconstruct, dconstruct and javaconstruct fix
Fix lookup of csconstruct, dconstructor and javaconstruct typemaps
Javascript %nspace fix in generated C++ code
Add C++17 documentation chapter
Add changes notes for C++17 nested namespaces support
Test for invalid C++17 nested namespace aliases
Test c++17 nested namespaces and %nspace
Add c++17 nested namespaces runtime test for C#
Add c++17 nested namespaces runtime test for Python
Add support for c++17 nested namespaces
Update CHANGES.current
.travis.yml: test against Octave 4.4
Examples/test-suite/register_par.i: rename 'tree' to 'swig_tree'
Examples/octave/module_load/runme.m: update 'exist()' statements for Octave >= 4.4
Examples/octave/module_load/runme.m: do not use duplicate function names
Examples/Makefile.in: unset OCTAVE_PATH when running Octave for tests
Lib/octave: fix getting/setting global variables for Octave >= 4.4
Lib/octave: use new class for function member dereference with Octave >= 4.4
Lib/octave: fix operator installation for Octave >= 4.4
Lib/Octave: in Octave >= 4.4, assign reference to base class in subclass
Lib/octave: fix call to mlock() for Octave >= 4.4
Lib/octave: fix call to octave::call_stack::current() for Octave >= 4.4
Lib/octave: 'octave_exit' not longer exists in Octave >= 4.4
Lib/octave: replace is_bool_type() with islogical() for Octave >= 4.4
Lib/octave: replace is_numeric_type() with isnumeric() for Octave >= 4.4
Lib/octave: replace is_cell() with iscell() for Octave >= 4.4
Lib/octave: call octave::feval() instead of feval() for Octave >= 4.4
Lib/octave: fix function name passed to unwind_protect::begin_frame()
C#, D, Java methodmodifiers on destructors
Javascript assert.h - move to header section
Appveyor cl compiler warning fixes during configure
Java vector wrappers cast correction
test-suite fixes (Java directors) for compilers that don't support varargs
Go - use director.swg like other languages
test-suite fixes (2) for compilers that don't support varargs
Consistent spacing in generated exception specifications
test-suite fixes for compilers that don't support vararg macros
Enhance Travis testing to use gcc 8 and test C++17 and C17
Enhance SWIG_isfinite for older standards: C++03/C++98/C89
test-suite support for gcc-8 targeting C++11 and C++14
Scilab portability fixes - remove use of strdup
Scilab array overbounds fix handling char type exceptions
test-suite fix for c++17 and throw macro
Remove use of 'register' in C source
test-suite support for C++17: switch testing of the deprecated C++17 'register' keyword from C++ to C
Examples update to support C++17: exception specification throw removal
Cosmetic syntax tweak using throw in Octave directors
test-suite support for C++17 (Java): exception specification throw removal
test-suite support for C++17: exception specification throw removal
__cplusplus macro usage tweak
Improve detection of Python's 2to3 tool
Correct C shared library creation when specifing CC to configure
Remove superfluous parens in generated Python scripts.
[ci] guile 2.2 build no longer expected to fail
guile - resstructure some configure tests
Disable guile configuration if guile-config and guile report a different version
Fix guile executable detection on early 2.0.x guile versions
guile - drop GDB_INTERFACE related stuff
guile - replace obsolete scm_listify with scm_list_n
guile - use more reliable method of finding guile executable based on guile-config
Fix go version matching in configure for go1.10
[Python] Suppress new pycodestyle warning
Add if-no-present action for jsv8inc arg
Fix typo in help --with-jscoreinc and --with-jscorelib
Fix off-by-one error
* Makefile.in (configfiles): Update URLs for latest configfiles.
Add changes entry for Ruby %alias fix for global functions
[Ruby] Pass Qnil instead of NULL to rb_funcall()
Fix typo
Fix ruby %alias directive for native c functions
Stop testing Python on Appveyor msys/mingw
Fix -Wimplicit-fallthrough gcc-7.3 warning
* 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.
- 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.
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.
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
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.
Choose compile time failures over runtime errors.
This change highlighted a problem in the constructor wrappers for tp_init
where the kwargs parameter was missing in the generated wrapper function.
Leave casts in for 0 initialization.
1. Fix negative octals. Currently not handled correctly by `-py3`
(unusual case, but incorrect).
2. Fix arguments of type "octal + something" (e.g. `0640 | 04`).
Currently drops everything after the first octal. Nasty!
3. Fix bool arguments "0 + something" (e.g. `0 | 1`) are always
"False" (unusual case, but incorrect).
4. Remove special handling of "TRUE" and "FALSE" from
`convertValue` since there's no reason these have to match
"true" and "false".
5. Remove the Python 2 vs. Python 3 distinction based on the
`-py3` flag. Now the same python code is produced for default
arguments for Python 2 and Python 3. For this, octal default
arguments, e.g. 0644, are now wrapped as `int('644', 8)`. This
is required, as Python 2 and Python 3 have incompatible syntax
for octal literals.
Fixes#707
This ensures NotImplemented is returned on error so that the Python
interpreter will handle the operators correctly instead of throwing an
exception. NotImplemented was not being returned for non-builtin wrappers
when the operator overload did not have a function overload.
See PEP 207 and https://docs.python.org/3/library/constants.html#NotImplemented
Mentioned in SF patch #303 and SF bug #1208.
Fix Coverity issue reported for wrapper argument checking:
"Null-checking args suggests that it may be null, but it has already
been dereferenced on all paths leading to the check."
So 'args' is null checked, but after dereferencing it with
PyTuple_Check(args).
The way Python docstrings are indented has changed on master, so use the
standard inspect module in Python autodoc unit test to ignore the differences
in their indentation level between -builtin and non-builtin cases to make the
test still pass with the branch version, which avoids the use of different
(but almost identical) values in the test itself.
Add optional moduleimport attribute to %module so that the
default module import code can be overridden. See the
"Searching for the wrapper module" documentation in Python.html.
Example:
%module(moduleimport="import _foo") foo
$module also expands to the low-level C/C++ module name, so
the following is the same as above
%module(moduleimport="import $module") foo
Issue https://github.com/swig/swig/issues/769
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 */
Default hash is the underlying C/C++ pointer.
This matches up with testing for equivalence (Py_EQ in SwigPyObject_richcompare)
which compares the pointers.
The following slots can now be overidden by users if they know what they
are doing:
- tp_dictoffset
- tp_init
- tp_new
- tp_as_number
- tp_as_sequence
- tp_as_mapping
- tp_as_buffer