comparison libinterp/octave-value/ov-java.cc @ 31730:610a85b0ff62

use interpreter::feval instead of global feval function * __eigs__.cc, bsxfun.cc, call-stack.cc, cellfun.cc, daspk.cc, dasrt.cc, dassl.cc, data.cc, defun.cc, gh-manager.cc, graphics.cc, gtk-manager.cc, gtk-manager.h, hook-fcn.cc, input.cc, interpreter.cc, ls-mat5.cc, lsode.cc, mex.cc, pr-output.cc, quad.cc, quadcc.cc, variables.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc, audiodevinfo.cc, cdef-method.cc, cdef-package.cc, cdef-property.cc, ov-class.cc, ov-java.cc, ov-oncleanup.cc, op-class.cc, pt-assign.cc, pt-eval.cc, pt-id.cc: Change all uses of global feval function to use interpreter::feval instead. If necessary, use __get_interpreter__ to access global interpreter object.
author John W. Eaton <jwe@octave.org>
date Thu, 12 Jan 2023 10:22:04 -0500
parents 597f3ee61a48
children 21f9b34eb893
comparison
equal deleted inserted replaced
31729:c581f5ce5656 31730:610a85b0ff62
61 #include "lo-sysdep.h" 61 #include "lo-sysdep.h"
62 #include "oct-env.h" 62 #include "oct-env.h"
63 #include "oct-process.h" 63 #include "oct-process.h"
64 #include "oct-shlib.h" 64 #include "oct-shlib.h"
65 #include "ov-java.h" 65 #include "ov-java.h"
66 #include "parse.h"
67 #include "variables.h" 66 #include "variables.h"
68 67
69 #if defined (HAVE_JAVA) 68 #if defined (HAVE_JAVA)
70 #include <jni.h> 69 #include <jni.h>
71 #endif 70 #endif
2036 std::string fname = jstring_to_string (env, fcnName); 2035 std::string fname = jstring_to_string (env, fcnName);
2037 2036
2038 int nargout = env->GetArrayLength (argout); 2037 int nargout = env->GetArrayLength (argout);
2039 int nargin = env->GetArrayLength (argin); 2038 int nargin = env->GetArrayLength (argin);
2040 2039
2041 octave_value_list varargin, varargout; 2040 octave_value_list varargin;
2042 2041
2043 for (int i = 0; i < nargin; i++) 2042 for (int i = 0; i < nargin; i++)
2044 varargin(i) = box (env, env->GetObjectArrayElement (argin, i), nullptr); 2043 varargin(i) = box (env, env->GetObjectArrayElement (argin, i), nullptr);
2045 2044
2046 varargout = octave::feval (fname, varargin, nargout); 2045 octave::interpreter& interp = octave::__get_interpreter__ ();
2046
2047 octave_value_list varargout = interp.feval (fname, varargin, nargout);
2047 2048
2048 jobjectArray_ref out_objs (env, argout), out_clss (env); 2049 jobjectArray_ref out_objs (env, argout), out_clss (env);
2049 out_objs.detach (); 2050 out_objs.detach ();
2050 return unbox (env, varargout, out_objs, out_clss); 2051 return unbox (env, varargout, out_objs, out_clss);
2051 } 2052 }
2072 { 2073 {
2073 jobject_ref jobj (env, env->GetObjectArrayElement (args, i)); 2074 jobject_ref jobj (env, env->GetObjectArrayElement (args, i));
2074 oct_args(i) = box (env, jobj, nullptr); 2075 oct_args(i) = box (env, jobj, nullptr);
2075 } 2076 }
2076 2077
2078 octave::interpreter& interp = octave::__get_interpreter__ ();
2079
2077 if (val.is_function_handle ()) 2080 if (val.is_function_handle ())
2078 { 2081 {
2079 octave_function *fcn = val.function_value (); 2082 octave_function *fcn = val.function_value ();
2080 octave::feval (fcn, oct_args); 2083 interp.feval (fcn, oct_args);
2081 } 2084 }
2082 else if (val.iscell () && val.length () > 0 2085 else if (val.iscell () && val.length () > 0
2083 && (val.rows () == 1 || val.columns () == 1) 2086 && (val.rows () == 1 || val.columns () == 1)
2084 && val.cell_value()(0).is_function_handle ()) 2087 && val.cell_value()(0).is_function_handle ())
2085 { 2088 {
2087 octave_function *fcn = c(0).function_value (); 2090 octave_function *fcn = c(0).function_value ();
2088 2091
2089 for (int i=1; i<c.numel (); i++) 2092 for (int i=1; i<c.numel (); i++)
2090 oct_args(len+i-1) = c(i); 2093 oct_args(len+i-1) = c(i);
2091 2094
2092 octave::feval (fcn, oct_args); 2095 interp.feval (fcn, oct_args);
2093 } 2096 }
2094 else 2097 else
2095 error ("trying to invoke non-invocable object"); 2098 error ("trying to invoke non-invocable object");
2096 } 2099 }
2097 } 2100 }