Commit graph

165 commits

Author SHA1 Message Date
William S Fulton
0e60d6b7a4 Correct new Raise functions to be static 2022-10-14 22:51:26 +01:00
William S Fulton
e407ccd4fe Move SWIG_Octave_Raise into a function
For efficiency and to fix some warnings
2022-09-19 14:48:33 +01:00
William S Fulton
00190c484f Javascript, Octave, R - Improve exceptions for %catches
and exception specifications for native types.

Now the raised exception contains the string value as the exception
message instead of just the C/C++ type of the exception.

R exceptions were completely swallowed beforehand
2022-09-19 09:09:29 +01:00
William S Fulton
e97181ebc0 Add missing typecheck typemaps for std::auto_ptr and std::unique_ptr
To fix overloading when using these types.
2022-09-17 10:23:51 +01:00
William S Fulton
dad7c93ca0 Provide SWIGTYPE MOVE typemaps in swigmove.i
For implementing full move semantics when passing parameters by value.
Based on SWIGTYPE && and std::unique_ptr typemaps which implement move
semantics.

Added for all languages, but untested for: Go, Ocaml, R, Scilab (and
unlikely to be fully functional for same reasons as for std::unique_ptr
support).

Issue #999
2022-09-16 08:36:25 +01:00
William S Fulton
ca9eebcb8d Octave - SWIG now marshalls a C/C++ NULL pointer into the null matrix, []
SWIG has always marshalled the null matrix into a NULL pointer; this remains
and now we have consistency in representing a NULL pointer.

