Commit graph

70 commits

Author SHA1 Message Date
Karl Wette
e60ae2d81d octave: Simplified module loading.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13941 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-28 20:22:56 +00:00
Karl Wette
ae0c4d37b9 octave: improved segfault-on-exit prevention hack
- Now simply set exit function pointer "octave_exit" to _Exit.
  This correctly preserves exit status when error() is called.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13336 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-07-20 07:31:32 +00:00
Karl Wette
d1ae77bdc2 octave: use _Exit instead of _exit
- _exit is a POSIX function (unistd.h), whereas _Exit is in C99 (stdlib.h)
  and is therefore more likely to be supported by C++ compilers (cstdlib)

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13318 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-07-12 17:53:02 +00:00
Karl Wette
f76d63419f [octave] Declare these functions only if directors are used
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13108 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-23 09:32:51 +00:00
Karl Wette
f8135379a1 [octave] Make sure SWIG_global_name is a std::string for comparison
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13107 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-23 09:32:38 +00:00
Karl Wette
bc2a78fbab New Octave module loading behaviour
- Use call syntax instead of cmdline to choose global/noglobal load:
  global: 'example;', noglobal: 'example = example;'
- All functions loaded with Octave 'autoload' command; correctly
  loads .oct module and prevents segfault in Octave 3.0.5
- Functions no longer installed as global variables as well,
  so global operator dispatch now only looks for functions
- Octave at-exit function created from string, not function,
  so no dependence on loaded .oct files at cleanup time
- C at-exit function now immediately exits Octave (with correct
  status) to prevent seg-fault due to dodgy memory cleanup
  in some Octave versions
- Documentation string for module loading function

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13088 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-14 09:24:15 +00:00
Karl Wette
4f11aaa849 Declare Octave public wrapping functions with DEFUNX_DLD
- New helper function Octave_begin_function writes function declaration
  and installer function definition using SWIG_DEFUN macro, which in
  turn uses Octave DEFUNX_DLD macro
