annotate libinterp/octave-value/ov-java.cc @ 31607:aac27ad79be6 stable

maint: Re-indent code after switch to using namespace macros. * build-env.h, build-env.in.cc, Cell.h, __betainc__.cc, __eigs__.cc, __ftp__.cc, __ichol__.cc, __ilu__.cc, __isprimelarge__.cc, __magick_read__.cc, __pchip_deriv__.cc, amd.cc, base-text-renderer.cc, base-text-renderer.h, besselj.cc, bitfcns.cc, bsxfun.cc, c-file-ptr-stream.h, call-stack.cc, call-stack.h, ccolamd.cc, cellfun.cc, chol.cc, colamd.cc, dasrt.cc, data.cc, debug.cc, defaults.cc, defaults.h, det.cc, display.cc, display.h, dlmread.cc, dynamic-ld.cc, dynamic-ld.h, ellipj.cc, environment.cc, environment.h, error.cc, error.h, errwarn.h, event-manager.cc, event-manager.h, event-queue.cc, event-queue.h, fcn-info.cc, fcn-info.h, fft.cc, fft2.cc, file-io.cc, filter.cc, find.cc, ft-text-renderer.cc, ft-text-renderer.h, gcd.cc, gl-render.cc, gl-render.h, gl2ps-print.cc, gl2ps-print.h, graphics-toolkit.cc, graphics-toolkit.h, graphics.cc, gsvd.cc, gtk-manager.cc, gtk-manager.h, help.cc, help.h, hook-fcn.cc, hook-fcn.h, input.cc, input.h, interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h, inv.cc, jsondecode.cc, jsonencode.cc, latex-text-renderer.cc, latex-text-renderer.h, load-path.cc, load-path.h, load-save.cc, load-save.h, lookup.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, lsode.cc, lu.cc, mappers.cc, matrix_type.cc, max.cc, mex.cc, mexproto.h, mxarray.h, mxtypes.in.h, oct-errno.in.cc, oct-hdf5-types.cc, oct-hist.cc, oct-hist.h, oct-map.cc, oct-map.h, oct-opengl.h, oct-prcstrm.h, oct-process.cc, oct-process.h, oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.h, octave-default-image.h, ordqz.cc, ordschur.cc, pager.cc, pager.h, pinv.cc, pow2.cc, pr-output.cc, psi.cc, qr.cc, quadcc.cc, rand.cc, regexp.cc, settings.cc, settings.h, sighandlers.cc, sighandlers.h, sparse-xpow.cc, sqrtm.cc, stack-frame.cc, stack-frame.h, stream-euler.cc, strfns.cc, svd.cc, syminfo.cc, syminfo.h, symrcm.cc, symrec.cc, symrec.h, symscope.cc, symscope.h, symtab.cc, symtab.h, sysdep.cc, sysdep.h, text-engine.cc, text-engine.h, text-renderer.cc, text-renderer.h, time.cc, toplev.cc, typecast.cc, url-handle-manager.cc, url-handle-manager.h, urlwrite.cc, utils.cc, utils.h, variables.cc, variables.h, xdiv.cc, __delaunayn__.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, audioread.cc, convhulln.cc, gzip.cc, cdef-class.cc, cdef-class.h, cdef-fwd.h, cdef-manager.cc, cdef-manager.h, cdef-method.cc, cdef-method.h, cdef-object.cc, cdef-object.h, cdef-package.cc, cdef-package.h, cdef-property.cc, cdef-property.h, cdef-utils.cc, cdef-utils.h, ov-base-diag.cc, ov-base-int.cc, ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool.cc, ov-builtin.h, ov-cell.cc, ov-ch-mat.cc, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h, ov-complex.cc, ov-cx-diag.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-flt-cx-diag.cc, ov-flt-cx-mat.cc, ov-flt-re-diag.cc, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-java.cc, ov-lazy-idx.cc, ov-legacy-range.cc, ov-magic-int.cc, ov-mex-fcn.cc, ov-mex-fcn.h, ov-null-mat.cc, ov-perm.cc, ov-range.cc, ov-re-diag.cc, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h, ov.cc, ov.h, ovl.h, octave.cc, octave.h, op-b-sbm.cc, op-bm-sbm.cc, op-cs-scm.cc, op-fm-fcm.cc, op-fs-fcm.cc, op-s-scm.cc, op-scm-cs.cc, op-scm-s.cc, op-sm-cs.cc, ops.h, anon-fcn-validator.cc, anon-fcn-validator.h, bp-table.cc, bp-table.h, comment-list.cc, comment-list.h, filepos.h, lex.h, oct-lvalue.cc, oct-lvalue.h, parse.h, profiler.cc, profiler.h, pt-anon-scopes.cc, pt-anon-scopes.h, pt-arg-list.cc, pt-arg-list.h, pt-args-block.cc, pt-args-block.h, pt-array-list.cc, pt-array-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h, pt-cbinop.cc, pt-cbinop.h, pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h, pt-classdef.cc, pt-classdef.h, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h, pt-eval.cc, pt-eval.h, pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-pr-code.cc, pt-pr-code.h, pt-select.cc, pt-select.h, pt-spmd.cc, pt-spmd.h, pt-stmt.cc, pt-stmt.h, pt-tm-const.cc, pt-tm-const.h, pt-unop.cc, pt-unop.h, pt-walk.cc, pt-walk.h, pt.cc, pt.h, token.cc, token.h, Range.cc, Range.h, idx-vector.cc, idx-vector.h, range-fwd.h, CollocWt.cc, CollocWt.h, aepbalance.cc, aepbalance.h, chol.cc, chol.h, gepbalance.cc, gepbalance.h, gsvd.cc, gsvd.h, hess.cc, hess.h, lo-mappers.cc, lo-mappers.h, lo-specfun.cc, lo-specfun.h, lu.cc, lu.h, oct-convn.cc, oct-convn.h, oct-fftw.cc, oct-fftw.h, oct-norm.cc, oct-norm.h, oct-rand.cc, oct-rand.h, oct-spparms.cc, oct-spparms.h, qr.cc, qr.h, qrp.cc, qrp.h, randgamma.cc, randgamma.h, randmtzig.cc, randmtzig.h, randpoisson.cc, randpoisson.h, schur.cc, schur.h, sparse-chol.cc, sparse-chol.h, sparse-lu.cc, sparse-lu.h, sparse-qr.cc, sparse-qr.h, svd.cc, svd.h, child-list.cc, child-list.h, dir-ops.cc, dir-ops.h, file-ops.cc, file-ops.h, file-stat.cc, file-stat.h, lo-sysdep.cc, lo-sysdep.h, lo-sysinfo.cc, lo-sysinfo.h, mach-info.cc, mach-info.h, oct-env.cc, oct-env.h, oct-group.cc, oct-group.h, oct-password.cc, oct-password.h, oct-syscalls.cc, oct-syscalls.h, oct-time.cc, oct-time.h, oct-uname.cc, oct-uname.h, action-container.cc, action-container.h, base-list.h, cmd-edit.cc, cmd-edit.h, cmd-hist.cc, cmd-hist.h, f77-fcn.h, file-info.cc, file-info.h, lo-array-errwarn.cc, lo-array-errwarn.h, lo-hash.cc, lo-hash.h, lo-ieee.h, lo-regexp.cc, lo-regexp.h, lo-utils.cc, lo-utils.h, oct-base64.cc, oct-base64.h, oct-glob.cc, oct-glob.h, oct-inttypes.h, oct-mutex.cc, oct-mutex.h, oct-refcount.h, oct-shlib.cc, oct-shlib.h, oct-sparse.cc, oct-sparse.h, oct-string.h, octave-preserve-stream-state.h, pathsearch.cc, pathsearch.h, quit.cc, quit.h, unwind-prot.cc, unwind-prot.h, url-transfer.cc, url-transfer.h: Re-indent code after switch to using namespace macros.
author Rik <rik@octave.org>
date Thu, 01 Dec 2022 18:02:15 -0800
parents e88a07dec498
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30139
diff changeset
3 // Copyright (C) 2007-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
26
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
27 //! @file ov-java.cc
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
28 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
29 //! Provides Octave's Java interface.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
30
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21691
diff changeset
31 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21211
diff changeset
32 # include "config.h"
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
33 #endif
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
34
15755
3216dafbbd48 ov-java.cc: Correcty typo HAVE_WINDWOS_H to HAVE_WINDOWS_H
Rik <rik@octave.org>
parents: 15754
diff changeset
35 #if defined (HAVE_WINDOWS_H)
21200
fcac5dbbf9ed maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents: 21042
diff changeset
36 # include <windows.h>
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 #endif
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 #include <algorithm>
28492
ae4cdbe75992 Use C++11 container for array of strings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28491
diff changeset
40 #include <array>
25438
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25337
diff changeset
41 #include <fstream>
cb1606f78f6b prefer <istream>, <ostream>, or <iosfwd> to <iostream> where possible
John W. Eaton <jwe@octave.org>
parents: 25337
diff changeset
42 #include <map>
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
43 #include <string>
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
44 #include <vector>
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 #include <clocale>
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
48 #include "Cell.h"
23129
35e3d199527c Replace feval calls with direct call to C++ function (bug #50116).
Rik <rik@octave.org>
parents: 23084
diff changeset
49 #include "builtin-defun-decls.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
50 #include "cmd-edit.h"
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
51 #include "defaults.h"
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
52 #include "defun.h"
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
53 #include "error.h"
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
54 #include "errwarn.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
55 #include "file-ops.h"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
56 #include "file-stat.h"
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
57 #include "fpucw-wrappers.h"
26113
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26009
diff changeset
58 #include "interpreter.h"
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26009
diff changeset
59 #include "interpreter-private.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
60 #include "load-path.h"
25548
d6050ba12c0c Call get_ASCII_filename for std::ifstream (bug #49118).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25460
diff changeset
61 #include "lo-sysdep.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
62 #include "oct-env.h"
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
63 #include "oct-process.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
64 #include "oct-shlib.h"
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
65 #include "ov-java.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
66 #include "parse.h"
15747
4be890c5527c * __java__.cc, __java__.h: Clean up lists of include files.
John W. Eaton <jwe@octave.org>
parents: 15746
diff changeset
67 #include "variables.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
68
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
69 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
70 #include <jni.h>
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
71 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
72
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
73 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
74
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
75 // FIXME: Should these values be configurable at run time?
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
76
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
77 #if defined (OCTAVE_USE_WINDOWS_API)
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
78 # define LIBJVM_FILE_NAME "jvm.dll"
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
79 #elif defined (__APPLE__)
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
80 # define LIBJVM_FILE_NAME "libjvm.dylib"
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
81 # define JAVA_HOME_CMD "/usr/libexec/java_home"
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
82 #else
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
83 # define LIBJVM_FILE_NAME "libjvm.so"
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
84 #endif
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
85
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
86 #define TO_JOBJECT(obj) reinterpret_cast<jobject> (obj)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
87 #define TO_JCLASS(obj) reinterpret_cast<jclass> (obj)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
88
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
89 #define TO_JNIENV(env) reinterpret_cast<JNIEnv *> (env)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
90
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
91 typedef jint (JNICALL *JNI_CreateJavaVM_t) (JavaVM **pvm, JNIEnv **penv,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
92 void *args);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
93
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
94 typedef jint (JNICALL *JNI_GetCreatedJavaVMs_t) (JavaVM **pvm, jsize bufLen,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
95 jsize *nVMs);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
97 template <typename T>
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
98 class java_local_ref
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
99 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
100 public:
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
101
30137
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
102 java_local_ref (JNIEnv *env)
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
103 : m_jobj (nullptr), m_detached (false), m_env (env) { }
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
104
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
105 java_local_ref (JNIEnv *env, T obj)
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
106 : m_jobj (obj), m_detached (false), m_env (env) { }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
107
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
108 ~java_local_ref (void) { release (); }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
109
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
110 T& operator = (T obj)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
111 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
112 release ();
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
113
30137
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
114 m_jobj = obj;
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
115 m_detached = false;
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
116
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
117 return m_jobj;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
118 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
119
30137
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
120 operator bool () const { return (m_jobj != 0); }
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
121 operator T () { return m_jobj; }
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
122
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
123 void detach (void) { m_detached = true; }
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
124
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
125 protected:
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
126
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
127 T m_jobj;
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
128 bool m_detached;
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
129 JNIEnv *m_env;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
130
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
131 private:
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
132
30137
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
133 java_local_ref (void)
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
134 : m_jobj (0), m_detached (false), m_env (0)
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
135 { }
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
136
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
137 void release (void)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
138 {
30137
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
139 if (m_env && m_jobj && ! m_detached)
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
140 m_env->DeleteLocalRef (m_jobj);
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
141
14214fbfa258 maint: use "m_" prefix for member variables in class java_local_ref.
Rik <rik@octave.org>
parents: 30133
diff changeset
142 m_jobj = nullptr;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
143 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
144
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
145 };
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
146
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
147 typedef java_local_ref<jobject> jobject_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
148 typedef java_local_ref<jclass> jclass_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
149 typedef java_local_ref<jstring> jstring_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
150 typedef java_local_ref<jobjectArray> jobjectArray_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
151 typedef java_local_ref<jintArray> jintArray_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
152 typedef java_local_ref<jbyteArray> jbyteArray_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
153 typedef java_local_ref<jdoubleArray> jdoubleArray_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
154 typedef java_local_ref<jthrowable> jthrowable_ref;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
155
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
156 static std::string
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
157 jstring_to_string (JNIEnv *jni_env, jstring s);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
158
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
159 static std::string
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
160 jstring_to_string (JNIEnv *jni_env, jobject obj);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
161
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
162 static octave_value
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
163 box (JNIEnv *jni_env, void *jobj, void *jcls_arg = nullptr);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
164
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
165 static octave_value
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
166 box_more (JNIEnv *jni_env, void *jobj_arg, void *jcls_arg = nullptr);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
167
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
168 static bool
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
169 unbox (JNIEnv *jni_env, const octave_value& val, jobject_ref& jobj,
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
170 jclass_ref& jcls);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
171
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
172 static bool
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
173 unbox (JNIEnv *jni_env, const octave_value_list& args,
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
174 jobjectArray_ref& jobjs, jobjectArray_ref& jclss);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
175
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
176 extern "C"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
177 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
178 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
179 Java_org_octave_Octave_call (JNIEnv *, jclass, jstring, jobjectArray,
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
180 jobjectArray);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
181
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
182 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
183 Java_org_octave_OctaveReference_doFinalize (JNIEnv *, jclass, jint);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
184
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
185 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
186 Java_org_octave_Octave_doInvoke (JNIEnv *, jclass, jint, jobjectArray);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
188 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
189 Java_org_octave_Octave_doEvalString (JNIEnv *, jclass, jstring);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
190
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
191 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
192 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *, jclass);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
193 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
194
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
195 //! The pointer to a java virtual machine either created in the current thread
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
196 //! or attached this thread to it.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
197
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
198 static JavaVM *jvm = nullptr;
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
199
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
200 //! Whether the current thread is attached to the jvm given by #jvm.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
201 //! This is @c false also if no jvm exists, i.e. if #jvm is @c nullptr.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
202 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
203 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
204
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
205 static bool jvm_attached = false;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
206
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
207 //! Need to keep hold of the shared library handle until exit.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
208 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
209 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
210
21750
6720e5a220ba use namespace for octave_shlib class
John W. Eaton <jwe@octave.org>
parents: 21748
diff changeset
211 static octave::dynamic_library jvm_lib;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
212
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
213 static std::map<int, octave_value> listener_map;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
214 static std::map<int, octave_value> octave_ref_map;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
215 static int octave_java_refcount = 0;
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
216
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
217 //! The thread id of the currently executing thread or @c -1 if this is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
218 //! unknown.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
219 //! @see #initialize_java()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
220
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
221 static long octave_thread_ID = -1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
222
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
223 bool Vjava_matrix_autoconversion = false;
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
224 bool Vjava_unsigned_autoconversion = true;
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
225 bool Vdebug_java = false;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
226
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
227 OCTAVE_BEGIN_NAMESPACE(octave)
29960
939bef0b66e0 merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
228
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
229 class JVMArgs
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
230 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
231 public:
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
232
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
233 JVMArgs (void)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
234 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
235 m_vm_args.version = JNI_VERSION_1_6;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
236 m_vm_args.nOptions = 0;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
237 m_vm_args.options = nullptr;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
238 m_vm_args.ignoreUnrecognized = false;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
239 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
240
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
241 ~JVMArgs (void)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
242 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
243 clean ();
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
244 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
245
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
246 JavaVMInitArgs * to_args ()
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
247 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
248 update ();
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
249 return &m_vm_args;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
250 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
251
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
252 void add (const std::string& opt)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
253 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
254 m_java_opts.push_back (opt);
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
255 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
256
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
257 void read_java_opts (const std::string& filename)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
258 {
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
259 std::ifstream js = sys::ifstream (filename.c_str ());
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
260
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
261 if (! js.bad () && ! js.fail ())
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
262 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
263 std::string line;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
264
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
265 while (! js.eof () && ! js.fail ())
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
266 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
267 std::getline (js, line);
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
268
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
269 if (line.find ('-') == 0)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
270 m_java_opts.push_back (line);
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
271 else if (line.length () > 0 && Vdebug_java)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
272 warning ("invalid JVM option, skipping: %s", line.c_str ());
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
273 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
274 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
275 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
276
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
277 private:
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
278
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
279 void clean (void)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
280 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
281 if (m_vm_args.options != nullptr)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
282 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
283 for (int i = 0; i < m_vm_args.nOptions; i++)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
284 delete [] m_vm_args.options[i].optionString;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
285
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
286 delete [] m_vm_args.options;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
287
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
288 m_vm_args.options = nullptr;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
289 m_vm_args.nOptions = 0;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
290 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
291 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
292
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
293 void update (void)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
294 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
295 clean ();
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
296
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
297 if (m_java_opts.size () > 0)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
298 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
299 int index = 0;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
300
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
301 m_vm_args.nOptions = m_java_opts.size ();
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
302 m_vm_args.options = new JavaVMOption [m_vm_args.nOptions];
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
303
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
304 for (const auto& opt : m_java_opts)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
305 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
306 if (Vdebug_java)
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
307 octave_stdout << opt << std::endl;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
308 m_vm_args.options[index++].optionString = strsave (opt.c_str ());
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
309 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
310
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
311 m_java_opts.clear ();
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
312 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
313 }
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
314
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
315 private:
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
316
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
317 JavaVMInitArgs m_vm_args;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
318
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
319 std::list<std::string> m_java_opts;
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
320 };
29960
939bef0b66e0 merge "namespace octave" and OCTAVE_NAMESPACE_BEGIN/END blocks
John W. Eaton <jwe@octave.org>
parents: 29958
diff changeset
321
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
322 OCTAVE_END_NAMESPACE(octave)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
323
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
324 //! The java initialization directory is given by the environment variable
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
325 //! @c OCTAVE_JAVA_DIR if defined; otherwise it is the directory of Octave's
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
326 //! m-files defining Java functions.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
327 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
328 //! The Java initialization directory is the directory where resides:
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
329 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
330 //! - @c octave.jar, defining the java classes implementing octave's java
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
331 //! interface,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
332 //! - @c javaclasspath.txt, defining the installation defined portion of the
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
333 //! (static) classpath,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
334 //! - @c java.opts, defining the configurable options of the java virtual
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
335 //! machine.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
336 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
337 //! Note that the (static) java classpath of the java virtual machine starts
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
338 //! with @c octave.jar, and that the static java classpath ends with what
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
339 //! is read from @c javaclasspath.txt located in the initial java directory.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
340 //! Moreover, the java virtual machine is created essentially with
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
341 //! the options given by @c java.opts.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
342
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
343 static std::string
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
344 initial_java_dir (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
345 {
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
346 static std::string java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
347
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
348 if (java_dir.empty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
349 {
21732
6a1eded90355 use namespace for system env class
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
350 java_dir = octave::sys::env::getenv ("OCTAVE_JAVA_DIR");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
351
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
352 if (java_dir.empty ())
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
353 java_dir = (octave::config::fcn_file_dir ()
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
354 + octave::sys::file_ops::dir_sep_str () + "java");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
355 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
356
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
357 return java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
358 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
359
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
360 //! Return the classpath in the given file @c filepath as a string.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
361 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
362 //! In the classpath file, each line which is neither empty nor a comment, is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
363 //! interpreted as a segment of a path. Comment lines are those starting with
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
364 //! a @c # or with a @c % in the very first column.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
365 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
366 //! @param filepath The path to the file (usually @c classpath.txt) containing
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
367 //! a portion of the classpath.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
368 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
369 //! @returns A string consisting of the lines of @c filepath which are neither
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
370 //! comments nor empty without trailing whitespace separated by
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 27126
diff changeset
371 //! 'octave::directory_path::path_sep_str()'. The returned string also
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
372 //! starts with that path separator.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
373
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
374 static std::string
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
375 read_classpath_txt (const std::string& filepath)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
376 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
377 std::string classpath;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
378
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28996
diff changeset
379 std::ifstream fs = octave::sys::ifstream (filepath.c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
380
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
381 if (! fs.bad () && ! fs.fail ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
382 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
383 std::string line;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
384
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
385 while (! fs.eof () && ! fs.fail ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
386 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
387 std::getline (fs, line);
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
388 if (line.length () > 0 && line[0] != '#' && line[0] != '%')
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
389 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
390 // prepend separator character
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
391 classpath.append (octave::directory_path::path_sep_str ());
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
392
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
393 // append content of line without whitespace
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
394 int last = line.find_last_not_of (" \t\f\v\r\n");
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
395
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
396 classpath.append (octave::sys::file_ops::tilde_expand (line.substr (0, last+1)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
397 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
398 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
399 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
400
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
401 return (classpath);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
402 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
403
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
404 //! Return the initial classpath.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
405 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
406 //! The initial classpath starts with a pointer to @c octave.jar which is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
407 //! located in the initial java directory given by #java_init_dir().
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
408 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
409 //! @attention This is nowhere documented and also the script
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
410 //! @c javaclasspath.m drops this. On the other hand, this is vital because
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
411 //! @c octave.jar contains the java core classes of octave's java interface.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
412 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
413 //! The rest of the classpath is read sequentially from files
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
414 //! @c javaclasspath.txt located in either:
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
415 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
416 //! - the current directory,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
417 //! - the user's home directory,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
418 //! - the initial java directory returned by #initial_java_dir()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
419 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
420 //! @returns The initial classpath.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
421
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
422 static std::string
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
423 initial_class_path (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
424 {
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
425 std::string java_dir = initial_java_dir ();
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
426
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
427 std::string retval = java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
428
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
429 // Find octave.jar file.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
430 if (! retval.empty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
431 {
21733
cb0fdd941d84 use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents: 21732
diff changeset
432 std::string sep = octave::sys::file_ops::dir_sep_str ();
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
433
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
434 std::string jar_file = java_dir + sep + "octave.jar";
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
435
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
436 octave::sys::file_stat jar_exists (jar_file);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
437
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
438 if (jar_exists)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
439 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
440 // Initialize static classpath to octave.jar.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
441 retval = jar_file;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
442
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
443 // The base classpath has been set.
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
444 // Try to find an optional file specifying classpaths in 3 places.
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
445 // 1) Current directory
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
446 // 2) User's home directory
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
447 // 3) Octave installation directory where octave.jar resides
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
448
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
449 std::string cwd = octave::sys::env::get_current_directory ();
21732
6a1eded90355 use namespace for system env class
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
450 std::string home_dir = octave::sys::env::get_home_directory ();
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
451
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
452 // The filename is "javaclasspath.txt", but historically has been
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
453 // "classpath.txt" so both are supported.
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
454 std::vector<std::string> cp_list = {"javaclasspath.txt",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
455 "classpath.txt"
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
456 };
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
457
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
458 for (std::string filename : cp_list)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
459 {
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
460 std::string cp_file = filename;
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
461 octave::sys::file_stat cp_exists;
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
462
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
463 // Try to find classpath file in the current directory.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
464
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
465 cp_exists = octave::sys::file_stat (cp_file);
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
466 if (cp_exists)
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
467 {
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
468 // File found. Add its contents to the static classpath.
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
469 std::string classpath = read_classpath_txt (cp_file);
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
470 retval.append (classpath);
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
471 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
472
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
473 // Try to find classpath file in the user's home directory.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
474
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
475 if (cwd != home_dir)
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
476 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
477 cp_file = '~' + sep + filename;
21733
cb0fdd941d84 use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents: 21732
diff changeset
478 cp_file = octave::sys::file_ops::tilde_expand (cp_file);
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
479 cp_exists = octave::sys::file_stat (cp_file);
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
480 if (cp_exists)
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
481 {
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
482 // File found. Add its contents to the static classpath.
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
483 std::string classpath = read_classpath_txt (cp_file);
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
484 retval.append (classpath);
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
485 }
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
486 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
487
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
488 // Try to find classpath file in the Octave install directory.
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
489
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
490 if (cwd != java_dir)
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
491 {
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
492 cp_file = java_dir + sep + filename;
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
493 cp_exists = octave::sys::file_stat (cp_file);
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
494 if (cp_exists)
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
495 {
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
496 // File found. Add its contents to the static classpath.
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
497 std::string classpath = read_classpath_txt (cp_file);
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
498 retval.append (classpath);
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
499 }
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
500 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
501 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
502 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
503 else
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
504 error ("octave.jar does not exist: %s", jar_file.c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
505 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
506 else
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
507 error ("initial java dir is empty");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
508
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
509 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
510 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
511
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
512 static std::string
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
513 get_jvm_lib_path_in_subdir (std::string java_home_path)
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
514 {
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
515 // This assumes that whatever architectures are installed are appropriate for
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
516 // this machine
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
517 #if defined (OCTAVE_USE_WINDOWS_API)
28492
ae4cdbe75992 Use C++11 container for array of strings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28491
diff changeset
518 const std::array<const std::string, 2> subdirs = {"bin/client", "bin/server"};
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
519 #else
28492
ae4cdbe75992 Use C++11 container for array of strings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28491
diff changeset
520 const std::array<const std::string, 8> subdirs =
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
521 {
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
522 "jre/lib/server", "jre/lib", "lib/client", "lib/server",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
523 "jre/lib/amd64/client", "jre/lib/amd64/server",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
524 "jre/lib/i386/client", "jre/lib/i386/server"
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
525 };
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
526 #endif
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
527
29572
aef11bb4e6d1 use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29569
diff changeset
528 for (std::size_t i = 0; i < subdirs.size (); i++)
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
529 {
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
530 std::string candidate = java_home_path + "/" + subdirs[i]
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
531 + "/" LIBJVM_FILE_NAME;
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
532 if (octave::sys::file_stat (candidate))
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
533 return candidate;
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
534 }
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
535 return "";
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
536 }
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
537
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
538 #if defined (OCTAVE_USE_WINDOWS_API)
27126
3d9e72cac668 allow Windows build to work again
John W. Eaton <jwe@octave.org>
parents: 27108
diff changeset
539
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
540 OCTAVE_BEGIN_NAMESPACE(octave)
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
541 // Declare function defined in sysdep.cc
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
542 extern LONG
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
543 get_regkey_value (HKEY h_rootkey, const std::string subkey,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
544 const std::string name, octave_value& value);
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
545 OCTAVE_END_NAMESPACE(octave)
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
546
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
547 static std::string
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
548 get_jvm_lib_path_from_registry ()
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
549 {
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
550 // In Windows, find the location of the JRE from the registry
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
551 std::string key, jversion, value;
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
552
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
553 // First search for JRE >= 15
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
554 key = R"(software\javasoft\jdk)";
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
555
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
556 jversion = octave::sys::env::getenv ("JAVA_VERSION");
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
557 bool maybe_version_15_or_newer = true;
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
558 octave_value regval;
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
559 LONG retval;
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
560 if (jversion.empty ())
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
561 {
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
562 value = "CurrentVersion";
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
563 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
564 regval);
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
565
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
566 if (retval != ERROR_SUCCESS)
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
567 {
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
568 // Search for JRE < 15
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
569 maybe_version_15_or_newer = false;
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
570 key = R"(software\javasoft\jre)";
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
571 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
572 regval);
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
573
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
574 if (retval != ERROR_SUCCESS)
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
575 {
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
576 // Search for JRE < 9
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
577 key = R"(software\javasoft\java runtime environment)";
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
578 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
579 value, regval);
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
580 }
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
581 }
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
582
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
583 if (retval != ERROR_SUCCESS)
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
584 error ("unable to find Java Runtime Environment: %s::%s",
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
585 key.c_str (), value.c_str ());
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
586
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
587 jversion = regval.xstring_value ("initialize_jvm: registry value "
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
588 R"("%s" at "%s" must be a string)",
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27216
diff changeset
589 value.c_str (), key.c_str ());
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
590 }
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
591
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
592 std::string jvm_lib_path;
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
593 if (maybe_version_15_or_newer)
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
594 {
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
595 // Look for value used by JRE >= 15
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
596 key = key + '\\' + jversion;
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
597 value = "JavaHome";
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
598 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
599 regval);
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
600
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
601 if (retval != ERROR_SUCCESS)
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
602 error ("unable to find Java Runtime Environment: %s::%s",
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
603 key.c_str (), value.c_str ());
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
604
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
605 jvm_lib_path
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
606 = regval.xstring_value (R"(initialize_jvm: registry value "%s" at )"
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
607 R"("%s" must be a string)",
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
608 value.c_str (), key.c_str ())
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
609 + R"(\bin\server\jvm.dll)";
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
610
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
611 if (! jvm_lib_path.empty ())
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
612 return jvm_lib_path;
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
613
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
614 }
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
615
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
616 // Search for JRE < 15
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
617 key = R"(software\javasoft\jre\)" + jversion;
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
618 value = "RuntimeLib";
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
619 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
620 regval);
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
621
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
622 if (retval != ERROR_SUCCESS)
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
623 {
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
624 // Search for JRE < 9
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
625 key = R"(software\javasoft\java runtime environment\)" + jversion;
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
626 retval = octave::get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
627 regval);
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
628 }
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
629
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
630 if (retval != ERROR_SUCCESS)
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
631 error ("unable to find Java Runtime Environment: %s::%s",
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
632 key.c_str (), value.c_str ());
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
633
28996
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
634 jvm_lib_path
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
635 = regval.xstring_value (R"(initialize_jvm: registry value "%s" at )"
55bdcab3d85b Detect Java versions >= 15 on Windows (bug #59215).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28889
diff changeset
636 R"("%s" must be a string)",
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27216
diff changeset
637 value.c_str (), key.c_str ());
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
638
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
639 if (jvm_lib_path.empty ())
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
640 error ("unable to find Java Runtime Environment: %s::%s",
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
641 key.c_str (), value.c_str ());
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
642
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
643 return jvm_lib_path;
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
644 }
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
645 #endif
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
646
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
647 //! Initialize the java virtual machine (jvm) and field #jvm if necessary.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
648 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
649 //! If the jvm exists and is initialized, #jvm points to it, i.e. is not 0
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
650 //! and there is nothing to do.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
651 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
652 //! If #jvm is 0 and if at least one jvm exists, attach the current thread to
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
653 //! it by setting #jvm_attached. Otherwise, create a #jvm with some hard-
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
654 //! coded options:
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
655 //!
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 27126
diff changeset
656 //! - '-Djava.class.path=classpath', where @c classpath is given by
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
657 //! #initial_class_path().
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 27126
diff changeset
658 //! - '-Xrs'
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
659 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
660 //! Further options are read from the file @c java.opts in the directory given
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
661 //! by #java_init_dir().
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
662 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
663 //! Note that #initial_class_path() determines the initial classpath. This
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
664 //! is the static classpath which cannot be changed. Elements of the dynamic
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
665 //! classpath can be added and removed using the m-file scripts
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
666 //! @c javaaddpath.m and @c javarmpath.m.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
667 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
668 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
669
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
670 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
671 initialize_jvm (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
672 {
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
673 // Most of the time JVM already exists and has been initialized.
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
674 // Also it seems, as if jvm is set, the jvm is already attached.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
675 // This does not fit terminate_jvm.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
676 if (jvm)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
677 return;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
678
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
679 JNIEnv *current_env;
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
680 const char *static_locale = setlocale (LC_ALL, nullptr);
26532
4dae224112a1 ov-java.cc: Fix static analyzer detected issue (bug #55464).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
681 std::string locale;
4dae224112a1 ov-java.cc: Fix static analyzer detected issue (bug #55464).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
682 if (static_locale)
4dae224112a1 ov-java.cc: Fix static analyzer detected issue (bug #55464).
Markus Mützel <markus.muetzel@gmx.de>
parents: 26376
diff changeset
683 locale = std::string (static_locale);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
684
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
685 octave::dynamic_library lib ("");
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
686 std::string jvm_lib_path;
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
687
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
688 // Check whether the Java VM library is already loaded or linked in.
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
689 JNI_CreateJavaVM_t create_vm = reinterpret_cast<JNI_CreateJavaVM_t>
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
690 (lib.search ("JNI_CreateJavaVM"));
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
691 JNI_GetCreatedJavaVMs_t get_vm = reinterpret_cast<JNI_GetCreatedJavaVMs_t>
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
692 (lib.search ("JNI_GetCreatedJavaVMs"));
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
693
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
694 if (create_vm && get_vm)
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
695 jvm_lib_path = "linked in or loaded libraries";
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
696 else
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
697 {
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
698 // JAVA_HOME environment variable takes precedence
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
699 std::string java_home_env = octave::sys::env::getenv ("JAVA_HOME");
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
700 if (! java_home_env.empty ())
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
701 {
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
702 jvm_lib_path = get_jvm_lib_path_in_subdir (java_home_env);
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
703
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
704 // If JAVA_HOME does not look like a Java directory, use it anyway
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
705 // to fail with a useful error message indicating the directory
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
706 if (jvm_lib_path.empty ())
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
707 jvm_lib_path = java_home_env + "/" LIBJVM_FILE_NAME;
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
708 }
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
709
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
710 # if defined (__APPLE__)
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
711 // Use standard /usr/libexec/java_home if available.
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
712 if (jvm_lib_path.empty ())
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
713 {
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
714 octave::sys::file_stat libexec_java_home_exists (JAVA_HOME_CMD);
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
715 if (libexec_java_home_exists)
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
716 {
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
717 // FIXME: Should this command be fully configurable at run
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
718 // time? Or is it OK for the options to be fixed here?
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
719
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
720 std::string java_home_cmd = std::string (JAVA_HOME_CMD)
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
721 + " --failfast --version 1.6+ 2>/dev/null";
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
722
27006
cdc67ea473d1 Fix build failure on macOS due to missing namespace qualification.
Andrew Janke <andrew@apjanke.net>
parents: 27003
diff changeset
723 octave::process_execution_result rslt
27003
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
724 = octave::run_command_and_return_output (java_home_cmd);
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
725
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
726 if (rslt.exit_status () == 0)
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
727 {
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
728 std::string output = rslt.stdout_output ();
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
729 std::string found_path = output.substr (0, output.length() - 1);
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
730 std::string jvm_lib_found = get_jvm_lib_path_in_subdir (found_path);
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
731 if (!jvm_lib_found.empty ())
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
732 jvm_lib_path = jvm_lib_found;
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
733 }
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
734 }
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
735 }
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
736 # endif
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
737
2a57165f892c detect JVM at run time on macOS (bug #54219)
Andrew Janke <andrew@apjanke.net>
parents: 26568
diff changeset
738 if (jvm_lib_path.empty ())
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
739 {
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
740 #if defined (OCTAVE_USE_WINDOWS_API)
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
741 jvm_lib_path = get_jvm_lib_path_from_registry ();
20945
9d9270e2f98f eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents: 20939
diff changeset
742 #else
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
743 // Fall back to JAVA_LDPATH, determined by the build system
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
744 jvm_lib_path = std::string (JAVA_LDPATH) + "/" LIBJVM_FILE_NAME;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
745 #endif
25770
374edade7b1b fix use of JAVA_HOME to fail if not found and fall back correctly (bug #40111)
Mike Miller <mtmiller@octave.org>
parents: 25744
diff changeset
746 }
25744
3ddd74bd7b11 Use JAVA_HOME for JVM detection at run-time (bug #40111).
Andrew Janke <andrew@apjanke.net>
parents: 25604
diff changeset
747
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
748 lib = octave::dynamic_library (jvm_lib_path);
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
749
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
750 if (! lib)
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
751 error ("unable to load Java Runtime Environment from %s",
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
752 jvm_lib_path.c_str ());
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
753
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
754 create_vm = reinterpret_cast<JNI_CreateJavaVM_t>
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
755 (lib.search ("JNI_CreateJavaVM"));
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
756 get_vm = reinterpret_cast<JNI_GetCreatedJavaVMs_t>
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
757 (lib.search ("JNI_GetCreatedJavaVMs"));
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
758
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
759 if (! create_vm)
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
760 error ("unable to find JNI_CreateJavaVM in %s", jvm_lib_path.c_str ());
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
761
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
762 if (! get_vm)
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
763 error ("unable to find JNI_GetCreatedJavaVMs in %s",
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
764 jvm_lib_path.c_str ());
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
765 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
766
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
767 //! The number of created jvm's.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
768 jsize nVMs = 0;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
769
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
770 if (get_vm (&jvm, 1, &nVMs) == 0 && nVMs > 0)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
771 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
772 // At least one JVM exists, try to attach the current thread to it.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
773
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
774 switch (jvm->GetEnv (reinterpret_cast<void **> (&current_env),
23929
20c83f619102 bump Java compatibility level to 1.6, minimum supported by Java 9 (bug #51803)
Mike Miller <mtmiller@octave.org>
parents: 23807
diff changeset
775 JNI_VERSION_1_6))
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
776 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
777 case JNI_EDETACHED:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
778 // Attach the current thread
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
779 JavaVMAttachArgs m_vm_args;
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
780 m_vm_args.version = JNI_VERSION_1_6;
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
781 m_vm_args.name = const_cast<char *> ("octave");
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
782 m_vm_args.group = nullptr;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
783 if (jvm->AttachCurrentThread (reinterpret_cast<void **> (&current_env),
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
784 &m_vm_args) < 0)
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
785 error ("JVM internal error, unable to attach octave to existing JVM");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
786 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
787
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
788 case JNI_EVERSION:
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
789 error ("JVM internal error, the required JNI version is not supported");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
790
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
791 case JNI_OK:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
792 // Don't do anything, the current thread is already attached to JVM
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
793 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
794 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
795
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
796 jvm_attached = true;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
797 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
798 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
799 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
800 // No JVM exists, create one
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
801
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
802 octave::JVMArgs m_vm_args;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
803
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
804 // Hard-coded options for the jvm.
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
805 m_vm_args.add ("-Djava.class.path=" + initial_class_path ());
28527
9e7b2625e574 ov-java.cc: Set reaper thread to use default stack size (bug #58641).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28490
diff changeset
806 #if defined (HAVE_BROKEN_PTHREAD_STACKSIZE)
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
807 m_vm_args.add ("-Djdk.lang.processReaperUseDefaultStackSize=true");
28527
9e7b2625e574 ov-java.cc: Set reaper thread to use default stack size (bug #58641).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28490
diff changeset
808 #endif
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
809 m_vm_args.add ("-Xrs");
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
810
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
811 // Additional options given by file java.opts.
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
812 m_vm_args.read_java_opts (initial_java_dir () +
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
813 octave::sys::file_ops::dir_sep_str () +
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
814 "java.opts");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
815
30064
0d32dcc699cd maint: use "m_" prefix for member variables in class JVMArgs.
Rik <rik@octave.org>
parents: 30045
diff changeset
816 if (create_vm (&jvm, &current_env, m_vm_args.to_args ()) != JNI_OK)
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
817 error ("unable to start Java VM in %s", jvm_lib_path.c_str ());
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
818 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
819
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
820 jvm_lib = lib;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
821
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
822 setlocale (LC_ALL, locale.c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
823 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
824
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
825 //! Terminate the current jvm, if there is any.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
826 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
827 //! Otherwise, detach the jvm if this thread is attached to it and unload it
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
828 //! if this thread created it itself.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
829 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
830 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
831
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
832 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
833 terminate_jvm (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
834 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
835 // There is nothing to do if jvm is not set (= nullptr).
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
836 if (jvm)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
837 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
838 // FIXME: Seems that if jvm_attached is always true if jvm is not null.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
839 if (jvm_attached)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
840 jvm->DetachCurrentThread ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
841 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
842 jvm->DestroyJavaVM ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
843
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
844 jvm = nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
845 jvm_attached = false;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
846
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
847 if (jvm_lib)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
848 jvm_lib.close ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
849
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
850 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
851 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
852 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
853
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
854 //! Converts a Java string object to std::string.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
855 //!{
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
856 static std::string
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
857 jstring_to_string (JNIEnv *jni_env, jstring s)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
858 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
859 std::string retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
860
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
861 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
862 {
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
863 const char *cstr = jni_env->GetStringUTFChars (s, nullptr);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
864 retval = cstr;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
865 jni_env->ReleaseStringUTFChars (s, cstr);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
866 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
867
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
868 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
869 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
870
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
871 static std::string
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
872 jstring_to_string (JNIEnv *jni_env, jobject obj)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
873 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
874 std::string retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
875
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
876 if (jni_env && obj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
877 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
878 jclass_ref cls (jni_env, jni_env->FindClass ("java/lang/String"));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
879 if (cls)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
880 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
881 if (jni_env->IsInstanceOf (obj, cls))
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
882 retval = jstring_to_string (jni_env,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
883 reinterpret_cast<jstring> (obj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
884 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
885 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
886
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
887 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
888 }
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
889 //!}
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
890
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
891 //! Returns a reference to the jni (java native interface) environment of the
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
892 //! Java virtual machine #jvm.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
893 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
894 //! @returns A reference to jni, if #jvm is present, otherwise @c nullptr.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
895
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
896 static inline JNIEnv *
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
897 thread_jni_env (void)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
898 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
899 JNIEnv *env = nullptr;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
900
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
901 if (jvm)
23929
20c83f619102 bump Java compatibility level to 1.6, minimum supported by Java 9 (bug #51803)
Mike Miller <mtmiller@octave.org>
parents: 23807
diff changeset
902 jvm->GetEnv (reinterpret_cast<void **> (&env), JNI_VERSION_1_6);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
903
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
904 return env;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
905 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
906
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
907 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
908
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
909 bool
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
910 octave_java::is_java_string (void) const
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
911 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
912 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
913
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
914 JNIEnv *current_env = thread_jni_env ();
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
915
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
916 if (current_env && m_java_object)
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
917 {
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
918 jclass_ref cls (current_env, current_env->FindClass ("java/lang/String"));
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
919 return current_env->IsInstanceOf (TO_JOBJECT (m_java_object), cls);
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
920 }
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
921
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
922 return false;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
923
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
924 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
925
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
926 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
927 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
928
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
929 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
930
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
931 #endif
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
932 }
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
933
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
934 bool
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
935 octave_java::is_instance_of (const std::string& cls_name) const
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
936 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
937 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
938
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
939 JNIEnv *current_env = thread_jni_env ();
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
940
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
941 std::string cls_cpp = cls_name;
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
942 std::replace (cls_cpp.begin (), cls_cpp.end (), '.', '/');
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
943
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
944 if (current_env && m_java_object)
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
945 {
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
946 jclass_ref cls (current_env, current_env->FindClass (cls_cpp.c_str ()));
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
947 if (current_env->ExceptionCheck ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
948 current_env->ExceptionClear ();
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
949 else
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
950 return current_env->IsInstanceOf (TO_JOBJECT (m_java_object), cls);
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
951 }
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
952 return false;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
953
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
954 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
955
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
956 octave_unused_parameter (cls_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
957
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
958 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
959 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
960
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
961 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
962
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
963 #endif
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
964 }
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
965
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
966 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
967
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
968 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
969 check_exception (JNIEnv *jni_env)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
970 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
971 octave_value retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
972
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
973 jthrowable_ref ex (jni_env, jni_env->ExceptionOccurred ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
974
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
975 if (ex)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
976 {
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
977 if (Vdebug_java)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
978 jni_env->ExceptionDescribe ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
979
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
980 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
981
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
982 jclass_ref jcls (jni_env, jni_env->GetObjectClass (ex));
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
983 jmethodID mID = jni_env->GetMethodID (jcls, "toString",
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
984 "()Ljava/lang/String;");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
985 jstring_ref js (jni_env,
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
986 reinterpret_cast<jstring> (jni_env->CallObjectMethod (ex,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
987 mID)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
988 std::string msg = jstring_to_string (jni_env, js);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
989
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
990 error ("[java] %s", msg.c_str ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
991 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
992 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
993 retval = Matrix ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
994
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
995 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
996 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
997
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
998 static jclass
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
999 find_octave_class (JNIEnv *jni_env, const char *name)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1000 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1001 static std::string class_loader;
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1002 static jclass uiClass = nullptr;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1003
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1004 jclass jcls = jni_env->FindClass (name);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1005
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1006 if (jcls == nullptr)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1007 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1008 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1009
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1010 if (! uiClass)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1011 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1012 if (class_loader.empty ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1013 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1014 jclass_ref syscls (jni_env,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1015 jni_env->FindClass ("java/lang/System"));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1016 jmethodID mID = jni_env->GetStaticMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1017 (syscls,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1018 "getProperty",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1019 "(Ljava/lang/String;)Ljava/lang/String;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1020 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1021 jni_env->NewStringUTF ("octave.class.loader"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1022 js = reinterpret_cast<jstring> (jni_env->CallStaticObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1023 (syscls, mID, jstring (js)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1024 class_loader = jstring_to_string (jni_env, jstring (js));
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1025 std::replace (class_loader.begin (), class_loader.end (),
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1026 '.', '/');
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1027 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1028
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1029 jclass_ref uicls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1030 jni_env->FindClass (class_loader.c_str ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1031
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1032 if (! uicls)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1033 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1034 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1035
20946
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20945
diff changeset
1036 // Try the netbeans way
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1037 std::replace (class_loader.begin (), class_loader.end (),
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1038 '/', '.');
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1039 jclass_ref jcls2 (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1040 jni_env->FindClass ("org/openide/util/Lookup"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1041 jmethodID mID = jni_env->GetStaticMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1042 (jcls2, "getDefault", "()Lorg/openide/util/Lookup;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1043 jobject_ref lObj (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1044 jni_env->CallStaticObjectMethod (jcls2, mID));
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1045 mID = jni_env->GetMethodID (jcls2, "lookup",
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
1046 "(Ljava/lang/Class;)Ljava/lang/Object;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1047 jclass_ref cLoaderCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1048 jni_env->FindClass ("java/lang/ClassLoader"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1049 jobject_ref cLoader (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1050 jni_env->CallObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1051 (lObj, mID, jclass (cLoaderCls)));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1052 mID = jni_env->GetMethodID (cLoaderCls, "loadClass",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1053 "(Ljava/lang/String;)Ljava/lang/Class;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1054 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1055 jni_env->NewStringUTF (class_loader.c_str ()));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1056 uicls = reinterpret_cast<jclass>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1057 (jni_env->CallObjectMethod (cLoader, mID, jstring (js)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1058 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1059
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1060 if (uicls)
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1061 uiClass = reinterpret_cast<jclass>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1062 (jni_env->NewGlobalRef (jclass (uicls)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1063 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1064
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1065 if (uiClass)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1066 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1067 jmethodID mID = jni_env->GetStaticMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1068 (uiClass, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1069 jstring_ref js (jni_env, jni_env->NewStringUTF (name));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1070 jcls = reinterpret_cast<jclass>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1071 (jni_env->CallStaticObjectMethod (uiClass, mID, jstring (js)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1072 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1073 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1074
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1075 return jcls;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1076 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1077
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1078 static dim_vector
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1079 compute_array_dimensions (JNIEnv *jni_env, jobject obj)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1080 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1081 jobjectArray_ref jobj (jni_env, reinterpret_cast<jobjectArray> (obj));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1082 jclass_ref jcls (jni_env, jni_env->GetObjectClass (obj));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1083 jclass_ref ccls (jni_env, jni_env->GetObjectClass (jcls));
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
1084 jmethodID isArray_ID = jni_env->GetMethodID (ccls, "isArray", "()Z");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1085 jmethodID getComponentType_ID = jni_env->GetMethodID (ccls,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1086 "getComponentType",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1087 "()Ljava/lang/Class;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1088
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1089 dim_vector dv (1, 1);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1090 int idx = 0;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1091
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1092 jobj.detach ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1093 while (jcls && jni_env->CallBooleanMethod (jcls, isArray_ID))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1094 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1095 int len = (jobj ? jni_env->GetArrayLength (jobj) : 0);
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1096 if (idx >= dv.ndims ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1097 dv.resize (idx+1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1098 dv(idx) = len;
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1099 jcls = reinterpret_cast<jclass>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1100 (jni_env->CallObjectMethod (jcls, getComponentType_ID));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1101 jobj = len > 0
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1102 ? reinterpret_cast<jobjectArray> (jni_env->GetObjectArrayElement (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1103 0))
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1104 : nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1105 idx++;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1106 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1107
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1108 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1109
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1110 return dv;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1111 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1112
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1113 static jobject
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1114 make_java_index (JNIEnv *jni_env, const octave_value_list& idx)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1115 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1116 jclass_ref ocls (jni_env, jni_env->FindClass ("[I"));
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1117 jobjectArray retval = jni_env->NewObjectArray (idx.length (), ocls, nullptr);
27932
b018f553fd85 maint: Use Octave coding conventions in libinterp/
Rik <rik@octave.org>
parents: 27923
diff changeset
1118 // Here retval has the same length as idx
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1119
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1120 // Fill in entries of idx into retval
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1121 for (int i = 0; i < idx.length (); i++)
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1122 try
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1123 {
29569
29a1f8fd8ee6 move idx_vector classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
1124 octave::idx_vector v = idx(i).index_vector ();
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1125
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1126 jintArray_ref i_array (jni_env, jni_env->NewIntArray (v.length ()));
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1127 jint *buf = jni_env->GetIntArrayElements (i_array, nullptr);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1128 // Here, buf points to the beginning of i_array
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1129
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1130 // Copy v to buf.
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1131 for (int k = 0; k < v.length (); k++)
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1132 buf[k] = v(k);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1133
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1134 // Set retval[i] = i_array
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1135 jni_env->ReleaseIntArrayElements (i_array, buf, 0);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1136 jni_env->SetObjectArrayElement (retval, i, i_array);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1137
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1138 check_exception (jni_env);
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1139 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29007
diff changeset
1140 catch (octave::index_exception& ie)
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1141 {
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1142 // Rethrow to allow more info to be reported later.
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29007
diff changeset
1143 ie.set_pos_if_unset (idx.length (), i + 1);
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1144 throw;
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1145 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1146
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1147 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1148 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1149
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1150 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1151 get_array_elements (JNIEnv *jni_env, jobject jobj,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1152 const octave_value_list& idx)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1153 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1154 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1155 jobject_ref resObj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1156 jobject_ref java_idx (jni_env, make_java_index (jni_env, idx));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1157
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1158 jclass_ref helperClass (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1159 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1160 "org/octave/ClassHelper"));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1161 jmethodID mID = jni_env
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1162 ->GetStaticMethodID (helperClass, "arraySubsref",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1163 "(Ljava/lang/Object;[[I)Ljava/lang/Object;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1164 resObj = jni_env->CallStaticObjectMethod
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1165 (helperClass, mID, jobj, jobject (java_idx));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1166
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1167 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1168 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1169 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1170 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1171
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1172 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1173
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1174 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1175 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1176
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1177 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1178 set_array_elements (JNIEnv *jni_env, jobject jobj,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1179 const octave_value_list& idx, const octave_value& rhs)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1180 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1181 octave_value retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1182
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1183 jclass_ref rhsCls (jni_env);
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
1184 jobject_ref resObj (jni_env);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
1185 jobject_ref rhsObj (jni_env);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1186 jobject_ref java_idx (jni_env, make_java_index (jni_env, idx));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1187
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1188 if (unbox (jni_env, rhs, rhsObj, rhsCls))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1189 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1190 jclass_ref helperClass (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1191 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1192 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1193 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "arraySubsasgn",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1194 "(Ljava/lang/Object;[[ILjava/lang/Object;)" "Ljava/lang/Object;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1195 resObj = jni_env->CallStaticObjectMethod
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1196 (helperClass, mID, jobj, jobject (java_idx), jobject (rhsObj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1197 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1198
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1199 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1200 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1201 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1202 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1203
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1204 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1205
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1206 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1207 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1208
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1209 static string_vector
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1210 get_invoke_list (JNIEnv *jni_env, void *jobj_arg)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1211 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1212 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1213
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1214 std::list<std::string> name_list;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1215
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1216 if (jni_env)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1217 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1218 jclass_ref cls (jni_env, jni_env->GetObjectClass (jobj));
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1219 jclass_ref ccls (jni_env, jni_env->GetObjectClass (cls));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1220 jmethodID getMethods_ID = jni_env->GetMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1221 (ccls, "getMethods", "()[Ljava/lang/reflect/Method;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1222 jmethodID getFields_ID = jni_env->GetMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1223 (ccls, "getFields", "()[Ljava/lang/reflect/Field;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1224 jobjectArray_ref mList (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1225 reinterpret_cast<jobjectArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1226 (jni_env->CallObjectMethod (cls, getMethods_ID)));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1227 jobjectArray_ref fList (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1228 reinterpret_cast<jobjectArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1229 (jni_env->CallObjectMethod (cls, getFields_ID)));
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
1230 int mLen = jni_env->GetArrayLength (mList);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
1231 int fLen = jni_env->GetArrayLength (fList);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1232 jclass_ref mCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1233 jni_env->FindClass ("java/lang/reflect/Method"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1234 jclass_ref fCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1235 jni_env->FindClass ("java/lang/reflect/Field"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1236 jmethodID m_getName_ID = jni_env->GetMethodID (mCls, "getName",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1237 "()Ljava/lang/String;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1238 jmethodID f_getName_ID = jni_env->GetMethodID (fCls, "getName",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1239 "()Ljava/lang/String;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1240
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1241 for (int i = 0; i < mLen; i++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1242 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1243 jobject_ref meth (jni_env, jni_env->GetObjectArrayElement (mList, i));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1244 jstring_ref methName (jni_env, reinterpret_cast<jstring>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1245 (jni_env->CallObjectMethod (meth,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1246 m_getName_ID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1247 name_list.push_back (jstring_to_string (jni_env, methName));
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1248 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1249
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1250 for (int i = 0; i < fLen; i++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1251 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1252 jobject_ref field (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1253 jni_env->GetObjectArrayElement (fList, i));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1254 jstring_ref fieldName (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1255 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1256 (jni_env->CallObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1257 (field, f_getName_ID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1258 name_list.push_back (jstring_to_string (jni_env, fieldName));
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1259 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1260
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1261 octave_set_default_fpucw ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1262 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1263
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1264 string_vector v (name_list);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1265
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1266 return v.sort (true);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1267 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1268
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1269 static octave_value
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
1270 convert_to_string (JNIEnv *jni_env, jobject m_java_object, bool force,
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
1271 char type)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1272 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1273 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1274
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
1275 if (jni_env && m_java_object)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1276 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1277 jclass_ref cls (jni_env, jni_env->FindClass ("java/lang/String"));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1278
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
1279 if (jni_env->IsInstanceOf (m_java_object, cls))
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
1280 retval = octave_value (jstring_to_string (jni_env, m_java_object),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
1281 type);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1282 else if (force)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1283 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1284 cls = jni_env->FindClass ("[Ljava/lang/String;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1285
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
1286 if (jni_env->IsInstanceOf (m_java_object, cls))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1287 {
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
1288 jobjectArray array = reinterpret_cast<jobjectArray> (m_java_object);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1289 int len = jni_env->GetArrayLength (array);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1290 Cell c (len, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1291
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1292 for (int i = 0; i < len; i++)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1293 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1294 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1295 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1296 (jni_env->GetObjectArrayElement (array, i)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1297
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1298 if (js)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1299 c(i) = octave_value (jstring_to_string (jni_env, js), type);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1300 else
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1301 c(i) = check_exception (jni_env);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1302 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1303
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1304 retval = octave_value (c);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1305 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1306 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1307 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1308 cls = jni_env->FindClass ("java/lang/Object");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1309 jmethodID mID = jni_env->GetMethodID (cls, "toString",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1310 "()Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1311 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1312 reinterpret_cast<jstring>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1313 (jni_env->CallObjectMethod (m_java_object,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1314 mID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1315
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1316 if (js)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1317 retval = octave_value (jstring_to_string (jni_env, js), type);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1318 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1319 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1320 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1321 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1322 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1323 error ("unable to convert Java object to string");
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1324
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1325 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1326 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1327
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1328 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1329 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1330
23447
db1fdf4384dd maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents: 23446
diff changeset
1331 #define TO_JAVA(obj) dynamic_cast<octave_java *> ((obj).internal_rep ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1332
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1333 //! Return whether @c jobj shall be automatically converted to an Octave
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1334 //! numeric value.
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1335 //!
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1336 //! If @c jobj is an instance of any of the numeric wrapper classes @c Byte,
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1337 //! @c Integer, @c Long, @c Short, @c Float, or @c Double, then it will be
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1338 //! converted using the @c java.lang.Number.doubleValue() method.
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1339 //!
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1340 //! @param jobj Java object being returned to Octave
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1341 //! @return @c true if @c jobj shall be converted into a numeric value
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1342 //! automatically, @c false otherwise
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1343 static bool
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1344 is_auto_convertible_number (JNIEnv *jni_env, jobject jobj)
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1345 {
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1346 jclass_ref cls (jni_env);
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1347 cls = jni_env->FindClass ("java/lang/Double");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1348 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1349 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1350 cls = jni_env->FindClass ("java/lang/Float");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1351 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1352 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1353 cls = jni_env->FindClass ("java/lang/Byte");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1354 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1355 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1356 cls = jni_env->FindClass ("java/lang/Short");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1357 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1358 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1359 cls = jni_env->FindClass ("java/lang/Integer");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1360 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1361 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1362 cls = jni_env->FindClass ("java/lang/Long");
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1363 if (jni_env->IsInstanceOf (jobj, cls))
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1364 return true;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1365
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1366 return false;
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1367 }
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1368
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1369 //! Convert the Java object pointed to by @c jobj_arg with class @c jcls_arg
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1370 //! to an Octave value.
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1371 //!
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1372 //! @param jni_env JNI environment pointer.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1373 //! @param jobj_arg Pointer to a Java object.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1374 //! @param jcls_arg Optional pointer to the Java class of @c jobj_arg.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1375 //!
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1376 //! @return
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1377 //! @arg numeric value as a @c double if @c jobj_arg is of type @c Byte,
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1378 //! @c Short, @c Integer, @c Long, @c Float or @c Double
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1379 //! @arg logical value if @c jobj_arg is of type @c Boolean
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1380 //! @arg string value if @c jobj_arg is of type @c Character or @c String
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1381 //! @arg Octave array of numeric, logical, or char type if @c jobj_arg is
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1382 //! a Java array of primitive types
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1383 //! @arg Octave matrix if @c jobj_arg is of type @c org.octave.Matrix and
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1384 //! #Vjava_matrix_autoconversion is enabled
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1385 //! @arg Octave object if @c jobj_arg is of type
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1386 //! @c org.octave.OctaveReference
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1387 //! @arg @c octave_java object wrapping the Java object otherwise.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1388
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1389 static octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1390 box (JNIEnv *jni_env, void *jobj_arg, void *jcls_arg)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1391 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1392 octave_value retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1393
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1394 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1395 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1396
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1397 jclass_ref cls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1398
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1399 if (! jobj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1400 retval = Matrix ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1401
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1402 while (retval.is_undefined ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1403 {
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1404 // Convert a scalar of any numeric class wrapping a primitive class
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1405 // (byte, short, integer, long, float, double) to a double value.
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1406 // Test whether java.lang.Number before testing for each type.
15820
00172e5c2302 Add autoconversion of Java numeric types (byte, short, integer, long, float) to Octave double.
Rik <rik@octave.org>
parents: 15816
diff changeset
1407 cls = jni_env->FindClass ("java/lang/Number");
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1408 if (jni_env->IsInstanceOf (jobj, cls)
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1409 && is_auto_convertible_number (jni_env, jobj))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1410 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1411 jmethodID m = jni_env->GetMethodID (cls, "doubleValue", "()D");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1412 retval = jni_env->CallDoubleMethod (jobj, m);
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1413 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1414 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1415
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1416 cls = jni_env->FindClass ("java/lang/Boolean");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1417 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1418 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1419 jmethodID m = jni_env->GetMethodID (cls, "booleanValue", "()Z");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1420 retval = (jni_env->CallBooleanMethod (jobj, m) ? true : false);
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1421 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1422 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1423
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1424 cls = jni_env->FindClass ("java/lang/String");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1425 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1426 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1427 retval = jstring_to_string (jni_env, jobj);
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1428 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1429 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1430
15815
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1431 cls = jni_env->FindClass ("java/lang/Character");
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1432 if (jni_env->IsInstanceOf (jobj, cls))
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1433 {
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1434 jmethodID m = jni_env->GetMethodID (cls, "charValue", "()C");
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1435 retval = jni_env->CallCharMethod (jobj, m);
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17898
diff changeset
1436 retval = retval.convert_to_str (false, true);
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1437 break;
15815
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1438 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1439
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1440 #define BOX_PRIMITIVE_ARRAY(JAVA_TYPE, JAVA_ID, JAVA_TYPE_CAP, OCTAVE_ID) \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1441 cls = jni_env->FindClass (JAVA_ID); \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1442 if (jni_env->IsInstanceOf (jobj, cls)) \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1443 { \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1444 const JAVA_TYPE ## Array jarr = reinterpret_cast<JAVA_TYPE ## Array> (jobj); \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1445 const jsize len = jni_env->GetArrayLength (jarr); \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1446 OCTAVE_ID ## NDArray d (dim_vector (len, 1)); \
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1447 JAVA_TYPE *buffer = reinterpret_cast<JAVA_TYPE *> (d.fortran_vec ()); \
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1448 jni_env->Get ## JAVA_TYPE_CAP ## ArrayRegion (jarr, 0, len, buffer); \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1449 retval = d; \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1450 break; \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1451 }
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1452
20254
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1453 BOX_PRIMITIVE_ARRAY (jdouble, "[D", Double, )
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1454 BOX_PRIMITIVE_ARRAY (jboolean, "[Z", Boolean, bool)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1455 BOX_PRIMITIVE_ARRAY (jfloat, "[F", Float, Float)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1456 BOX_PRIMITIVE_ARRAY (jchar, "[C", Char, char)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1457 BOX_PRIMITIVE_ARRAY (jbyte, "[B", Byte, int8)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1458 BOX_PRIMITIVE_ARRAY (jshort, "[S", Short, int16)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1459 BOX_PRIMITIVE_ARRAY (jint, "[I", Int, int32)
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1460 BOX_PRIMITIVE_ARRAY (jlong, "[J", Long, int64)
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1461
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1462 #undef BOX_PRIMITIVE_ARRAY
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1463
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1464 if (Vjava_matrix_autoconversion)
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1465 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1466 cls = find_octave_class (jni_env, "org/octave/Matrix");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1467
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1468 if (jni_env->IsInstanceOf (jobj, cls))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1469 {
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1470 jmethodID mID = jni_env->GetMethodID (cls, "getDims", "()[I");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1471 jintArray_ref iv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1472 reinterpret_cast<jintArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1473 (jni_env->CallObjectMethod (jobj, mID)));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1474 jint *iv_data = jni_env->GetIntArrayElements (jintArray (iv),
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1475 nullptr);
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1476 dim_vector dims;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1477 dims.resize (jni_env->GetArrayLength (jintArray (iv)));
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1478
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1479 for (int i = 0; i < dims.ndims (); i++)
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1480 dims(i) = iv_data[i];
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1481
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1482 jni_env->ReleaseIntArrayElements (jintArray (iv), iv_data, 0);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1483 mID = jni_env->GetMethodID (cls, "getClassName",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1484 "()Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1485 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1486 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1487 (jni_env->CallObjectMethod (jobj, mID)));
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1488
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1489 std::string s = jstring_to_string (jni_env, js);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1490
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1491 if (s == "double")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1492 {
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1493 NDArray m (dims);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1494 mID = jni_env->GetMethodID (cls, "toDouble", "()[D");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1495 jdoubleArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1496 reinterpret_cast<jdoubleArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1497 (jni_env->CallObjectMethod (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1498 mID)));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1499 jni_env->GetDoubleArrayRegion (dv, 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1500 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1501 retval = m;
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1502 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1503 }
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1504 else if (s == "byte")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1505 {
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1506 if (Vjava_unsigned_autoconversion)
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1507 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1508 uint8NDArray m (dims);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1509 mID = jni_env->GetMethodID (cls, "toByte", "()[B");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1510 jbyteArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1511 reinterpret_cast<jbyteArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1512 (jni_env->CallObjectMethod (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1513 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1514 jni_env->GetByteArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1515 reinterpret_cast<jbyte *>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1516 (m.fortran_vec ()));
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1517 retval = m;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1518 break;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1519 }
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1520 else
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1521 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1522 int8NDArray m (dims);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1523 mID = jni_env->GetMethodID (cls, "toByte", "()[B");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1524 jbyteArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1525 reinterpret_cast<jbyteArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1526 (jni_env->CallObjectMethod (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1527 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1528 jni_env->GetByteArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1529 reinterpret_cast<jbyte *>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1530 (m.fortran_vec ()));
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1531 retval = m;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1532 break;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1533 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1534 }
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1535 else if (s == "integer")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1536 {
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1537 if (Vjava_unsigned_autoconversion)
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1538 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1539 uint32NDArray m (dims);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1540 mID = jni_env->GetMethodID (cls, "toInt", "()[I");
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1541 jintArray_ref dv (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1542 reinterpret_cast<jintArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1543 (jni_env->CallObjectMethod (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1544 mID)));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1545 jni_env->GetIntArrayRegion (dv, 0, m.numel (),
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1546 reinterpret_cast<jint *>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1547 (m.fortran_vec ()));
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1548 retval = m;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1549 break;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1550 }
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1551 else
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1552 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1553 int32NDArray m (dims);
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1554 mID = jni_env->GetMethodID (cls, "toInt", "()[I");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1555 jintArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1556 reinterpret_cast<jintArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1557 (jni_env->CallObjectMethod (jobj,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1558 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1559 jni_env->GetIntArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1560 reinterpret_cast<jint *>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1561 (m.fortran_vec ()));
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1562 retval = m;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1563 break;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1564 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1565 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1566 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1567 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1568
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
1569 cls = find_octave_class (jni_env, "org/octave/OctaveReference");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1570 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1571 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1572 jmethodID mID = jni_env->GetMethodID (cls, "getID", "()I");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1573 int ID = jni_env->CallIntMethod (jobj, mID);
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25305
diff changeset
1574 auto it = octave_ref_map.find (ID);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1575
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1576 if (it != octave_ref_map.end ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1577 retval = it->second;
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1578 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1579 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1580
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1581 // No suitable class found. Return a generic octave_java object.
15821
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1582 retval = octave_value (new octave_java (jobj, jcls));
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1583 break;
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1584 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1585
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1586 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1587 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1588
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1589 static octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1590 box_more (JNIEnv *jni_env, void *jobj_arg, void *jcls_arg)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1591 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1592 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1593 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1594
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1595 octave_value retval = box (jni_env, jobj, jcls);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1596
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
1597 if (retval.isjava ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1598 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1599 retval = octave_value ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1600
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1601 jclass_ref cls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1602
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1603 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1604 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1605 cls = jni_env->FindClass ("[D");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1606
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1607 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1608 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1609 jdoubleArray jarr = reinterpret_cast<jdoubleArray> (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1610 int len = jni_env->GetArrayLength (jarr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1611
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1612 if (len > 0)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1613 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1614 Matrix m (1, len);
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1615 jni_env->GetDoubleArrayRegion (jarr, 0, len,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
1616 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1617 retval = m;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1618 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1619 else
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1620 retval = Matrix ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1621 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1622 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1623
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1624 if (retval.is_undefined ())
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1625 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1626 cls = jni_env->FindClass ("[[D");
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1627
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1628 if (jni_env->IsInstanceOf (jobj, cls))
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1629 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1630 jobjectArray jarr = reinterpret_cast<jobjectArray> (jobj);
18100
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17898
diff changeset
1631 int rows = jni_env->GetArrayLength (jarr);
6a71e5030df5 Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents: 17898
diff changeset
1632 int cols = 0;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1633
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1634 if (rows > 0)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1635 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1636 Matrix m;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1637
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1638 for (int r = 0; r < rows; r++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1639 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1640 jdoubleArray_ref row (jni_env,
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1641 reinterpret_cast<jdoubleArray>
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1642 (jni_env->GetObjectArrayElement
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1643 (jarr, r)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1644
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
1645 if (m.isempty ())
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1646 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1647 cols = jni_env->GetArrayLength (row);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1648 m.resize (cols, rows);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1649 }
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1650 jni_env->GetDoubleArrayRegion
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1651 (row, 0, cols, m.fortran_vec () + r * cols);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1652 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1653 retval = m.transpose ();
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1654 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1655 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1656 retval = Matrix ();
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1657 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1658 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1659
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1660 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1661 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1662 cls = jni_env->FindClass ("[Ljava/lang/String;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1663
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1664 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1665 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1666 jobjectArray jarr = reinterpret_cast<jobjectArray> (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1667 int len = jni_env->GetArrayLength (jarr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1668 Cell m (len, 1);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1669
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1670 for (int i = 0; i < len; i++)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1671 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1672 jstring_ref js (jni_env,
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1673 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1674 (jni_env->GetObjectArrayElement (jarr, i)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1675 m(i) = jstring_to_string (jni_env, js);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1676 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1677
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1678 retval = m;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1679 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1680 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1681 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1682
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1683 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1684 retval = octave_value (new octave_java (jobj, jcls));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1685
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1686 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1687
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1688 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1689 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1690
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1691 static bool
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1692 unbox (JNIEnv *jni_env, const octave_value& val, jobject_ref& jobj,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1693 jclass_ref& jcls)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1694 {
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1695 bool found = true;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1696
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
1697 if (val.isjava ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1698 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1699 octave_java *ovj = TO_JAVA (val);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1700 jobj = TO_JOBJECT (ovj->to_java ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1701 jobj.detach ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1702 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1703 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1704 else if (val.is_string ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1705 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1706 std::string s = val.string_value ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1707
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1708 jobj = jni_env->NewStringUTF (s.c_str ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1709 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1710 }
23575
e95738a119da maint: Deprecate is_cellstr and replace with iscellstr.
Rik <rik@octave.org>
parents: 23573
diff changeset
1711 else if (val.iscellstr ())
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1712 {
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1713 const Array<std::string> str_arr = val.cellstr_value ();
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1714 const octave_idx_type n = str_arr.numel ();
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1715
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1716 jclass_ref scls (jni_env, jni_env->FindClass ("java/lang/String"));
23459
ddcbf10c8c39 maint: Use C++11 nullptr rather than 0 or NULL for remaining instances in code.
Rik <rik@octave.org>
parents: 23457
diff changeset
1717 jobjectArray array = jni_env->NewObjectArray (n, scls, nullptr);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1718
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1719 for (octave_idx_type i = 0; i < n; i++)
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1720 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1721 jstring_ref jstr (jni_env, jni_env->NewStringUTF
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1722 (str_arr(i).c_str ()));
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1723 jni_env->SetObjectArrayElement (array, i, jstr);
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1724 }
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1725
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1726 jobj = array;
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1727 jcls = jni_env->GetObjectClass (jobj);
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1728 }
23592
80e3bfb7bd5a maint: Deprecate is_vector and replace with isvector.
Rik <rik@octave.org>
parents: 23585
diff changeset
1729 else if (val.numel () > 1 && val.dims ().isvector ())
20122
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1730 {
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1731 // FIXME: Is there any way to avoid code duplication here without
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1732 // using a macro?
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1733
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1734 #define UNBOX_PRIMITIVE_ARRAY(METHOD_T, OCTAVE_T, JAVA_T, JAVA_T_CAP) \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1735 do \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1736 { \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1737 const OCTAVE_T ## NDArray v = val.METHOD_T ## array_value (); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1738 JAVA_T ## Array jarr = jni_env->New ## JAVA_T_CAP ## Array (v.numel ()); \
23447
db1fdf4384dd maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents: 23446
diff changeset
1739 const JAVA_T *jv = reinterpret_cast<const JAVA_T *> (v.data ()); \
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1740 jni_env->Set ## JAVA_T_CAP ## ArrayRegion (jarr, 0, v.numel (), jv); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1741 jobj = reinterpret_cast<jobject> (jarr); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1742 jcls = jni_env->GetObjectClass (jobj); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1743 } \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1744 while (0)
20122
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1745
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1746 // Note that we do NOT handle char here because they are unboxed
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1747 // into a String[], not into a char array
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1748
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1749 if (val.is_double_type ())
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1750 UNBOX_PRIMITIVE_ARRAY (,, jdouble, Double);
23579
c20a0fa91c0c maint: Deprecate is_bool_type and replace with islogical.
Rik <rik@octave.org>
parents: 23578
diff changeset
1751 else if (val.islogical ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1752 UNBOX_PRIMITIVE_ARRAY (bool_, bool, jboolean, Boolean);
23585
570170b6eb09 maint: Deprecate is_float_type and replace with isfloat.
Rik <rik@octave.org>
parents: 23582
diff changeset
1753 else if (val.isfloat ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1754 UNBOX_PRIMITIVE_ARRAY (float_, Float, jfloat, Float);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1755 else if (val.is_int8_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1756 UNBOX_PRIMITIVE_ARRAY (int8_, int8, jbyte, Byte);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1757 else if (val.is_uint8_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1758 UNBOX_PRIMITIVE_ARRAY (uint8_, uint8, jbyte, Byte);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1759 else if (val.is_int16_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1760 UNBOX_PRIMITIVE_ARRAY (int16_, int16, jshort, Short);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1761 else if (val.is_uint16_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1762 UNBOX_PRIMITIVE_ARRAY (uint16_, uint16, jshort, Short);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1763 else if (val.is_int32_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1764 UNBOX_PRIMITIVE_ARRAY (int32_, int32, jint, Int);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1765 else if (val.is_uint32_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1766 UNBOX_PRIMITIVE_ARRAY (uint32_, uint32, jint, Int);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1767 else if (val.is_int64_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1768 UNBOX_PRIMITIVE_ARRAY (int64_, int64, jlong, Long);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1769 else if (val.is_uint64_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1770 UNBOX_PRIMITIVE_ARRAY (uint64_, uint64, jlong, Long);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1771
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1772 #undef UNBOX_PRIMITIVE_ARRAY
20122
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1773 }
20123
8261c4a11250 Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20122
diff changeset
1774 else if (val.is_real_scalar () || val.is_bool_scalar ())
15822
e7d9db9531d1 Add conversion for Octave integer and single classes to Java int and float classes.
Rik <rik@octave.org>
parents: 15821
diff changeset
1775 {
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1776 // FIXME: Is there any way to avoid code duplication here without
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1777 // using a macro?
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1778
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1779 #define UNBOX_PRIMITIVE_SCALAR(OCTAVE_T, METHOD_T, JAVA_T, JAVA_CON) \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1780 do \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1781 { \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1782 const OCTAVE_T ov = val.METHOD_T ## _value (); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1783 jclass_ref dcls (jni_env, jni_env->FindClass (JAVA_T)); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1784 const jfieldID fid = jni_env->GetStaticFieldID (dcls, "TYPE", "Ljava/lang/Class;"); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1785 const jmethodID mid = jni_env->GetMethodID (dcls, "<init>", JAVA_CON); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1786 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (dcls, fid)); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1787 jobj = jni_env->NewObject (dcls, mid, ov); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1788 } \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1789 while (0)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1790
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1791 if (val.is_double_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1792 UNBOX_PRIMITIVE_SCALAR (double, double, "java/lang/Double", "(D)V");
23579
c20a0fa91c0c maint: Deprecate is_bool_type and replace with islogical.
Rik <rik@octave.org>
parents: 23578
diff changeset
1793 else if (val.islogical ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1794 UNBOX_PRIMITIVE_SCALAR (bool, bool, "java/lang/Boolean", "(Z)V");
23585
570170b6eb09 maint: Deprecate is_float_type and replace with isfloat.
Rik <rik@octave.org>
parents: 23582
diff changeset
1795 else if (val.isfloat ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1796 UNBOX_PRIMITIVE_SCALAR (float, float, "java/lang/Float", "(F)V");
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1797 else if (val.is_int8_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1798 UNBOX_PRIMITIVE_SCALAR (int8_t, int8_scalar, "java/lang/Byte", "(B)V");
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1799 else if (val.is_uint8_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1800 UNBOX_PRIMITIVE_SCALAR (uint8_t, uint8_scalar, "java/lang/Byte", "(B)V");
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1801 else if (val.is_int16_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1802 UNBOX_PRIMITIVE_SCALAR (int16_t, int16_scalar, "java/lang/Short", "(S)V");
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1803 else if (val.is_uint16_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1804 UNBOX_PRIMITIVE_SCALAR (uint16_t, uint16_scalar, "java/lang/Short", "(S)V");
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1805 else if (val.is_int32_type ())
21823
49d999dc443f maint: Periodic merge of stable to default.
Mike Miller <mtmiller@octave.org>
parents: 21781 21822
diff changeset
1806 UNBOX_PRIMITIVE_SCALAR (int32_t, int32_scalar, "java/lang/Integer", "(I)V");
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1807 else if (val.is_uint32_type ())
21823
49d999dc443f maint: Periodic merge of stable to default.
Mike Miller <mtmiller@octave.org>
parents: 21781 21822
diff changeset
1808 UNBOX_PRIMITIVE_SCALAR (uint32_t, uint32_scalar, "java/lang/Integer", "(I)V");
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1809 else if (val.is_int64_type ())
21823
49d999dc443f maint: Periodic merge of stable to default.
Mike Miller <mtmiller@octave.org>
parents: 21781 21822
diff changeset
1810 UNBOX_PRIMITIVE_SCALAR (int64_t, int64_scalar, "java/lang/Long", "(J)V");
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1811 else if (val.is_uint64_type ())
21823
49d999dc443f maint: Periodic merge of stable to default.
Mike Miller <mtmiller@octave.org>
parents: 21781 21822
diff changeset
1812 UNBOX_PRIMITIVE_SCALAR (uint64_t, uint64_scalar, "java/lang/Long", "(J)V");
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1813
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1814 #undef UNBOX_PRIMITIVE_SCALAR
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
1815 }
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
1816 else if (val.isempty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1817 {
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1818 jobj = nullptr;
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1819 jcls = nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1820 //jcls = jni_env->FindClass ("java/lang/Object");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1821 }
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20946
diff changeset
1822 else if (! Vjava_matrix_autoconversion
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1823 && ((val.is_real_matrix ()
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1824 && (val.rows () == 1 || val.columns () == 1))
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1825 || val.is_range ()))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1826 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1827 Matrix m = val.matrix_value ();
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1828 jdoubleArray dv = jni_env->NewDoubleArray (m.numel ());
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1829 jni_env->SetDoubleArrayRegion (dv, 0, m.numel (), m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1830 jobj = dv;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1831 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1832 }
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
1833 else if (Vjava_matrix_autoconversion
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1834 && (val.is_matrix_type () || val.is_range ())
23582
0cc2011d800e maint: Deprecate is_real_type and replace with isreal.
Rik <rik@octave.org>
parents: 23579
diff changeset
1835 && val.isreal ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1836 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1837 jclass_ref mcls (jni_env, find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1838 "org/octave/Matrix"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1839 dim_vector dims = val.dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1840 jintArray_ref iv (jni_env, jni_env->NewIntArray (dims.ndims ()));
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1841 jint *iv_data = jni_env->GetIntArrayElements (jintArray (iv), nullptr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1842
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1843 for (int i = 0; i < dims.ndims (); i++)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1844 iv_data[i] = dims(i);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1845
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1846 jni_env->ReleaseIntArrayElements (jintArray (iv), iv_data, 0);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1847
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1848 if (val.is_double_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1849 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1850 NDArray m = val.array_value ();
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1851 jdoubleArray_ref dv (jni_env, jni_env->NewDoubleArray (m.numel ()));
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1852 jni_env->SetDoubleArrayRegion (jdoubleArray (dv), 0, m.numel (),
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1853 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1854 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([D[I)V");
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1855 jobj = jni_env->NewObject (jclass (mcls), mID, jdoubleArray (dv),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1856 jintArray (iv));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1857 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1858 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1859 else if (val.is_int8_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1860 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1861 int8NDArray m = val.int8_array_value ();
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1862 jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.numel ()));
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1863 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1864 reinterpret_cast<jbyte *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1865 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1866 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1867 jobj = jni_env->NewObject
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1868 (jclass (mcls), mID, jbyteArray (bv), jintArray (iv));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1869 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1870 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1871 else if (val.is_uint8_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1872 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1873 uint8NDArray m = val.uint8_array_value ();
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1874 jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.numel ()));
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1875 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1876 reinterpret_cast<jbyte *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1877 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1878 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1879 jobj = jni_env->NewObject
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1880 (jclass (mcls), mID, jbyteArray (bv), jintArray (iv));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1881 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1882 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1883 else if (val.is_int32_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1884 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1885 int32NDArray m = val.int32_array_value ();
20232
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1886 jintArray_ref v (jni_env, jni_env->NewIntArray (m.numel ()));
a9574e3c6e9e Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20163
diff changeset
1887 jni_env->SetIntArrayRegion (jintArray (v), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1888 reinterpret_cast<jint *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1889 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1890 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([I[I)V");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1891 jobj = jni_env->NewObject
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1892 (jclass (mcls), mID, jintArray (v), jintArray (iv));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1893 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1894 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1895 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1896 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1897 error ("cannot convert matrix of type '%s'",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1898 val.class_name ().c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1899 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1900 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1901 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1902 {
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
1903 jclass rcls = find_octave_class (jni_env, "org/octave/OctaveReference");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1904 jmethodID mID = jni_env->GetMethodID (rcls, "<init>", "(I)V");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1905 int ID = octave_java_refcount++;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1906
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1907 jobj = jni_env->NewObject (rcls, mID, ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1908 jcls = rcls;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1909 octave_ref_map[ID] = val;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1910 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1911
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1912 return found;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1913 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1914
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1915 static bool
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1916 unbox (JNIEnv *jni_env, const octave_value_list& args,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1917 jobjectArray_ref& jobjs, jobjectArray_ref& jclss)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1918 {
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1919 bool found = true;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1920
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1921 jclass_ref ocls (jni_env, jni_env->FindClass ("java/lang/Object"));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1922 jclass_ref ccls (jni_env, jni_env->FindClass ("java/lang/Class"));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1923
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1924 if (! jobjs)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1925 jobjs = jni_env->NewObjectArray (args.length (), ocls, nullptr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1926
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1927 if (! jclss)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1928 jclss = jni_env->NewObjectArray (args.length (), ccls, nullptr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1929
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1930 for (int i = 0; i < args.length (); i++)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1931 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1932 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1933 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1934
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1935 found = unbox (jni_env, args(i), jobj, jcls);
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1936 if (! found)
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1937 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1938
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1939 jni_env->SetObjectArrayElement (jobjs, i, jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1940 jni_env->SetObjectArrayElement (jclss, i, jcls);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1941 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1942
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1943 return found;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1944 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1945
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1946 //! Returns the id of the current thread.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1947 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1948 //! @param jni_env The current environment or @c nullptr.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1949 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1950 //! @returns The id of the current thread or -1 otherwise. The latter happens
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1951 //! if @c jni_env is @c nullptr, for example.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1952
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1953 static long
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1954 get_current_thread_ID (JNIEnv *jni_env)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1955 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1956 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1957 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1958 // Call Java method static Thread java.lang.Thread.currentThread().
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1959 jclass_ref cls (jni_env, jni_env->FindClass ("java/lang/Thread"));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1960 jmethodID mID = jni_env->GetStaticMethodID (cls, "currentThread",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1961 "()Ljava/lang/Thread;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1962 jobject_ref jthread (jni_env, jni_env->CallStaticObjectMethod (cls, mID));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1963
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1964 if (jthread)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1965 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1966 // Call Java method long java.lang.Thread.getId().
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1967 jclass_ref jth_cls (jni_env, jni_env->GetObjectClass (jthread));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1968 mID = jni_env->GetMethodID (jth_cls, "getId", "()J");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1969 long result = jni_env->CallLongMethod (jthread, mID);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1970 return result;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1971 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1972 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1973
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1974 return -1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1975 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1976
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1977 //! Run the java method @c org.octave.Octave.checkPendingAction().
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1978 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1979 //! @returns 0 in any case for good reason.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1980
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1981 static int
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1982 java_event_hook (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1983 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1984 JNIEnv *current_env = thread_jni_env ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1985
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1986 if (current_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1987 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1988 // Invoke static void org.octave.Octave.checkPendingAction().
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1989 jclass_ref cls (current_env, find_octave_class (current_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1990 "org/octave/Octave"));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1991 jmethodID mID = current_env->GetStaticMethodID
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
1992 (cls, "checkPendingAction", "()V");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1993 current_env->CallStaticVoidMethod (cls, mID);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1994
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1995 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1996 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1997
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1998 return 0;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1999 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2000
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2001 //! Initialize java including the virtual machine (jvm) if necessary.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2002 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2003 //! Initializes the fields #jvm, #jvm_attached, #jvm_lib, and
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2004 //! #octave_thread_ID. To ensure that java is initialized, this method is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2005 //! used as part of octave functions @c javaObject, @c javaMethod,
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
2006 //! @c __java_get__, @c __java_set__, and @c __java2mat__.
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2007
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2008 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2009 initialize_java (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2010 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2011 if (! jvm)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2012 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2013 try
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2014 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2015 initialize_jvm ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2016
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2017 JNIEnv *current_env = thread_jni_env ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2018
21748
176536b15d68 use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents: 21745
diff changeset
2019 octave::command_editor::add_event_hook (java_event_hook);
15754
bf77f7f66bdf register octave_java type at Octave startup
John W. Eaton <jwe@octave.org>
parents: 15752
diff changeset
2020
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2021 octave_thread_ID = get_current_thread_ID (current_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2022 }
29163
8f67ad8b3103 maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents: 29007
diff changeset
2023 catch (const std::string msg)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2024 {
26149
242aa7b2c783 Silence unnecessary warnings about security-format (bug #55046).
Rik <rik@octave.org>
parents: 26113
diff changeset
2025 error ("%s", msg.c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2026 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2027
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2028 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2029 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2030 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2031
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2032 JNIEXPORT jboolean JNICALL
30896
c9788d7f6e65 maint: Use "fcn" as preferred abbreviation for "function" in libinterp/.
Rik <rik@octave.org>
parents: 30888
diff changeset
2033 Java_org_octave_Octave_call (JNIEnv *env, jclass, jstring fcnName,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2034 jobjectArray argin, jobjectArray argout)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2035 {
30896
c9788d7f6e65 maint: Use "fcn" as preferred abbreviation for "function" in libinterp/.
Rik <rik@octave.org>
parents: 30888
diff changeset
2036 std::string fname = jstring_to_string (env, fcnName);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2037
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2038 int nargout = env->GetArrayLength (argout);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2039 int nargin = env->GetArrayLength (argin);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2040
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2041 octave_value_list varargin, varargout;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2042
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2043 for (int i = 0; i < nargin; i++)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2044 varargin(i) = box (env, env->GetObjectArrayElement (argin, i), nullptr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2045
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
2046 varargout = octave::feval (fname, varargin, nargout);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2047
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
2048 jobjectArray_ref out_objs (env, argout), out_clss (env);
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
2049 out_objs.detach ();
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
2050 return unbox (env, varargout, out_objs, out_clss);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2051 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2052
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2053 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2054 Java_org_octave_OctaveReference_doFinalize (JNIEnv *, jclass, jint ID)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2055 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2056 octave_ref_map.erase (ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2057 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2058
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2059 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2060 Java_org_octave_Octave_doInvoke (JNIEnv *env, jclass, jint ID,
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2061 jobjectArray args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2062 {
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25305
diff changeset
2063 auto it = octave_ref_map.find (ID);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2064
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2065 if (it != octave_ref_map.end ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2066 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2067 octave_value val = it->second;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2068 int len = env->GetArrayLength (args);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2069 octave_value_list oct_args;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2070
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2071 for (int i = 0; i < len; i++)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2072 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2073 jobject_ref jobj (env, env->GetObjectArrayElement (args, i));
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2074 oct_args(i) = box (env, jobj, nullptr);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2075 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2076
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2077 if (val.is_function_handle ())
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2078 {
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2079 octave_function *fcn = val.function_value ();
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
2080 octave::feval (fcn, oct_args);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2081 }
23576
00e518162fda maint: Deprecate is_cell and replace with iscell.
Rik <rik@octave.org>
parents: 23575
diff changeset
2082 else if (val.iscell () && val.length () > 0
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2083 && (val.rows () == 1 || val.columns () == 1)
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2084 && val.cell_value()(0).is_function_handle ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2085 {
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2086 Cell c = val.cell_value ();
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2087 octave_function *fcn = c(0).function_value ();
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2088
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2089 for (int i=1; i<c.numel (); i++)
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2090 oct_args(len+i-1) = c(i);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2091
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
2092 octave::feval (fcn, oct_args);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2093 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2094 else
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2095 error ("trying to invoke non-invocable object");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2096 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2097 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2098
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2099 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2100 Java_org_octave_Octave_doEvalString (JNIEnv *env, jclass, jstring cmd)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2101 {
31105
670a0d878af1 eliminate WHO arguments from interpreter-private functions
John W. Eaton <jwe@octave.org>
parents: 30896
diff changeset
2102 octave::interpreter& interp = octave::__get_interpreter__ ();
26113
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26009
diff changeset
2103
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2104 std::string s = jstring_to_string (env, cmd);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2105 int pstatus;
26113
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26009
diff changeset
2106 interp.eval_string (s, false, pstatus, 0);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2107 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2108
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2109 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2110 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *env, jclass)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2111 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2112 return (get_current_thread_ID (env) != octave_thread_ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2113 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2114
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2115 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2116
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2117 //! Ctor.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2118
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2119 octave_java::octave_java (void)
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2120 : octave_base_value (), m_java_object (nullptr), m_java_class (nullptr)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2121 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2122 #if ! defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2123
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2124 err_disabled_feature ("Java Objects", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2125
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2126 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2127 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2128
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2129 octave_java::octave_java (const voidptr& jobj, void *jcls)
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2130 : octave_base_value (), m_java_object (nullptr), m_java_class (nullptr)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2131 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2132 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2133
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2134 init (jobj, jcls);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2135
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2136 #else
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2137
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2138 octave_unused_parameter (jobj);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2139 octave_unused_parameter (jcls);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2140
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2141 err_disabled_feature ("Java Objects", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2142
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2143 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2144 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2145
15813
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2146 int octave_java::t_id (-1);
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2147
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2148 const std::string octave_java::t_name ("octave_java");
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2149
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2150 void
24540
46440078d73b don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
2151 octave_java::register_type (octave::type_info& ti)
15813
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2152 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2153 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2154
24540
46440078d73b don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
2155 t_id = ti.register_type (octave_java::t_name, "<unknown>",
46440078d73b don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
2156 octave_value (new octave_java ()));
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2157
24571
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2158 #else
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2159
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2160 octave_unused_parameter (ti);
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2161
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2162 #endif
15813
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2163 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2164
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2165 dim_vector
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2166 octave_java::dims (void) const
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2167 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2168 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2169
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2170 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2171
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2172 if (current_env && m_java_object)
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2173 return compute_array_dimensions (current_env, TO_JOBJECT (m_java_object));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2174 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2175 return dim_vector (1, 1);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2176
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2177 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2178
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2179 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2180 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2181
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2182 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2183
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2184 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2185 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2186
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2187 octave_value_list
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2188 octave_java::subsref (const std::string& type,
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2189 const std::list<octave_value_list>& idx, int nargout)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2190 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2191 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2192
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2193 octave_value_list retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2194 int skip = 1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2195
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2196 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2197
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2198 switch (type[0])
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2199 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2200 case '.':
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2201 if (type.length () > 1 && type[1] == '(')
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2202 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2203 octave_value_list ovl;
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2204 count++;
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
2205 ovl(1) = octave_value (this);
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
2206 ovl(0) = (idx.front ())(0);
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25305
diff changeset
2207 auto it = idx.begin ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2208 ovl.append (*++it);
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2209 retval = octave::FjavaMethod (ovl, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2210 skip++;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2211 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2212 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2213 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2214 octave_value_list ovl;
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2215 count++;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2216 ovl(0) = octave_value (this);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2217 ovl(1) = (idx.front ())(0);
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2218 retval = octave::F__java_get__ (ovl, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2219 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2220 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2221
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2222 case '(':
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2223 if (current_env)
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2224 retval = get_array_elements
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2225 (current_env, TO_JOBJECT (to_java ()), idx.front ());
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2226 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2227
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2228 default:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2229 error ("subsref: Java object cannot be indexed with %c", type[0]);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2230 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2231 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2232
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2233 if (idx.size () > 1 && type.length () > 1)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2234 retval = retval(0).next_subsref (nargout, type, idx, skip);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2235
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2236 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2237
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2238 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2239
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2240 octave_unused_parameter (type);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2241 octave_unused_parameter (idx);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2242 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2243
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2244 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2245 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2246
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2247 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2248
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2249 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2250 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2251
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2252 octave_value
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2253 octave_java::subsasgn (const std::string& type,
21661
1b9a36a66b01 maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents: 21660
diff changeset
2254 const std::list<octave_value_list>& idx,
1b9a36a66b01 maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents: 21660
diff changeset
2255 const octave_value& rhs)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2256 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2257 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2258
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2259 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2260
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2261 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2262
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2263 switch (type[0])
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2264 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2265 case '.':
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2266 if (type.length () == 1)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2267 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2268 // field assignment
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2269 octave_value_list ovl;
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2270 count++;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2271 ovl(0) = octave_value (this);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2272 ovl(1) = (idx.front ())(0);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2273 ovl(2) = rhs;
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
2274 octave::F__java_set__ (ovl);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2275
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2276 count++;
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2277 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2278 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2279 else if (type.length () > 2 && type[1] == '(')
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2280 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2281 std::list<octave_value_list> new_idx;
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25305
diff changeset
2282 auto it = idx.begin ();
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2283 new_idx.push_back (*it++);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2284 new_idx.push_back (*it++);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2285 octave_value_list u = subsref (type.substr (0, 2), new_idx, 1);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2286
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2287 std::list<octave_value_list> next_idx (idx);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2288 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2289 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2290 u(0).subsasgn (type.substr (2), next_idx, rhs);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2291
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2292 count++;
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2293 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2294 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2295 else if (type[1] == '.')
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2296 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2297 octave_value_list u = subsref (type.substr (0, 1), idx, 1);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2298
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2299 std::list<octave_value_list> next_idx (idx);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2300 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2301 u(0).subsasgn (type.substr (1), next_idx, rhs);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2302
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2303 count++;
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2304 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2305 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2306 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2307 error ("invalid indexing/assignment on Java object");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2308 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2309
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2310 case '(':
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2311 if (current_env)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2312 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2313 set_array_elements (current_env, TO_JOBJECT (to_java ()),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2314 idx.front (), rhs);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2315
30139
c789e728d57a Backed out changeset 938794bc82b7
John W. Eaton <jwe@octave.org>
parents: 30137
diff changeset
2316 count++;
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2317 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2318 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2319 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2320
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2321 default:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2322 error ("Java object cannot be indexed with %c", type[0]);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2323 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2324 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2325
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2326 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2327
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2328 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2329
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2330 octave_unused_parameter (type);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2331 octave_unused_parameter (idx);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2332 octave_unused_parameter (rhs);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2333
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2334 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2335 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2336
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2337 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2338
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2339 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2340 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2341
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2342 string_vector
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2343 octave_java::map_keys (void) const
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2344 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2345 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2346
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2347 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2348
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2349 if (current_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2350 return get_invoke_list (current_env, to_java ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2351 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2352 return string_vector ();
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2353
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2354 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2355
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2356 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2357 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2358
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2359 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2360
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2361 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2362 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2363
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2364 octave_value
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2365 octave_java::convert_to_str_internal (bool, bool force, char type) const
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2366 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2367 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2368
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2369 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2370
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2371 if (current_env)
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
2372 return convert_to_string (current_env, TO_JOBJECT (to_java ()), force,
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
2373 type);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2374 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2375 return octave_value ("");
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2376
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2377 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2378
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2379 octave_unused_parameter (force);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2380 octave_unused_parameter (type);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2381
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2382 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2383 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2384
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2385 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2386
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2387 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2388 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2389
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2390 void
18416
bcd71a2531d3 Support disp/display overloading in classdef
Michael Goffioul <michael.goffioul@gmail.com>
parents: 18100
diff changeset
2391 octave_java::print (std::ostream& os, bool)
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2392 {
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2393 print_raw (os);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2394 newline (os);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2395 }
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2396
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2397 void
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2398 octave_java::print_raw (std::ostream& os, bool) const
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2399 {
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2400 os << "<Java object: " << m_java_classname << '>';
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2401 }
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2402
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2403 // FIXME: Need routines to actually save/load java objects through Serialize.
20531
dcfbf4c1c3c8 eliminate trailing whitespace and tabs from sources
John W. Eaton <jwe@octave.org>
parents: 20468
diff changeset
2404 // See bug #42112.
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2405
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2406 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2407 octave_java::save_ascii (std::ostream& /* os */)
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2408 {
20531
dcfbf4c1c3c8 eliminate trailing whitespace and tabs from sources
John W. Eaton <jwe@octave.org>
parents: 20468
diff changeset
2409 warning ("save: unable to save java objects, skipping");
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2410
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2411 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2412 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2413
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2414 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2415 octave_java::load_ascii (std::istream& /* is */)
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2416 {
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2417 // Silently skip over java object that was not saved
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2418 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2419 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2420
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2421 bool
26399
586413770c7f pass save_as_floats by value in octave_value save_binary functions
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
2422 octave_java::save_binary (std::ostream& /* os */, bool /* save_as_floats */)
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2423 {
20531
dcfbf4c1c3c8 eliminate trailing whitespace and tabs from sources
John W. Eaton <jwe@octave.org>
parents: 20468
diff changeset
2424 warning ("save: unable to save java objects, skipping");
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2425
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2426 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2427 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2428
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2429 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2430 octave_java::load_binary (std::istream& /* is */, bool /* swap*/,
21739
c4ab2e54f100 use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents: 21736
diff changeset
2431 octave::mach_info::float_format /* fmt */)
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2432 {
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2433 // Silently skip over java object that was not saved
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2434 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2435 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2436
20468
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2437 bool
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2438 octave_java::save_hdf5 (octave_hdf5_id /* loc_id */, const char * /* name */,
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2439 bool /* save_as_floats */)
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2440 {
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2441 warning ("save: unable to save java objects, skipping");
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2442
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2443 return true;
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2444 }
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2445
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2446 bool
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2447 octave_java::load_hdf5 (octave_hdf5_id /* loc_id */, const char * /* name */)
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2448 {
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2449 // Silently skip object that was not saved
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2450 return true;
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2451 }
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2452
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2453 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2454 octave_java::do_javaMethod (void *jni_env_arg, const std::string& name,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2455 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2456 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2457 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2458
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2459 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2460
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2461 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2462
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2463 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2464 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2465 jobjectArray_ref arg_objs (jni_env), arg_types (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2466 if (unbox (jni_env, args, arg_objs, arg_types))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2467 {
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
2468 jclass_ref helperClass (jni_env, find_octave_class (jni_env, "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2469 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "invokeMethod",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2470 "(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2471 jstring_ref methName (jni_env, jni_env->NewStringUTF (name.c_str ()));
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2472 jobjectArray_ref resObj (jni_env,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2473 reinterpret_cast<jobjectArray> (jni_env->CallStaticObjectMethod (helperClass, mID,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2474 to_java (), jstring (methName), jobjectArray (arg_objs), jobjectArray (arg_types))));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2475 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2476 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2477 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2478 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2479 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2480
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2481 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2482 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2483
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2484 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2485
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2486 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2487
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2488 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2489 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2490 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2491
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2492 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2493 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2494
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2495 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2496
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2497 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2498 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2499
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2500 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2501 octave_java::do_javaMethod (const std::string& name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2502 const octave_value_list& args)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2503 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2504 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2505
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2506 return do_javaMethod (thread_jni_env (), name, args);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2507
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2508 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2509
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2510 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2511 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2512
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2513 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2514 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2515
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2516 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2517
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2518 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2519 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2520
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2521 octave_value
24199
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2522 octave_java::do_javaMethod (void *jni_env_arg,
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2523 const std::string& class_name,
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2524 const std::string& name,
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2525 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2526 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2527 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2528
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2529 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2530
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2531 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2532
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2533 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2534 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2535 jobjectArray_ref arg_objs (jni_env), arg_types (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2536 if (unbox (jni_env, args, arg_objs, arg_types))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2537 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2538 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2539 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2540 "org/octave/ClassHelper"));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2541 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2542 "invokeStaticMethod",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2543 "(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;");
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2544 jstring_ref methName (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2545 jni_env->NewStringUTF (name.c_str ()));
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2546 jstring_ref clsName (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2547 jni_env->NewStringUTF (class_name.c_str ()));
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2548 jobject_ref resObj (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2549 jni_env->CallStaticObjectMethod (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2550 mID,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2551 jstring (clsName),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2552 jstring (methName),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2553 jobjectArray (arg_objs),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2554 jobjectArray (arg_types)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2555 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2556 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2557 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2558 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2559 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2560
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2561 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2562 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2563
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2564 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2565
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2566 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2567
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2568 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2569 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2570 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2571 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2572
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2573 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2574 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2575
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2576 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2577
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2578 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2579 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2580
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2581 octave_value
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2582 octave_java::do_javaMethod (const std::string& class_name,
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2583 const std::string& name,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2584 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2585 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2586 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2587
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2588 return do_javaMethod (thread_jni_env (), class_name, name, args);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2589
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2590 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2591
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2592 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2593 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2594 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2595
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2596 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2597 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2598
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2599 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2600
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2601 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2602 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2603
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2604 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2605 octave_java::do_javaObject (void *jni_env_arg, const std::string& name,
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2606 const octave_value_list& args)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2607 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2608 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2609
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2610 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2611
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2612 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2613
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2614 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2615 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2616 jobjectArray_ref arg_objs (jni_env), arg_types (jni_env);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2617
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2618 if (unbox (jni_env, args, arg_objs, arg_types))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2619 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2620 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2621 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2622 "org/octave/ClassHelper"));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2623 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2624 "invokeConstructor",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2625 "(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Class;)Ljava/lang/Object;");
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2626 jstring_ref clsName (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2627 jni_env->NewStringUTF (name.c_str ()));
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2628 jobject_ref resObj (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2629 jni_env->CallStaticObjectMethod (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2630 mID,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2631 jstring (clsName),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2632 jobjectArray (arg_objs),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2633 jobjectArray (arg_types)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2634
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2635 if (resObj)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2636 retval = octave_value (new octave_java (resObj, nullptr));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2637 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2638 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2639 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2640
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2641 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2642 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2643
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2644 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2645
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2646 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2647
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2648 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2649 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2650 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2651
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2652 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2653 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2654
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2655 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2656
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2657 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2658 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2659
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2660 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2661 octave_java::do_javaObject (const std::string& name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2662 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2663 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2664 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2665
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2666 return do_javaObject (thread_jni_env (), name, args);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2667
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2668 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2669
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2670 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2671 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2672
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2673 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2674 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2675
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2676 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2677
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2678 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2679 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2680
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2681 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2682 octave_java::do_java_get (void *jni_env_arg, const std::string& name)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2683 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2684 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2685
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2686 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2687
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2688 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2689
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2690 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2691 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2692 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2693 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2694 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2695 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "getField",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2696 "(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2697 jstring_ref fName (jni_env, jni_env->NewStringUTF (name.c_str ()));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2698 jobject_ref resObj (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2699 jni_env->CallStaticObjectMethod (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2700 mID,
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2701 to_java (),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2702 jstring (fName)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2703
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2704 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2705 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2706 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2707 retval = check_exception (jni_env);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2708
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2709 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2710 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2711
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2712 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2713
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2714 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2715
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2716 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2717 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2718
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2719 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2720 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2721
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2722 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2723
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2724 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2725 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2726
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2727 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2728 octave_java::do_java_get (const std::string& name)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2729 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2730 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2731
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2732 return do_java_get (thread_jni_env (), name);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2733
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2734 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2735
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2736 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2737
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2738 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2739 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2740
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2741 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2742
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2743 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2744 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2745
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2746 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2747 octave_java::do_java_get (void *jni_env_arg, const std::string& class_name,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2748 const std::string& name)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2749 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2750 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2751
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2752 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2753
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2754 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2755
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2756 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2757 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2758 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2759 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2760 "org/octave/ClassHelper"));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2761 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2762 "getStaticField",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2763 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2764 jstring_ref cName (jni_env, jni_env->NewStringUTF (class_name.c_str ()));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2765 jstring_ref fName (jni_env, jni_env->NewStringUTF (name.c_str ()));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2766 jobject_ref resObj (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2767 jni_env->CallStaticObjectMethod (helperClass, mID,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2768 jstring (cName),
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2769 jstring (fName)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2770 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2771 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2772 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2773 retval = check_exception (jni_env);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2774
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2775 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2776 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2777
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2778 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2779
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2780 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2781
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2782 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2783 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2784 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2785
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2786 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2787 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2788
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2789 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2790
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2791 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2792 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2793
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2794 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2795 octave_java::do_java_get (const std::string& class_name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2796 const std::string& name)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2797 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2798 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2799
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2800 return do_java_get (thread_jni_env (), class_name, name);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2801
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2802 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2803
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2804 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2805 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2806
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2807 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2808 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2809
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2810 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2811
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2812 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2813 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2814
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2815 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2816 octave_java::do_java_set (void *jni_env_arg, const std::string& name,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2817 const octave_value& val)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2818 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2819 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2820
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2821 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2822
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2823 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2824
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2825 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2826 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2827 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2828 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2829
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2830 if (unbox (jni_env, val, jobj, jcls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2831 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2832 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2833 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2834 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2835 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "setField",
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2836 "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2837 jstring_ref fName (jni_env, jni_env->NewStringUTF (name.c_str ()));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2838 jni_env->CallStaticObjectMethod (helperClass, mID, to_java (),
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2839 jstring (fName), jobject (jobj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2840 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2841 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2842
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2843 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2844 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2845
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2846 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2847
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2848 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2849
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2850 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2851 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2852 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2853
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2854 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2855 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2856
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2857 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2858
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2859 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2860 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2861
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2862 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2863 octave_java::do_java_set (const std::string& name, const octave_value& val)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2864 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2865 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2866
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2867 return do_java_set (thread_jni_env (), name, val);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2868
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2869 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2870
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2871 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2872 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2873
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2874 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2875 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2876
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2877 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2878
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2879 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2880 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2881
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2882 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2883 octave_java::do_java_set (void *jni_env_arg, const std::string& class_name,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2884 const std::string& name, const octave_value& val)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2885 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2886 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2887
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2888 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2889
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2890 JNIEnv *jni_env = TO_JNIENV (jni_env_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2891
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2892 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2893 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2894 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2895 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2896
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2897 if (unbox (jni_env, val, jobj, jcls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2898 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2899 jclass_ref helperClass (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2900 find_octave_class (jni_env,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2901 "org/octave/ClassHelper"));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2902 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2903 "setStaticField",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2904 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V");
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2905 jstring_ref cName (jni_env,
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2906 jni_env->NewStringUTF (class_name.c_str ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2907 jstring_ref fName (jni_env, jni_env->NewStringUTF (name.c_str ()));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2908 jni_env->CallStaticObjectMethod (helperClass, mID, jstring (cName),
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2909 jstring (fName), jobject (jobj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2910 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2911 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2912
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2913 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2914 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2915
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2916 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2917
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2918 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2919
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2920 octave_unused_parameter (jni_env_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2921 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2922 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2923 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2924
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2925 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2926 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2927
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2928 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2929
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2930 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2931 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
2932
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2933 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2934 octave_java::do_java_set (const std::string& class_name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2935 const std::string& name,
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2936 const octave_value& val)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2937 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2938 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2939
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2940 return do_java_set (thread_jni_env (), class_name, name, val);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2941
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2942 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2943
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2944 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2945 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2946 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2947
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2948 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2949 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2950
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2951 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2952
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2953 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2954 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
2955
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2956 void
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2957 octave_java::init (void *jobj_arg, void *jcls_arg)
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2958 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2959 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2960
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2961 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2962 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2963
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2964 JNIEnv *current_env = thread_jni_env ();
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2965
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2966 if (current_env)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2967 {
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2968 if (jobj)
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2969 m_java_object = current_env->NewGlobalRef (jobj);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2970
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2971 if (jcls)
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2972 m_java_class = current_env->NewGlobalRef (jcls);
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2973 else if (m_java_object)
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2974 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2975 jclass_ref ocls (current_env,
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2976 current_env->GetObjectClass(TO_JOBJECT (m_java_object)));
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2977 m_java_class = current_env->NewGlobalRef (jclass (ocls));
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2978 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2979
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2980 if (m_java_class)
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2981 {
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2982 jclass_ref clsCls (current_env,
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2983 current_env->GetObjectClass (TO_JCLASS (m_java_class)));
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2984 jmethodID mID = current_env->GetMethodID (clsCls,
31607
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2985 "getCanonicalName",
aac27ad79be6 maint: Re-indent code after switch to using namespace macros.
Rik <rik@octave.org>
parents: 31605
diff changeset
2986 "()Ljava/lang/String;");
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
2987 jobject_ref resObj (current_env,
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2988 current_env->CallObjectMethod (TO_JCLASS (m_java_class), mID));
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
2989 m_java_classname = jstring_to_string (current_env, resObj);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2990 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2991 }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2992
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2993 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2994
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2995 octave_unused_parameter (jobj_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2996 octave_unused_parameter (jcls_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2997
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2998 // This shouldn't happen because construction of octave_java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2999 // objects is supposed to be impossible if Java is not available.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3000
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3001 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3002
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3003 #endif
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3004 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3005
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3006 void
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3007 octave_java::release (void)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3008 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3009 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3010
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3011 JNIEnv *current_env = thread_jni_env ();
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3012
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3013 if (current_env)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3014 {
30045
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3015 if (m_java_object)
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3016 current_env->DeleteGlobalRef (TO_JOBJECT (m_java_object));
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3017
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3018 if (m_java_class)
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3019 current_env->DeleteGlobalRef (TO_JCLASS (m_java_class));
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3020
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3021 m_java_object = nullptr;
849bd0f1129c maint: use "m_" prefix for member variables of octave_value classes for Java.
Rik <rik@octave.org>
parents: 30001
diff changeset
3022 m_java_class = nullptr;
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3023 }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3024
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3025 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3026
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
3027 // This shouldn't happen because construction of octave_java objects is
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
3028 // supposed to be impossible if Java is not available.
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3029
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3030 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3031
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3032 #endif
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3033 }
15806
01d4f742d75d doc: Re-organize and improve Java Interface documentation.
Rik <rik@octave.org>
parents: 15800
diff changeset
3034
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
3035 OCTAVE_BEGIN_NAMESPACE(octave)
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3036
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
3037 // DEFUN blocks below must be outside of HAVE_JAVA block so that documentation
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
3038 // strings are always available, even when functions are not.
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3039
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3040 DEFUN (__java_init__, , ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3041 doc: /* -*- texinfo -*-
30888
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3042 @deftypefn {} {@var{status} =} __java_init__ ()
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3043 Internal function used @strong{only} when debugging the Java interface.
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3044
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3045 This function will directly call @code{initialize_java} to create an instance
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3046 of a JVM.
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3047
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3048 The return variable @var{status} is 1 if the Java interface has been created,
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3049 and 0 otherwise.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3050 @end deftypefn */)
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3051 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3052 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3053
24141
af577de75e68 maint: libinterp/octave-value/ov-java.cc: Clean up code. No function changes.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24140
diff changeset
3054 octave_value retval = 0;
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3055
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3056 initialize_java ();
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3057
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3058 retval = 1;
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3059
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3060 return retval;
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3061
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3062 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3063
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3064 err_disabled_feature ("__java_init__", "Java");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3065
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3066 #endif
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3067 }
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3068
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3069 DEFUN (__java_exit__, , ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3070 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3071 @deftypefn {} {} __java_exit__ ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3072 Internal function used @strong{only} when debugging Java interface.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3073
30888
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3074 Function will directly call terminate_jvm to destroy the current JVM instance.
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3075 @end deftypefn */)
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3076 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3077 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3078
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3079 terminate_jvm ();
20957
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
3080
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
3081 return ovl ();
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
3082
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3083 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3084
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3085 err_disabled_feature ("__java_exit__", "Java");
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3086
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3087 #endif
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3088 }
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
3089
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3090 DEFUN (javaObject, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3091 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3092 @deftypefn {} {@var{jobj} =} javaObject (@var{classname})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3093 @deftypefnx {} {@var{jobj} =} javaObject (@var{classname}, @var{arg1}, @dots{})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3094 Create a Java object of class @var{classsname}, by calling the class
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3095 constructor with the arguments @var{arg1}, @dots{}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3096
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3097 The first example below creates an uninitialized object, while the second
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3098 example supplies an initial argument to the constructor.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3099
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3100 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3101 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3102 x = javaObject ("java.lang.StringBuffer")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3103 x = javaObject ("java.lang.StringBuffer", "Initial string")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3104 @end group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3105 @end example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3106
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3107 @seealso{javaMethod, javaArray}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3108 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3109 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3110 #if defined (HAVE_JAVA)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3111
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3112 if (args.length () == 0)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3113 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3114
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3115 std::string classname = args(0).xstring_value ("javaObject: CLASSNAME must be a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3116
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3117 initialize_java ();
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
3118
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3119 JNIEnv *current_env = thread_jni_env ();
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3120
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3121 octave_value_list tmp;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3122 for (int i=1; i<args.length (); i++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3123 tmp(i-1) = args(i);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3124
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3125 return ovl (octave_java::do_javaObject (current_env, classname, tmp));
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3126
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3127 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3128
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3129 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3130
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3131 err_disabled_feature ("javaObject", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3132
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3133 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3134 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3135
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3136 /*
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3137 ## The tests below merely check if javaObject works at all. Whether
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3138 ## it works properly, i.e., creates the right values, is a matter of
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3139 ## Java itself. Create a Short and check if it really is a short, i.e.,
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
3140 ## whether it overflows.
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
3141 %!testif HAVE_JAVA; usejava ("jvm")
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3142 %! assert (javaObject ("java.lang.Short", 40000).doubleValue < 0);
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3143 */
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3144
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3145 DEFUN (javaMethod, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3146 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3147 @deftypefn {} {@var{ret} =} javaMethod (@var{methodname}, @var{obj})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3148 @deftypefnx {} {@var{ret} =} javaMethod (@var{methodname}, @var{obj}, @var{arg1}, @dots{})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3149 Invoke the method @var{methodname} on the Java object @var{obj} with the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3150 arguments @var{arg1}, @dots{}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3151
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3152 For static methods, @var{obj} can be a string representing the fully
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3153 qualified name of the corresponding class.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3154
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3155 When @var{obj} is a regular Java object, structure-like indexing can be
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3156 used as a shortcut syntax. For instance, the two following statements are
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3157 equivalent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3158
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3159 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3160 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3161 ret = javaMethod ("method1", x, 1.0, "a string")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3162 ret = x.method1 (1.0, "a string")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3163 @end group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3164 @end example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3165
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3166 @code{javaMethod} returns the result of the method invocation.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3167
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3168 @seealso{methods, javaObject}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3169 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3170 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3171 #if defined (HAVE_JAVA)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3172
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3173 if (args.length () < 2)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3174 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3175
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3176 std::string methodname = args(0).xstring_value ("javaMethod: METHODNAME must be a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3177
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
3178 initialize_java ();
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
3179
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3180 JNIEnv *current_env = thread_jni_env ();
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3181
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3182 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3183
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3184 octave_value_list tmp;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3185 for (int i=2; i<args.length (); i++)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3186 tmp(i-2) = args(i);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3187
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3188 if (args(1).isjava ())
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3189 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3190 octave_java *jobj = TO_JAVA (args(1));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3191 retval = jobj->do_javaMethod (current_env, methodname, tmp);
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3192 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3193 else if (args(1).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3194 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3195 std::string cls = args(1).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3196 retval = octave_java::do_javaMethod (current_env, cls, methodname, tmp);
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3197 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3198 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3199 error ("javaMethod: OBJ must be a Java object or a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3200
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3201 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3202
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3203 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3204
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3205 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3206
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3207 err_disabled_feature ("javaMethod", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3208
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3209 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3210 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3211
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3212 /*
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
3213 %!testif HAVE_JAVA; usejava ("jvm")
24671
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3214 %! jver = javaMethod ("getProperty", "java.lang.System", "java.version");
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3215 %! jver = strsplit (jver, ".");
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3216 %! if (numel (jver) > 1)
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3217 %! assert (isfinite (str2double (jver{1})));
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3218 %! assert (isfinite (str2double (jver{2})));
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3219 %! else
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3220 %! assert (isfinite (str2double (jver{1})));
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3221 %! endif
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3222 */
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3223
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3224 DEFUN (__java_get__, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3225 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3226 @deftypefn {} {@var{val} =} __java_get__ (@var{obj}, @var{name})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3227 Get the value of the field @var{name} of the Java object @var{obj}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3228
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3229 For static fields, @var{obj} can be a string representing the fully
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3230 qualified name of the corresponding class.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3231
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3232 When @var{obj} is a regular Java object, structure-like indexing can be used
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3233 as a shortcut syntax. For instance, the two following statements are
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3234 equivalent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3235
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3236 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3237 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3238 __java_get__ (x, "field1")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3239 x.field1
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3240 @end group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3241 @end example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3242
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3243 @seealso{__java_set__, javaMethod, javaObject}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3244 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3245 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3246 #if defined (HAVE_JAVA)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3247
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3248 if (args.length () != 2)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3249 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3250
26365
45d5a4ae636b ov-java.cc: Bugfix use xstring_value for extraction
Andreas Weber <octave@josoansi.de>
parents: 26149
diff changeset
3251 std::string name = args(1).xstring_value ("__java_get__: NAME must be a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3252
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3253 initialize_java ();
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3254
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3255 JNIEnv *current_env = thread_jni_env ();
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3256
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3257 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3258
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3259 if (args(0).isjava ())
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3260 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3261 octave_java *jobj = TO_JAVA (args(0));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3262 retval = jobj->do_java_get (current_env, name);
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3263 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3264 else if (args(0).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3265 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3266 std::string cls = args(0).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3267 retval = octave_java::do_java_get (current_env, cls, name);
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3268 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3269 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3270 error ("__java_get__: OBJ must be a Java object or a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3271
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3272 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3273
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3274 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3275
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3276 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3277
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3278 err_disabled_feature ("__java_get__", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3279
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3280 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3281 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3282
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3283 DEFUN (__java_set__, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3284 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3285 @deftypefn {} {@var{obj} =} __java_set__ (@var{obj}, @var{name}, @var{val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3286 Set the value of the field @var{name} of the Java object @var{obj} to
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3287 @var{val}.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3288
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3289 For static fields, @var{obj} can be a string representing the fully
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3290 qualified named of the corresponding Java class.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3291
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3292 When @var{obj} is a regular Java object, structure-like indexing can be
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3293 used as a shortcut syntax. For instance, the two following statements are
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3294 equivalent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3295
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3296 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3297 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3298 __java_set__ (x, "field1", val)
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3299 x.field1 = val
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3300 @end group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3301 @end example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3302
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3303 @seealso{__java_get__, javaMethod, javaObject}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3304 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3305 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3306 #if defined (HAVE_JAVA)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3307
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3308 if (args.length () != 3)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3309 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3310
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3311 std::string name = args(1).xstring_value ("__java_set__: NAME must be a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3312
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3313 initialize_java ();
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3314
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3315 JNIEnv *current_env = thread_jni_env ();
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3316
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3317 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3318
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3319 if (args(0).isjava ())
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3320 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3321 octave_java *jobj = TO_JAVA (args(0));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3322 retval = jobj->do_java_set (current_env, name, args(2));
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3323 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3324 else if (args(0).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3325 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3326 std::string cls = args(0).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3327 retval = octave_java::do_java_set (current_env, cls, name, args(2));
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3328 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3329 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3330 error ("__java_set__: OBJ must be a Java object or a string");
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3331
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3332 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3333
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3334 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3335
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3336 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3337
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3338 err_disabled_feature ("__java_set__", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3339
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3340 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3341 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3342
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
3343 DEFUN (__java2mat__, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3344 doc: /* -*- texinfo -*-
30888
32d2b6604a9f doc: Ensure documentation lists output argument when it exists for functions in libinterp/
Rik <rik@octave.org>
parents: 30588
diff changeset
3345 @deftypefn {} {@var{mat} =} __java2mat__ (@var{javaobj})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3346 Undocumented internal function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3347 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3348 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3349 #if defined (HAVE_JAVA)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3350
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3351 if (args.length () != 1)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3352 print_usage ();
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3353
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3354 initialize_java ();
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3355
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3356 JNIEnv *current_env = thread_jni_env ();
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3357
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3358 octave_value_list retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3359
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3360 if (args(0).isjava ())
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3361 {
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3362 octave_java *jobj = TO_JAVA (args(0));
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
3363 retval = ovl (box_more (current_env, jobj->to_java (), nullptr));
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3364 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3365 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3366 retval = ovl (args(0));
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3367
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3368 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3369
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3370 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3371
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3372 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3373
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
3374 err_disabled_feature ("__java2mat__", "Java");
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3375
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3376 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3377 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3378
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3379 DEFUN (java_matrix_autoconversion, args, nargout,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3380 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3381 @deftypefn {} {@var{val} =} java_matrix_autoconversion ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3382 @deftypefnx {} {@var{old_val} =} java_matrix_autoconversion (@var{new_val})
30588
ed17822e7662 doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents: 30565
diff changeset
3383 @deftypefnx {} {@var{old_val} =} java_matrix_autoconversion (@var{new_val}, "local")
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3384 Query or set the internal variable that controls whether Java arrays are
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3385 automatically converted to Octave matrices.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3386
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3387 The default value is false.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3388
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3389 When called from inside a function with the @qcode{"local"} option, the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3390 variable is changed locally for the function and any subroutines it calls.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3391 The original variable value is restored when exiting the function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3392 @seealso{java_unsigned_autoconversion, debug_java}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3393 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3394 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3395 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3396
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29974
diff changeset
3397 return set_internal_variable (Vjava_matrix_autoconversion, args, nargout,
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29974
diff changeset
3398 "java_matrix_autoconversion");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3399
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3400 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3401
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3402 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3403 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3404
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3405 err_disabled_feature ("java_matrix_autoconversion", "Java");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3406
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3407 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3408 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3409
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3410 DEFUN (java_unsigned_autoconversion, args, nargout,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3411 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3412 @deftypefn {} {@var{val} =} java_unsigned_autoconversion ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3413 @deftypefnx {} {@var{old_val} =} java_unsigned_autoconversion (@var{new_val})
30588
ed17822e7662 doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents: 30565
diff changeset
3414 @deftypefnx {} {@var{old_val} =} java_unsigned_autoconversion (@var{new_val}, "local")
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3415 Query or set the internal variable that controls how integer classes are
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3416 converted when @code{java_matrix_autoconversion} is enabled.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3417
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3418 When enabled, Java arrays of class Byte or Integer are converted to matrices
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3419 of class uint8 or uint32 respectively. The default value is true.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3420
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3421 When called from inside a function with the @qcode{"local"} option, the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3422 variable is changed locally for the function and any subroutines it calls.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3423 The original variable value is restored when exiting the function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3424 @seealso{java_matrix_autoconversion, debug_java}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3425 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3426 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3427 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3428
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29974
diff changeset
3429 return set_internal_variable (Vjava_unsigned_autoconversion, args, nargout,
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29974
diff changeset
3430 "java_unsigned_autoconversion");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3431
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3432 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3433
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3434 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3435 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3436
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3437 err_disabled_feature ("java_unsigned_autoconversion", "Java");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3438
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3439 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3440 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3441
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3442 DEFUN (debug_java, args, nargout,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3443 doc: /* -*- texinfo -*-
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3444 @deftypefn {} {@var{val} =} debug_java ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3445 @deftypefnx {} {@var{old_val} =} debug_java (@var{new_val})
30588
ed17822e7662 doc: Always have a return value for functions which set internal variables (bug #61681)
Rik <rik@octave.org>
parents: 30565
diff changeset
3446 @deftypefnx {} {@var{old_val} =} debug_java (@var{new_val}, "local")
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3447 Query or set the internal variable that determines whether extra debugging
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3448 information regarding the initialization of the JVM and any Java exceptions
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3449 is printed.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3450
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3451 When called from inside a function with the @qcode{"local"} option, the
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3452 variable is changed locally for the function and any subroutines it calls.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3453 The original variable value is restored when exiting the function.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3454 @seealso{java_matrix_autoconversion, java_unsigned_autoconversion}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3455 @end deftypefn */)
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3456 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3457 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3458
30001
428cccc75cc9 move most functions in variables.cc to octave namespace
John W. Eaton <jwe@octave.org>
parents: 29974
diff changeset
3459 return set_internal_variable (Vdebug_java, args, nargout, "debug_java");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3460
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3461 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3462
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3463 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3464 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3465
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3466 err_disabled_feature ("debug_java", "Java");
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3467
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3468 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3469 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
3470
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3471 // Outside of #if defined (HAVE_JAVA) because it is desirable to be able
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3472 // to test for the presence of a Java object without having Java
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3473 // installed.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3474
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3475 DEFUN (isjava, args, ,
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3476 doc: /* -*- texinfo -*-
30559
841a10208c38 doc: Use TF for output variable in documentation for isXXX functions in libinterp/ directory.
Rik <rik@octave.org>
parents: 30346
diff changeset
3477 @deftypefn {} {@var{tf} =} isjava (@var{x})
21966
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3478 Return true if @var{x} is a Java object.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3479 @seealso{class, typeinfo, isa, javaObject}
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3480 @end deftypefn */)
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3481 {
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3482 if (args.length () != 1)
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3483 print_usage ();
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3484
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3485 return ovl (args(0).isjava ());
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3486 }
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3487
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
3488 /*
20152
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3489 ## Check automatic conversion of java primitive arrays into octave types.
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
3490 %!testif HAVE_JAVA; usejava ("jvm")
20152
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3491 %! assert (javaObject ("java.lang.String", "hello").getBytes (),
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3492 %! int8 ([104 101 108 108 111]'));
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3493
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3494 ## Check automatic conversion of octave types into java primitive arrays.
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3495 ## Note that uint8 is casted to int8.
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
3496 %!testif HAVE_JAVA; usejava ("jvm")
20152
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3497 %! assert (javaMethod ("binarySearch", "java.util.Arrays", [90 100 255], 255), 2);
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3498 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 255]), uint8 (255)) < 0);
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3499 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 128]), uint8 (128)) < 0);
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3500 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 127]), uint8 (127)), 2);
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3501 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint16 ([90 100 128]), uint16 (128)), 2);
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3502
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3503 ## Check we can create objects that wrap java literals
23573
1b4f4ec53b4a use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents: 23572
diff changeset
3504 %!testif HAVE_JAVA; usejava ("jvm") <*38821>
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3505 %! assert (class (javaObject ("java.lang.Byte", uint8 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3506 %! "java.lang.Byte");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3507 %! assert (class (javaObject ("java.lang.Byte", int8 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3508 %! "java.lang.Byte");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3509 %! assert (class (javaObject ("java.lang.Short", uint16 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3510 %! "java.lang.Short");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3511 %! assert (class (javaObject ("java.lang.Short", int16 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3512 %! "java.lang.Short");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3513 %! assert (class (javaObject ("java.lang.Integer", uint32 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3514 %! "java.lang.Integer");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3515 %! assert (class (javaObject ("java.lang.Integer", int32 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3516 %! "java.lang.Integer");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3517 %! assert (class (javaObject ("java.lang.Long", uint64 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3518 %! "java.lang.Long");
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3519 %! assert (class (javaObject ("java.lang.Long", int64 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3520 %! "java.lang.Long");
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
3521
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3522 ## More checks of java numeric and boolean class instances
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3523 %!testif HAVE_JAVA; usejava ("jvm")
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3524 %! n = javaObject ("java.lang.Double", 1.35);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3525 %! assert (n.compareTo (1.0), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3526 %! assert (n.compareTo (1.35), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3527 %! assert (n.compareTo (10), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3528 %! assert (n.isInfinite (), false);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3529
28889
a2fbb2074436 ov-java.cc: Add bug number to BIST (bug #51804).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28527
diff changeset
3530 %!testif HAVE_JAVA; usejava ("jvm") <51804>
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3531 %! n = javaObject ("java.lang.Float", 1.35);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3532 %! assert (n.compareTo (1.0), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3533 %! assert (n.compareTo (1.35), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3534 %! assert (n.compareTo (10), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3535 %! assert (n.doubleValue (), 1.35, 1e7);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3536
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3537 %!testif HAVE_JAVA; usejava ("jvm")
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3538 %! n = javaObject ("java.lang.Long", (int64 (1)));
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3539 %! assert (n.compareTo (int64 (0)), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3540 %! assert (n.compareTo (int64 (1)), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3541 %! assert (n.compareTo (int64 (2)), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3542 %! assert (n.toString (), "1");
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3543
24671
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3544 %!testif HAVE_JAVA; usejava ("jvm") <51804>
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3545 %! n = javaObject ("java.lang.Integer", 1.35);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3546 %! assert (n.compareTo (0), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3547 %! assert (n.compareTo (1), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3548 %! assert (n.compareTo (2), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3549
25305
47c803b4b8ae test: tag possible test failure with known bug #51804
Mike Miller <mtmiller@octave.org>
parents: 25139
diff changeset
3550 %!testif HAVE_JAVA; usejava ("jvm") <51804>
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3551 %! n = javaObject ("java.lang.Short", 1.35);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3552 %! assert (n.compareTo (0), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3553 %! assert (n.compareTo (1), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3554 %! assert (n.compareTo (2), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3555
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3556 %!testif HAVE_JAVA; usejava ("jvm")
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3557 %! n = javaObject ("java.lang.Byte", int8 (17));
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3558 %! assert (n.compareTo (int8 (20)), -3);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3559 %! assert (n.compareTo (int8 (10)), 7);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3560 %! assert (n.compareTo (int8 (17)), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3561
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3562 %!testif HAVE_JAVA; usejava ("jvm")
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3563 %! b = javaObject ("java.lang.Boolean", true);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3564 %! assert (b.compareTo (true), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3565 %! assert (b.compareTo (false), 1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3566 %! b = javaObject ("java.lang.Boolean", false);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3567 %! assert (b.compareTo (true), -1);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3568 %! assert (b.compareTo (false), 0);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3569
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3570 ## Test for automatic conversion of specific numeric classes
23573
1b4f4ec53b4a use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents: 23572
diff changeset
3571 %!testif HAVE_JAVA; usejava ("jvm") <*48013>
22203
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3572 %! assert (javaMethod ("valueOf", "java.lang.Byte", int8 (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3573 %! assert (javaMethod ("valueOf", "java.lang.Short", int16 (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3574 %! assert (javaMethod ("valueOf", "java.lang.Integer", int32 (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3575 %! assert (javaMethod ("valueOf", "java.lang.Long", int64 (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3576 %! assert (javaMethod ("valueOf", "java.lang.Float", single (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3577 %! assert (javaMethod ("valueOf", "java.lang.Double", double (1)), 1)
30346
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3578 %! assert (class (javaMethod ("valueOf", "java.math.BigDecimal", double (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3579 %! "java.math.BigDecimal")
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3580 %! assert (class (javaMethod ("valueOf", "java.math.BigInteger", int64 (1))),
91c6288781ba maint: Shorten some long lines in libinterp to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 30139
diff changeset
3581 %! "java.math.BigInteger")
22203
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3582
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3583 ## Automatic conversion from string cell array into String[]
23573
1b4f4ec53b4a use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents: 23572
diff changeset
3584 %!testif HAVE_JAVA; usejava ("jvm") <*45290>
21580
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 21547
diff changeset
3585 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "aaa"), 0);
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 21547
diff changeset
3586 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "zzz"), 3);
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 21547
diff changeset
3587 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "hhh") < 0);
23671
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3588
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3589 ## Test that Octave index syntax allows Java object method calls with args
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3590 %!testif HAVE_JAVA; usejava ("jvm") <*51152>
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3591 %! s = javaObject ("java.lang.String", "Octave");
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3592 %! assert (s.length (), 6)
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3593 %! assert (s.charAt (0), "O")
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3594 %! assert (s.charAt (5), "e")
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3595 %! assert (s.matches ("^Octave$"))
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3596 %! assert (s.startsWith ("Oct"))
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3597 %! ## same tests with Java object as part of another indexing expression
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3598 %! a(1).s = s;
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3599 %! assert (! a(1).s.isEmpty ())
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3600 %! assert (a(1).s.length (), 6)
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3601 %! assert (a(1).s.charAt (0), "O")
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3602 %! assert (a(1).s.charAt (5), "e")
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3603 %! assert (a(1).s.matches ("^Octave$"))
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3604 %! assert (a(1).s.startsWith ("Oct"))
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3605
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3606 ## Check for basic usability of the java awt library
24853
1e207bd05b5d avoid AWT test on OS X (bug #53305)
John W. Eaton <jwe@octave.org>
parents: 24684
diff changeset
3607 ## Skip the test on OS X where we currently have Java 9 and attempting
1e207bd05b5d avoid AWT test on OS X (bug #53305)
John W. Eaton <jwe@octave.org>
parents: 24684
diff changeset
3608 ## to use awt causes Octave to exit with a message about Java not being
1e207bd05b5d avoid AWT test on OS X (bug #53305)
John W. Eaton <jwe@octave.org>
parents: 24684
diff changeset
3609 ## installed (it is) instead of returning false.
1e207bd05b5d avoid AWT test on OS X (bug #53305)
John W. Eaton <jwe@octave.org>
parents: 24684
diff changeset
3610 %!testif HAVE_JAVA; ! ismac () && usejava ("jvm") && usejava ("awt") && have_window_system ()
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3611 %! frame = javaObject ("java.awt.Frame");
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3612 %! frame.setResizable (true);
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3613 %! assert (frame.isResizable ());
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
3614 */
29958
32c3a5805893 move DEFUN and DEFMETHOD functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 29655
diff changeset
3615
31605
e88a07dec498 maint: Use macros to begin/end C++ namespaces.
Rik <rik@octave.org>
parents: 31105
diff changeset
3616 OCTAVE_END_NAMESPACE(octave)