This is a pre-requisite for a pending commit to fully support std::unique_ptr.
2022-08-31 19:40:13 +01:00
William S Fulton
2ccc9bd060 Add Octave support for std::unique_ptr and std::auto_ptr
Equivalent to Ruby/Python implementations.
2022-08-02 00:00:54 +01:00
Olly Betts
892557e799 Improve #include guard macros
Avoid using reserved identifiers such as `_DOHINT_H` (fixes #1989),
fix cases where the name doesn't match the filename, and make the naming
more consistent and less likely to collide with include guards in other
headers.
2022-07-19 09:35:46 +12:00
William S Fulton
319442a8c4 More move semantics improvements
More removal of casts in the out typemaps when copying objects to enable
C++ compilers to possibly make use of move semantics.
2022-07-04 11:19:50 +01:00
William S Fulton
71cd6a38fe Performance optimisation for directors for classes passed by value
The directorin typemaps in the director methods now use std::move on the
input parameter when copying the object from the stack to the heap prior
to the callback into the target language, thereby taking advantage of
move semantics if available.
2022-07-04 11:19:29 +01:00
William S Fulton
c359f57442 Better Octave typecheck for argc argv typemaps 2022-05-23 08:51:06 +01:00
Erez Geva
34221f223a Add Octave argcargv.i
Signed-off-by: Erez Geva <ErezGeva2@gmail.com>
2022-05-21 23:07:58 +02:00
Markus Friedrich
a5774a9d0f Fixed octave version check and enabled VPATH build for check-octave-operator example 2022-01-16 09:58:25 +01:00
Markus Friedrich
be0b975e6b Merge remote-tracking branch 'origin/master' into HEAD 2022-01-16 09:57:22 +01:00
Robert Fries
983b91694f Additional changes due to name changes in octave-6 * is_map to isstruct, is_object to isobject 2021-12-05 22:19:46 +00:00
Robert Fries
81f9e6600f Octave module lets examples and tests work with Octave-6 * Try-catch replacement for check of error_state * Add execute method in addition to call * Replace oct_mach_info with octave::mach_info * Call from interpreter: global_varval global_assign * Assign a global name requires locating the stack which requires interpreter to tree evaluator to callStack * Do not use discard_error_messages or discard_warning_messages 2021-12-05 22:19:46 +00:00
Robert Fries
852eab7db3 Allow swig wrapped modules to compile with -Bsymbolic 2021-12-05 22:19:40 +00:00
Dimitris Apostolou
f586d920f7
Fix typos 2021-11-17 07:07:02 +02:00
William S Fulton
4b5baf0a60 0.0 float warning fix 2020-10-10 15:02:26 +01:00
Karl Wette
d73ef20475 octrun.swg: ensure type_id() is set correctly 2020-05-31 22:11:51 +10:00
Karl Wette
d11e29615d Octave: use pre-compiled headers to speed up test suite, if supported 2020-05-31 22:11:51 +10:00
Karl Wette
26423d06b3 octruntime.swg: do not use atexit() to quit Octave
- This reverts commit 931656bcbe
- Since atexit() does not pass along the desired exit status,
  __swig_atexit__() always exits with status zero, regardless
  of whether Octave completed successfully or raised an error.
- This means the success/failure of Octave scripts which load
  SWIG modules cannot be determined by other programs, which
  makes them unusable.
- Instead, provide a Octave function swig_exit() which calls
  ::_Exit() with a given exit status. This way at least a
  clean exit from Octave can be guaranteed for future versions
  if the seg-fault problem is not fixed.
2020-05-31 06:43:15 +10:00
Karl Wette
30132bf777 octrun.swg: remove octave_value type-id from octave_swig_bound_func
- The {DECLARE|DEFINE}_OV_TYPEID_FUNCTIONS_AND_DATA declarations
  attached to this class cause a seg-fault in the module_load
  Octave example. Removing these declarations fixes the seg-fault.
- While cause of seg-fault is unknown, note that (in Octave 5.1.0)
  the declaration of octave_function, which is the base class for
  octave_swig_bound_func, does not use these declarations. So it's
  possible they simply are not required for this type of subclass.
2020-05-31 06:43:15 +10:00
Markus Friedrich
a2d9a24f4d Changed return type of swig_this() to size_t.
The type long may be 4 bytes but swig_this() must return the address of
the object as an integer. Using size_t ensures that the return type can
store a pointer.
2019-12-24 14:06:25 +01:00
Markus Friedrich
f0bb77221a Bugfix for octave 4.4
With octave 4.4 the function
virtual bool octave_base_value::is_object() const
was renamed to
virtual bool octave_base_value::isobject() const

As noted in CHANGES "2012-03-26: xavier98", is_object() must return true
for swig types whereas octave_base_value::is_object returns false per
default.
2019-11-24 14:55:36 +01:00
William S Fulton
86cb3a9532 Python STL container method overloading fix
Fix method overloading of methods that take STL containers of different types.
Due to some error handling that was not cleared during typehecking.
2019-08-06 19:36:14 +01:00
Orion Poplawski
c38b7de6a1 Fix format-security error with octave 5.1 2019-03-10 11:47:27 -06:00
William S Fulton
6d0c495fd0 Add missing parameter names in STL container wrappers
Mostly in STL copy constructors.

Best to have parameter names as they make their way into the wrappers in
some target languages.
2019-02-13 22:45:47 +00:00
William S Fulton
68e86614ff Create a consistent stl.i library file
Same file now for all languages except R which is still missing std_map.i.
Recent Java changes adding in std_set.i removed.
2019-02-12 18:46:05 +00:00
William S Fulton
e354ba8cdc Fix overloading for non-pointers and NULL - Octave 2018-12-30 11:25:41 +00:00
luz.paz
60dfa31a67 Misc. typos
found via `codespell` and `grep`
2018-05-17 10:04:23 -04:00
Karl Wette
6586616e23 Lib/octave: fix getting/setting global variables for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
d0b1105f30 Lib/octave: use new class for function member dereference with Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
94e8853e61 Lib/octave: fix operator installation for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
84aab22f66 Lib/Octave: in Octave >= 4.4, assign reference to base class in subclass
- See Examples/octave/callback/runme.m: a.run() calls Octave callback,
  but due to changes in behaviour to subsref() a.Callback.run() can no
  longer be used to call C callback unless a.Callback actually exists;
  subsrefs() just gets the "Callback" call whereas prior to Octave 4.4
  it would get both the "Callback" and "run" calls. So now a.Callback is
  set to the original base class (with own=0) so that it can be accessed
2018-05-12 22:25:07 +10:00
Karl Wette
ce67bce72e Lib/octave: fix call to mlock() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
df92ad6ebc Lib/octave: fix call to octave::call_stack::current() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
931656bcbe Lib/octave: 'octave_exit' not longer exists in Octave >= 4.4
- Instead must register atexit() function, since Octave still
  cannot clean up its memory usage on exit with SWIG modules
2018-05-12 22:25:07 +10:00
Karl Wette
04357dca21 Lib/octave: replace is_bool_type() with islogical() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
6f0561eb57 Lib/octave: replace is_numeric_type() with isnumeric() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
358345db9e Lib/octave: replace is_cell() with iscell() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
a46909a414 Lib/octave: call octave::feval() instead of feval() for Octave >= 4.4 2018-05-12 22:25:07 +10:00
Karl Wette
e8e507bf0b Lib/octave: fix function name passed to unwind_protect::begin_frame() 2018-05-12 22:25:07 +10:00
William S Fulton
4e0b2f1402 Cosmetic syntax tweak using throw in Octave directors 2018-05-04 20:02:13 +01:00
William S Fulton
cd9b7c3c34 std_basic_string.i fixes
- Remove python code from octave's std_basic_string.i
- Correctly return an error to fix error handling when using std::basic_string in
  overloaded methods - issue #1171.
2018-01-04 07:00:26 +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
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
6470fe8c36 Director shared_ptr typemaps for scripting languages
Modify the Python and Ruby director shared_ptr typemaps to be language neutral.
Port the director modifications to other scripting languages that
have shared_ptr support - Octave, R and Scilab. Scilab shared_ptr
support is not fully working and needs work though.
2017-10-13 07:34:38 +01:00
William S Fulton
114fab31a1 Scilab, R and Octave shared_ptr typemaps null fix
Merge changes from Python/Ruby equivalent files to obtain a fix
for NULL handling of T*const& typemaps.
2017-10-11 18:08:32 +01:00
William S Fulton
a674edebf5 Octave and R shared_ptr typemaps update
Synchronize typemaps with other identical typemaps in Scilab/Ruby.
Adds some missing $disown support.
2017-10-11 08:33:02 +01:00