summarylogtreecommitdiffstats
path: root/octave-4.3-compat.diff
diff options
context:
space:
mode:
Diffstat (limited to 'octave-4.3-compat.diff')
-rw-r--r--octave-4.3-compat.diff53
1 files changed, 53 insertions, 0 deletions
diff --git a/octave-4.3-compat.diff b/octave-4.3-compat.diff
new file mode 100644
index 000000000000..3db5404425b0
--- /dev/null
+++ b/octave-4.3-compat.diff
@@ -0,0 +1,53 @@
+diff --git a/pure-octave/embed.cc b/pure-octave/embed.cc
+index 94bb666b..bae774f6 100644
+--- a/pure-octave/embed.cc
++++ b/pure-octave/embed.cc
+@@ -98,6 +98,35 @@ static void my_clean_up_and_exit(int exit_status, bool safe_to_return)
+ embedded_interpreter = 0;
+ }
+ }
++
++// other recent breakage in the 4.3 API:
++#define is_bool_type islogical
++#define is_integer_type isinteger
++#define is_complex_type iscomplex
++
++#define get_global_value myget_global_value
++#define set_global_value myset_global_value
++
++octave_value
++get_global_value (const std::string& nm, bool silent)
++{
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++
++ octave_value val = symtab.global_varval (nm);
++
++ if (val.is_undefined () && ! silent)
++ error ("get_global_value: undefined symbol '%s'", nm.c_str ());
++
++ return val;
++}
++
++void
++set_global_value (const std::string& nm, const octave_value& val)
++{
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++
++ symtab.global_assign (nm, val);
++}
+ #endif
+
+ static void install_builtins();
+@@ -843,7 +872,12 @@ pure_expr *octave_func(pure_expr *fun)
+ // First try to find an ordinary function handle.
+ char *s;
+ if (pure_is_cstring_dup(fun, &s)) {
++#if OCTAVE_MAJOR>4 || OCTAVE_MAJOR>=4 && OCTAVE_MINOR>=3
++ octave::symbol_table& symtab = embedded_interpreter->get_symbol_table();
++ octave_value f = symtab.find_function(s);
++#else
+ octave_value f = symbol_table::find_function(s);
++#endif
+ free(s);
+ if (f.is_defined()) {
+ pure_expr *f = pure_string_dup("str2func"),