- Can now use Octave's dynamic module loader to load functions safely
- Link documentation of public wrapping functions through DEFUNX_DLD

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13087 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-14 09:24:00 +00:00
Karl Wette
bf0fe83462 New functions for handling Octave global variables
- Creates a copy of the variable to be assigned to the
  symbol table, so it can be safely deallocated on exit

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13086 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-14 09:23:45 +00:00
Karl Wette
a0dbe43c73 Move Octave SWIG runtime functions to Lib/octave/octruntime.swg
- Add documentation strings for runtime functions

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13085 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-14 09:23:33 +00:00
Karl Wette
de49578c31 Move Octave director-related code into Lib/octave/director.swg
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13084 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-05-14 09:23:20 +00:00
Karl Wette
35b2270f84 Make octave_dim tests pass for octave version != 3.2.4
- see SourceForge #3516652

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12995 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-04-15 22:47:38 +00:00
Karl Wette
70e0cf60f7 Fixed segfault-on-exit in octave 3.2.4
- see SourceForge #3516652

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12994 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-04-15 22:47:19 +00:00
Xavier Delacour
b0ea5581c3 add extra logic to the octave_swig_type::dims(void) method: it checks if the user has defined a __dims__ method and uses this in stead of returning (1,1) (patch from jgillis, sf 3425993)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12955 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-03-26 15:45:02 +00:00
Xavier Delacour
d29e751cce make is_object return true for swig types (patch from jgillis, sf 3424833)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12954 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-03-26 15:38:10 +00:00
William S Fulton
347f2782d2 Fix missing stddef.h when %import of STL containers. Was causing compile failures witht g++-4.6.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12939 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-03-20 20:07:56 +00:00
William S Fulton
50693941c6 Fix #3475492 - iterating through std::vector wrappers of enumerations.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12916 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-03-13 07:10:24 +00:00
Xavier Delacour
65942bd224 add missing file Lib/octave/std_list.i
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12914 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-02-27 18:29:50 +00:00
Xavier Delacour
95a084affb Fix imports test (from Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12912 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-02-27 17:09:44 +00:00
Xavier Delacour
1878eb4890 Comment declaration of unimplemented function swig_register_director (from Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12909 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-02-27 17:07:44 +00:00
Xavier Delacour
6cd79f4320 Use -globals . to load global variables in module namespace (from Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12908 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-02-27 17:07:16 +00:00
Xavier Delacour
f8774be92d Allow Octave modules to be re-loaded after a "clear all" (thanks to Karl Wette; SF 3418908)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12824 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-10-13 23:48:28 +00:00
Xavier Delacour
2f68aa0a34 Added example of friend operator use to Examples/octave/operator, fixed minor bug that causes a panic in octave 3.0.5. Tested examples work for octave 3.0.5, 3.2.4, and 3.4.0. (thanks to Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12794 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-08-31 20:54:11 +00:00
Xavier Delacour
3372c2ba62 Changes Octave module loading behavior, so that modules can be safely loaded inside functions without first being loaded at the base level. (Basically the module is now always loaded in the base context, and then a local link to the module is created in the current context.) Added an example, module_load, to Examples/octave to test this behaviour in different ways. Tested examples work for octave 3.0.5, 3.2.4, and 3.4.0. (thanks to Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12793 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-08-31 20:50:59 +00:00
Xavier Delacour
dae9457962 Octave patches for 3.4.0 compatibility, etc. (sf 3387394, thanks for Karl Wette)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12774 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-08-08 21:41:34 +00:00
Xavier Delacour
06221dacae Allow global operators to be SWIG-wrapped functions (by Karl Wette)
The Octave run-time allows global operators to be implemented,
e.g. op_scalar_add_X for adding a scalar and a wrapped struct X.
However it doesn't currently seem possible for these operators to
map to SWIG-wrapped functions. This is because dispatch_global_op()
looks for the operators to be installed as global variables, whereas
install_global() installs SWIG-wrapped functions as builtin functions;
the two appear to be separate symbol tables in Octave.

This patch modifies install_global() to install global operator functions
as both builtin functions and as global variables, where the value of the
global variable is a function handle to the operator function. It decides
if a function is a global operator if it begins with the prefix "op_"; this
prefix can be modified through a new command-line variable. It also always
installs the operators globally, regardless of whether the rest of the module
is being loaded globally. To accomplish this, install_global() is now always
called, but takes a bool argument specifying whether it should load symbols
globally. If a function is not a global operator, install_global() should
behave as before.

Tested that this compiles and works on Octave 3.2.4 and 3.4.0.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12675 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 02:02:15 +00:00
Xavier Delacour
2d5c4302b0 Adds support for Python __r*__ operators (by Karl Wette)
The Python operator model, when evaluating e.g. x + y, is to call
x.__add__(y), then y.__radd__(x) if the former does not exist, etc.
This patch adds similar functionality to the SWIG runtime code.
For the special case of the comparison operators __l*__ and __g*__,
the reverse operators are __g*__ and __l*__ respectively.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12674 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 02:00:25 +00:00
Xavier Delacour
360c1aaa1b Fix an incompatibility with never versions of Octave (by Karl Wette)
According to the Octave changelog (ChangeLog and src/ChangeLog
in the Octave 3.4.0 source), octave_base_value::map_value() now
returns an octave_map instead of an Octave_map; this change dates
from Octave API version 40 onward. This patch makes the necessary
changes to the SWIG runtime while remaining backward-compatible.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12673 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 01:59:53 +00:00
Xavier Delacour
e22eb83574 Minor improvement to the printing of Octave SWIG classes (by Karl Wette)
Uses Octave's indentation functions to make sure the classes are
printed at the correct indentation level, e.g. for a cell array
containing SWIG-wrapped classes.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12672 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 01:59:19 +00:00
Xavier Delacour
a3689a02fc Fixes to two bugs in Lib/octave/octcomplex.swg (by Karl Wette)
* replace PyObject with octave_value in the SWIG_AsVal(float) fragment

* modify %swig_fromcplx_conv to use the correct Octave constructor for
  double (Complex) and float (FloatComplex)

Also remove an unneeded %ifcplusplus (Octave wrapping code is always in C++).

Checked that %swig_cplxflt_convn now compiles correctly for single-precision
complex values, and that make check-octave-examples passes.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12671 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 01:57:46 +00:00
Xavier Delacour
8848b16e01 Octave changes by Karl Wette:
It's currently not possible to tell SWIG whether or not symbols should be
loaded into the global namespace by default. In fact, it's not even possible
to make the generated .oct module *not* load all symbols globally, due to a
bug in Lib/octave/octruntime.swg (line 37: "noglobal" should be "global").
It's also not possible to change the name of the symbol used to access
global variables/constants from the default "cvar".

This patch adds 3 Octave-specific command-line options:

* -global/-noglobal tell SWIG whether the generated .oct module should load
symbols into the global namespace by default. The default option is -global
to preserve existing behaviour.

* -globals <name> sets the name of the symbol used to access global
variables/constants. It is set to "cvar" by default.

These options are parsed in Source/Modules/octave.cxx, and written to the
wrapping code as the macros SWIG_global_load and SWIG_global_name.

In Lib/octave/octruntime.swg, the Octave entry point DEFUN_DLD function now
contains a expanded input argument parser, which uses the same command-line
arguments (-global/-noglobal, -globals) as can be passed to SWIG itself;
this allows the module user to change the default loading behaviour of the
module user at load time. The parser checks for non-string and unrecognised
arguments, and also checks that the argument to -globals is a valid Octave
identifier. A -help option prints a short usage message.




git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12670 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-17 01:56:43 +00:00
William S Fulton
1677881e01 Remove typemap for illegal type
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12477 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-02-19 01:23:07 +00:00
Olly Betts
28e277f8c5 Fix typo "the the" -> "the"
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12285 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-10-19 06:31:31 +00:00
William S Fulton
5bcfc81c12 Fix potential name clashes with symbols in the Director class
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12063 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-05-27 20:59:29 +00:00
William S Fulton
3dfac02269 shared_ptr improvements so the proxy class does not need to be specified - SWIG_SHARED_PTR macro deprecated and replaced by %shared_ptr
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12037 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-05-22 23:57:19 +00:00
William S Fulton
12cfc251e4 Fix #2408232. Improve shared_ptr and intrusive_ptr wrappers for classes in an inheritance hierarchy. No special treatment is needed for derived classes, the SWIG_SHARED_PTR_DERIVED macro is deprecated.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12036 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-05-22 22:49:47 +00:00
William S Fulton
64641c9750 Fix compile errors in Octave std::map wrappers. Remove li_std_map_runme.oct which looks like Python code
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12018 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-05-10 18:21:34 +00:00
William S Fulton
02b31416f6 Some octave SWIG test-suite warning fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12017 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-05-10 17:58:06 +00:00
William S Fulton
f9caea4b29 Add SWIG_DIRECTOR_CAST recently added to languages needing it
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11989 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-04-10 00:04:28 +00:00
William S Fulton
bdb136d611 Change typemap matching rules for the default type (SWIGTYPE) to follow template partial specialization type deduction. Fixes some containers of const pointers. SWIGTYPE*& typemps removed and replaced with SWIGTYPE *const&.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11958 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-04-01 18:26:37 +00:00
William S Fulton
4308dd03cf SWIG license change - The Examples and Lib move to a very permissive license in the LICENSE file, removing the BSD license restrictions as agreed by committers since it was inadvertently introduced. Remove some examples where the impact of the license change is not clear.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11874 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-02-27 23:26:02 +00:00
William S Fulton
1de9c8b27f Add a few comments about the smart pointer implementation
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11828 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-01-23 15:30:42 +00:00
William S Fulton
9354467b87 remove Octave -api option and use new OCTAVE_API_VERSION_NUMBER instead
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11780 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-12-12 21:11:45 +00:00
William S Fulton
fc68afcf73 Octave: Caught exceptions display the type of the C++ exception instead of the generic 'c++-side threw an exception' message
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11595 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-08-16 22:05:47 +00:00
Xavier Delacour
b81cb3bff9 try not to require -api option in octave
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11577 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-08-15 01:19:28 +00:00
Xavier Delacour
68d0177d6c more fixes for octave 3.2
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11389 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-07-12 21:09:50 +00:00
Xavier Delacour
cdc9de8210 small fixes to make octave module compatible with octave 3.2
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11388 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-07-12 20:23:19 +00:00
Xavier Delacour
0b837574b0 Octave: fix carrays regression caused by operator suffix change.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11050 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-01-10 02:17:58 +00:00
Xavier Delacour
b6e44f2427 Octave: add {save,load}_{ascii,binary,hdf} functions that silently do nothing;
give default operator mappings a more conventional suffix;
fix test li_std_string_extra.




git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11047 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-01-10 00:20:46 +00:00
Xavier Delacour
8b857aa9c1 Fix octave tests li_std_pair_extra, arrays_global, grouping, struct_value, unions.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11046 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2009-01-09 23:38:14 +00:00
Haoyu Bai
8f84447860 Commited SF#2158938: change all SWIG symbols start with Py to a new name.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10961 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-12-03 18:43:44 +00:00