Mercurial > octave
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 } |