annotate libinterp/octave-value/ov-java.cc @ 25305:47c803b4b8ae stable

test: tag possible test failure with known bug #51804 * ov-java.cc: Tag possible test failure under Oracle Java 7 as known bug.
author Mike Miller <mtmiller@octave.org>
date Tue, 24 Apr 2018 10:43:39 -0700
parents d61f42a392b7
children 3ff9192b676e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
1 /*
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
2
25054
6652d3823428 maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 25041
diff changeset
3 Copyright (C) 2007-2018 Michael Goffioul
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
4
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
5 This file is part of Octave.
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
6
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24199
diff changeset
7 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
8 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24199
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
10 (at your option) any later version.
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
11
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
12 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
13 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22497
diff changeset
15 GNU General Public License for more details.
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
16
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
17 You should have received a copy of the GNU General Public License
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
18 along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24199
diff changeset
19 <https://www.gnu.org/licenses/>.
15746
da26f72408a7 update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents: 15745
diff changeset
20
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 */
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
23
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
24 //! @file ov-java.cc
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
25 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
26 //! 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
27
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21691
diff changeset
28 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21211
diff changeset
29 # include "config.h"
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
30 #endif
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
31
15755
3216dafbbd48 ov-java.cc: Correcty typo HAVE_WINDWOS_H to HAVE_WINDOWS_H
Rik <rik@octave.org>
parents: 15754
diff changeset
32 #if defined (HAVE_WINDOWS_H)
21200
fcac5dbbf9ed maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents: 21042
diff changeset
33 # include <windows.h>
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34 #endif
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 #include <algorithm>
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 #include <map>
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 #include <iostream>
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 #include <fstream>
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
40 #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
41 #include <vector>
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43 #include <clocale>
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
45 #include "Cell.h"
23129
35e3d199527c Replace feval calls with direct call to C++ function (bug #50116).
Rik <rik@octave.org>
parents: 23084
diff changeset
46 #include "builtin-defun-decls.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
47 #include "cmd-edit.h"
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
48 #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
49 #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
50 #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
51 #include "errwarn.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
52 #include "file-ops.h"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
53 #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
54 #include "fpucw-wrappers.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
55 #include "load-path.h"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
56 #include "oct-env.h"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
57 #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
58 #include "ov-java.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
59 #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
60 #include "variables.h"
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
61
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
62 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
63 #include <jni.h>
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
64 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
65
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
66 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
67
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
68 #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
69 #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
70
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
71 #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
72
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
73 typedef jint (JNICALL *JNI_CreateJavaVM_t) (JavaVM **pvm, JNIEnv **penv,
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
74 void *args);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
75
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
76 typedef jint (JNICALL *JNI_GetCreatedJavaVMs_t) (JavaVM **pvm, jsize bufLen,
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
77 jsize *nVMs);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
79 template <typename T>
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
80 class java_local_ref
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
81 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
82 public:
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
83
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
84 java_local_ref (JNIEnv *_env)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
85 : jobj (nullptr), detached (false), env (_env) { }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
86
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
87 java_local_ref (JNIEnv *_env, T obj)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
88 : jobj (obj), detached (false), env (_env) { }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
89
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
90 ~java_local_ref (void) { release (); }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
91
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
92 T& operator = (T obj)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
93 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
94 release ();
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
95
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
96 jobj = obj;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
97 detached = false;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
98
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
99 return jobj;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
100 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
101
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
102 operator bool () const { return (jobj != 0); }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
103 operator T () { return jobj; }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
104
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
105 void detach (void) { detached = true; }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
106
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
107 private:
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
108
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
109 void release (void)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
110 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
111 if (env && jobj && ! detached)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
112 env->DeleteLocalRef (jobj);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
113
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
114 jobj = nullptr;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
115 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
116
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
117 java_local_ref (void)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
118 : jobj (0), detached (false), env (0)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
119 { }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
120
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
121 protected:
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
122
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
123 T jobj;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
124 bool detached;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
125 JNIEnv *env;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
126 };
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
127
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
128 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
129 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
130 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
131 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
132 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
133 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
134 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
135 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
136
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
137 static std::string
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
138 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
139
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
140 static std::string
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
141 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
142
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
143 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
144 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
145
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
146 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
147 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
148
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
149 static bool
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
150 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
151 jclass_ref& jcls);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
152
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
153 static bool
23449
c763214a8260 maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents: 23447
diff changeset
154 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
155 jobjectArray_ref& jobjs, jobjectArray_ref& jclss);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
156
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
157 extern "C"
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
158 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
159 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
160 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
161 jobjectArray);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
162
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
163 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
164 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
165
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
166 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
167 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
168
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
169 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
170 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
171
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
172 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
173 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *, jclass);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
174 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
175
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
176 //! 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
177 //! 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
178
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
179 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
180
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
181 //! 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
182 //! 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
183 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
184 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
185
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
186 static bool jvm_attached = false;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
188 //! 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
189 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
190 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
191
21750
6720e5a220ba use namespace for octave_shlib class
John W. Eaton <jwe@octave.org>
parents: 21748
diff changeset
192 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
193
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
194 static std::map<int,octave_value> listener_map;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
195 static std::map<int,octave_value> octave_ref_map;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
196 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
197
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
198 //! 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
199 //! unknown.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
200 //! @see #initialize_java()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
201
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
202 static long octave_thread_ID = -1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
203
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
204 bool Vjava_matrix_autoconversion = false;
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
205 bool Vjava_unsigned_autoconversion = true;
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
206 bool Vdebug_java = false;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
207
22326
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
208 namespace octave
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
209 {
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
210 class JVMArgs
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
211 {
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
212 public:
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
213
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
214 JVMArgs (void)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
215 {
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
216 vm_args.version = JNI_VERSION_1_6;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
217 vm_args.nOptions = 0;
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
218 vm_args.options = nullptr;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
219 vm_args.ignoreUnrecognized = false;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
220 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
221
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
222 ~JVMArgs (void)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
223 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
224 clean ();
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
225 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
226
23446
cd4e1ee28716 maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents: 23405
diff changeset
227 JavaVMInitArgs * to_args ()
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
228 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
229 update ();
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
230 return &vm_args;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
231 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
232
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
233 void add (const std::string& opt)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
234 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
235 java_opts.push_back (opt);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
236 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
237
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
238 void read_java_opts (const std::string& filename)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
239 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
240 std::ifstream js (filename.c_str ());
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
241
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
242 if (! js.bad () && ! js.fail ())
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
243 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
244 std::string line;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
245
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
246 while (! js.eof () && ! js.fail ())
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
247 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
248 std::getline (js, line);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
249
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
250 if (line.find ('-') == 0)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
251 java_opts.push_back (line);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
252 else if (line.length () > 0 && Vdebug_java)
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
253 std::cerr << "invalid JVM option, skipping: " << line
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
254 << std::endl;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
255 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
256 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
257 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
258
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
259 private:
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
260
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
261 void clean (void)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
262 {
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
263 if (vm_args.options != nullptr)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
264 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
265 for (int i = 0; i < vm_args.nOptions; i++)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
266 delete [] vm_args.options[i].optionString;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
267
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
268 delete [] vm_args.options;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
269
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
270 vm_args.options = nullptr;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
271 vm_args.nOptions = 0;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
272 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
273 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
274
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
275 void update (void)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
276 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
277 clean ();
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
278
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
279 if (java_opts.size () > 0)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
280 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
281 int index = 0;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
282
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
283 vm_args.nOptions = java_opts.size ();
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
284 vm_args.options = new JavaVMOption [vm_args.nOptions];
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
285
22871
50495eeb5df1 maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents: 22755
diff changeset
286 for (const auto& opt : java_opts)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
287 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
288 if (Vdebug_java)
22871
50495eeb5df1 maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents: 22755
diff changeset
289 std::cout << opt << std::endl;
50495eeb5df1 maint: Use C++ range feature to simplify some for loops in libinterp/octave-value.
Rik <rik@octave.org>
parents: 22755
diff changeset
290 vm_args.options[index++].optionString = strsave (opt.c_str ());
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
291 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
292
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
293 java_opts.clear ();
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
294 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
295 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
296
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
297 private:
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
298
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
299 JavaVMInitArgs vm_args;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
300
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
301 std::list<std::string> java_opts;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22327
diff changeset
302 };
22326
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
303 }
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
304
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
305
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
306 //! 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
307 //! @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
308 //! 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
309 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
310 //! 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
311 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
312 //! - @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
313 //! interface,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
314 //! - @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
315 //! (static) classpath,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
316 //! - @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
317 //! machine.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
318 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
319 //! 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
320 //! 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
321 //! 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
322 //! 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
323 //! 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
324
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
325 static std::string
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
326 initial_java_dir (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
327 {
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
328 static std::string java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
329
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
330 if (java_dir.empty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
331 {
21732
6a1eded90355 use namespace for system env class
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
332 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
333
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
334 if (java_dir.empty ())
23717
06579337237b move configuration variables inside octave::config namespace
John W. Eaton <jwe@octave.org>
parents: 23681
diff changeset
335 java_dir = (octave::config::fcn_file_dir ()
06579337237b move configuration variables inside octave::config namespace
John W. Eaton <jwe@octave.org>
parents: 23681
diff changeset
336 + 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
337 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
338
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
339 return java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
340 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
341
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
342 //! 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
343 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
344 //! 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
345 //! 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
346 //! 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
347 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
348 //! @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
349 //! 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
350 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
351 //! @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
352 //! comments nor empty without trailing whitespace separated by
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
353 //! `octave::directory_path::path_sep_str()`. The returned string also
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
354 //! starts with that path separator.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
355
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
356 static std::string
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
357 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
358 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
359 std::string classpath;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
360
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
361 std::ifstream fs (filepath.c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
362
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
363 if (! fs.bad () && ! fs.fail ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
364 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
365 std::string line;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
366
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
367 while (! fs.eof () && ! fs.fail ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
368 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
369 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
370 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
371 {
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
372 // 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
373 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
374
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
375 // 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
376 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
377
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
378 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
379 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
380 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
381 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
382
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
383 return (classpath);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
384 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
385
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
386
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
387 //! Return the initial classpath.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
388 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
389 //! 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
390 //! 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
391 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
392 //! @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
393 //! @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
394 //! @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
395 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
396 //! 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
397 //! @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
398 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
399 //! - the current directory,
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
400 //! - 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
401 //! - 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
402 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
403 //! @returns The initial classpath.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
404
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
405 static std::string
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
406 initial_class_path (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
407 {
15752
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
408 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
409
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
410 std::string retval = java_dir;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
411
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
412 // Find octave.jar file.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
413 if (! retval.empty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
414 {
21733
cb0fdd941d84 use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents: 21732
diff changeset
415 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
416
f96faf028d90 make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents: 15747
diff changeset
417 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
418
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
419 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
420
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
421 if (jar_exists)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
422 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
423 // Initialize static classpath to octave.jar.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
424 retval = jar_file;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
425
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
426 // 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
427 // 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
428 // 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
429 // 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
430 // 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
431
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
432 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
433 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
434
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
435 // 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
436 // "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
437 std::vector<std::string> cp_list = {"javaclasspath.txt",
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
438 "classpath.txt"};
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
439
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
440 for (std::string filename : cp_list)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
441 {
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
442 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
443 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
444
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
445 // 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
446
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
447 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
448 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
449 {
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
450 // 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
451 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
452 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
453 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
454
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
455 // 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
456
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
457 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
458 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
459 cp_file = '~' + sep + filename;
21733
cb0fdd941d84 use namespace for system file_ops class
John W. Eaton <jwe@octave.org>
parents: 21732
diff changeset
460 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
461 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
462 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
463 {
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
464 // 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
465 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
466 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
467 }
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
468 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
469
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
470 // 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
471
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
472 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
473 {
20422
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
474 cp_file = java_dir + sep + filename;
21736
0504351a45e6 use namespace for file_stat classes
John W. Eaton <jwe@octave.org>
parents: 21733
diff changeset
475 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
476 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
477 {
4262598620ae Don't add duplicates to javaclasspath when run in home directory (bug #45683).
Rik <rik@octave.org>
parents: 20274
diff changeset
478 // 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
479 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
480 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
481 }
15797
492893b98eef Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents: 15792
diff changeset
482 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
483 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
484 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
485 else
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
486 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
487 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
488 else
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
489 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
490
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
491 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
492 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
493
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
494 #if defined (OCTAVE_USE_WINDOWS_API)
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
495 // Declare function defined in sysdep.cc
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
496 extern LONG
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
497 get_regkey_value (HKEY h_rootkey, const std::string subkey,
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
498 const std::string name, octave_value& value);
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
499 #endif
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
500
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
501 //! 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
502 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
503 //! 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
504 //! 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
505 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
506 //! 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
507 //! 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
508 //! coded options:
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
509 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
510 //! - `-Djava.class.path=classpath`, where @c classpath is given by
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
511 //! #initial_class_path().
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
512 //! - `-Djava.system.class.loader=org.octave.OctClassLoader`.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
513 //! - `-Xrs`
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
514 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
515 //! 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
516 //! by #java_init_dir().
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
517 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
518 //! 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
519 //! 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
520 //! 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
521 //! @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
522 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
523 //! @see #terminate_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
524
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
525 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
526 initialize_jvm (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
527 {
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
528 // 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
529 // 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
530 // This does not fit terminate_jvm.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
531 if (jvm)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
532 return;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
533
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
534 JNIEnv *current_env;
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
535 const char *static_locale = setlocale (LC_ALL, nullptr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
536 const std::string locale (static_locale);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
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 octave::dynamic_library lib ("");
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
539 std::string jvm_lib_path = "linked in or loaded libraries";
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
540
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
541 // 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
542 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
543 (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
544 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
545 (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
546
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
547 if (! create_vm || ! get_vm)
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
548 {
21979
d04da18a407a use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents: 21966
diff changeset
549 #if defined (OCTAVE_USE_WINDOWS_API)
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
550 // In Windows, find the location of the JRE from the registry
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
551 // and load the symbol from the dll.
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
552 std::string key, jversion, value;
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
553
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
554 // First search for JRE >= 9
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
555 key = R"(software\javasoft\jre)";
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
556
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
557 jversion = octave::sys::env::getenv ("JAVA_VERSION");
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
558 octave_value regval;
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
559 LONG retval;
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
560 if (jversion.empty ())
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
561 {
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
562 value = "CurrentVersion";
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
563 retval = get_regkey_value (HKEY_LOCAL_MACHINE, key, value, regval);
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
564
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
565 if (retval != ERROR_SUCCESS)
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
566 {
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
567 // Search for JRE < 9
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
568 key = R"(software\javasoft\java runtime environment)";
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
569 retval = get_regkey_value (HKEY_LOCAL_MACHINE, key, value,
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
570 regval);
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
571 }
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
572
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
573 if (retval != ERROR_SUCCESS)
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
574 error ("unable to find Java Runtime Environment: %s::%s",
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
575 key.c_str (), value.c_str ());
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
576
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
577 jversion = regval.xstring_value (
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
578 "initialize_jvm: registry value \"%s\" at \"%s\" must be a string",
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
579 value.c_str (), key.c_str ());
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
580 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
581
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
582 key = key + '\\' + jversion;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
583 value = "RuntimeLib";
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
584 retval = get_regkey_value (HKEY_LOCAL_MACHINE, key, value, regval);
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
585 if (retval != ERROR_SUCCESS)
25139
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
586 {
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
587 // Search for JRE < 9
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
588 key = R"(software\javasoft\java runtime environment\)" + jversion;
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
589 retval = get_regkey_value (HKEY_LOCAL_MACHINE, key, value, regval);
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
590 }
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
591
d61f42a392b7 Find install location of JRE >= 9 on Windows (bug #53520).
Markus Mützel <markus.muetzel@gmx.de>
parents: 25103
diff changeset
592 if (retval != ERROR_SUCCESS)
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
593 error ("unable to find Java Runtime Environment: %s::%s",
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
594 key.c_str (), value.c_str ());
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
595
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
596 jvm_lib_path = regval.xstring_value (
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
597 "initialize_jvm: registry value \"%s\" at \"%s\" must be a string",
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
598 value.c_str (), key.c_str ());
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
599
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
600 if (jvm_lib_path.empty ())
21380
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
601 error ("unable to find Java Runtime Environment: %s::%s",
460943554233 * ov-java.cc: Call error instead of throwing std::string objects.
John W. Eaton <jwe@octave.org>
parents: 21379
diff changeset
602 key.c_str (), value.c_str ());
20945
9d9270e2f98f eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents: 20939
diff changeset
603 #else
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
604 // JAVA_LDPATH determined by configure and set in config.h
21200
fcac5dbbf9ed maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents: 21042
diff changeset
605 # if defined (__APPLE__)
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
606 jvm_lib_path = JAVA_LDPATH + std::string ("/libjvm.dylib");
21200
fcac5dbbf9ed maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents: 21042
diff changeset
607 # else
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
608 jvm_lib_path = JAVA_LDPATH + std::string ("/libjvm.so");
21200
fcac5dbbf9ed maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents: 21042
diff changeset
609 # endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
610 #endif
24684
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
611 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
612
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
613 if (! lib)
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
614 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
615 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
616
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
617 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
618 (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
619 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
620 (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
621
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
622 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
623 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
624
037ace76257d ov-java.cc: Use new functions in initialization of JVM.
Markus Mützel <markus.muetzel@gmx.de>
parents: 24671
diff changeset
625 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
626 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
627 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
628 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
629
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
630 //! 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
631 jsize nVMs = 0;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
632
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
633 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
634 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
635 // 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
636
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
637 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
638 JNI_VERSION_1_6))
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
639 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
640 case JNI_EDETACHED:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
641 // Attach the current thread
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
642 JavaVMAttachArgs vm_args;
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
643 vm_args.version = JNI_VERSION_1_6;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
644 vm_args.name = const_cast<char *> ("octave");
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
645 vm_args.group = nullptr;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
646 if (jvm->AttachCurrentThread (reinterpret_cast<void **> (&current_env),
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
647 &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
648 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
649 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
650
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
651 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
652 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
653 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
654
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
655 case JNI_OK:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
656 // 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
657 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
658 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
659
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
660 jvm_attached = true;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
661 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
662 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
663 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
664 // No JVM exists, create one
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
665
22326
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
666 octave::JVMArgs vm_args;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
667
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
668 // Hard-coded options for the jvm.
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
669 vm_args.add ("-Djava.class.path=" + initial_class_path ());
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
670 vm_args.add ("-Djava.system.class.loader=org.octave.OctClassLoader");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
671 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
672
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
673 // Additional options given by file java.opts.
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
674 vm_args.read_java_opts (initial_java_dir () +
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
675 octave::sys::file_ops::dir_sep_str () +
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
676 "java.opts");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
677
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
678 if (create_vm (&jvm, &current_env, 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
679 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
680 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
681
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
682 jvm_lib = lib;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
683
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
684 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
685 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
686
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
687 //! 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
688 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
689 //! 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
690 //! 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
691 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
692 //! @see #initialize_jvm()
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
693
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
694 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
695 terminate_jvm (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
696 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
697 // 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
698 if (jvm)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
699 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
700 // 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
701 if (jvm_attached)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
702 jvm->DetachCurrentThread ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
703 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
704 jvm->DestroyJavaVM ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
705
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
706 jvm = nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
707 jvm_attached = false;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
708
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
709 if (jvm_lib)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
710 jvm_lib.close ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
711
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
712 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
713 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
714 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
715
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
716 //! 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
717 //!{
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
718 static std::string
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
719 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
720 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
721 std::string retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
722
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
723 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
724 {
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
725 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
726 retval = cstr;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
727 jni_env->ReleaseStringUTFChars (s, cstr);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
728 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
729
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
730 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
731 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
732
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
733 static std::string
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
734 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
735 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
736 std::string retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
737
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
738 if (jni_env && obj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
739 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
740 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
741 if (cls)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
742 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
743 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
744 retval = jstring_to_string (jni_env,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
745 reinterpret_cast<jstring> (obj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
746 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
747 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
748
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
749 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
750 }
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
751 //!}
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
752
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
753 //! 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
754 //! Java virtual machine #jvm.
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
755 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
756 //! @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
757
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
758 static inline JNIEnv *
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
759 thread_jni_env (void)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
760 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23449
diff changeset
761 JNIEnv *env = nullptr;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
762
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
763 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
764 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
765
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
766 return env;
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
767 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
768
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
769 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
770
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
771 bool
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
772 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
773 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
774 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
775
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
776 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
777
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
778 if (current_env && java_object)
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
779 {
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
780 jclass_ref cls (current_env, current_env->FindClass ("java/lang/String"));
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
781 return current_env->IsInstanceOf (TO_JOBJECT (java_object), cls);
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
782 }
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
783
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
784 return false;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
785
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
786 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
787
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
788 // 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
789 // 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
790
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
791 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
792
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
793 #endif
15824
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
794 }
abc9e5f3c661 Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents: 15822
diff changeset
795
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
796 bool
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
797 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
798 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
799 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
800
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
801 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
802
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
803 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
804 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
805
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
806 if (current_env && java_object)
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
807 {
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
808 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
809 if (current_env->ExceptionCheck ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
810 current_env->ExceptionClear ();
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
811 else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
812 return current_env->IsInstanceOf (TO_JOBJECT (java_object), cls);
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
813 }
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
814 return false;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
815
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
816 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
817
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
818 octave_unused_parameter (cls_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
819
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
820 // 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
821 // 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
822
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
823 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
824
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
825 #endif
20028
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
826 }
107130a0490c isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents: 19861
diff changeset
827
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
828 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
829
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
830 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
831 check_exception (JNIEnv *jni_env)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
832 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
833 octave_value retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
834
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
835 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
836
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
837 if (ex)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
838 {
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
839 if (Vdebug_java)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
840 jni_env->ExceptionDescribe ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
841
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
842 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
843
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
844 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
845 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
846 "()Ljava/lang/String;");
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
847 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
848 reinterpret_cast<jstring> (jni_env->CallObjectMethod (ex,
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
849 mID)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
850 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
851
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
852 error ("[java] %s", msg.c_str ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
853 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
854 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
855 retval = Matrix ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
856
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
857 return retval;
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
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
860 static jclass
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
861 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
862 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
863 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
864 static jclass uiClass = nullptr;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
865
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
866 jclass jcls = jni_env->FindClass (name);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
867
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
868 if (jcls == nullptr)
15625
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 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
871
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
872 if (! uiClass)
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 if (class_loader.empty ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
875 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
876 jclass_ref syscls (jni_env,
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
877 jni_env->FindClass ("java/lang/System"));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
878 jmethodID mID = jni_env->GetStaticMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
879 (syscls,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
880 "getProperty",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
881 "(Ljava/lang/String;)Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
882 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
883 jni_env->NewStringUTF ("octave.class.loader"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
884 js = reinterpret_cast<jstring> (jni_env->CallStaticObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
885 (syscls, mID, jstring (js)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
886 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
887 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
888 '.', '/');
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
889 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
890
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
891 jclass_ref uicls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
892 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
893
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
894 if (! uicls)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
895 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
896 jni_env->ExceptionClear ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
897
20946
6eff66fb8a02 style fixes for comments
John W. Eaton <jwe@octave.org>
parents: 20945
diff changeset
898 // Try the netbeans way
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
899 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
900 '/', '.');
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
901 jclass_ref jcls2 (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
902 jni_env->FindClass ("org/openide/util/Lookup"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
903 jmethodID mID = jni_env->GetStaticMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
904 (jcls2, "getDefault", "()Lorg/openide/util/Lookup;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
905 jobject_ref lObj (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
906 jni_env->CallStaticObjectMethod (jcls2, mID));
19861
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
907 mID = jni_env->GetMethodID (jcls2, "lookup",
19755f4fc851 maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19598
diff changeset
908 "(Ljava/lang/Class;)Ljava/lang/Object;");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
909 jclass_ref cLoaderCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
910 jni_env->FindClass ("java/lang/ClassLoader"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
911 jobject_ref cLoader (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
912 jni_env->CallObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
913 (lObj, mID, jclass (cLoaderCls)));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
914 mID = jni_env->GetMethodID (cLoaderCls, "loadClass",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
915 "(Ljava/lang/String;)Ljava/lang/Class;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
916 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
917 jni_env->NewStringUTF (class_loader.c_str ()));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
918 uicls = reinterpret_cast<jclass>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
919 (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
920 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
921
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
922 if (uicls)
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
923 uiClass = reinterpret_cast<jclass>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
924 (jni_env->NewGlobalRef (jclass (uicls)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
925 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
926
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
927 if (uiClass)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
928 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
929 jmethodID mID = jni_env->GetStaticMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
930 (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
931 jstring_ref js (jni_env, jni_env->NewStringUTF (name));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
932 jcls = reinterpret_cast<jclass>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
933 (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
934 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
935 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
936
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
937 return jcls;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
938 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
939
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
940 static dim_vector
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
941 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
942 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
943 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
944 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
945 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
946 jmethodID isArray_ID = jni_env->GetMethodID (ccls, "isArray", "()Z");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
947 jmethodID getComponentType_ID = jni_env->GetMethodID (ccls,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
948 "getComponentType",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
949 "()Ljava/lang/Class;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
950
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
951 dim_vector dv (1, 1);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
952 int idx = 0;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
953
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
954 jobj.detach ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
955 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
956 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
957 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
958 if (idx >= dv.ndims ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
959 dv.resize (idx+1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
960 dv(idx) = len;
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
961 jcls = reinterpret_cast<jclass>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
962 (jni_env->CallObjectMethod (jcls, getComponentType_ID));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
963 jobj = len > 0
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
964 ? reinterpret_cast<jobjectArray> (jni_env->GetObjectArrayElement (jobj,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
965 0))
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
966 : nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
967 idx++;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
968 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
969
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
970 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
971
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
972 return dv;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
973 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
974
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
975 static jobject
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
976 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
977 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
978 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
979 jobjectArray retval = jni_env->NewObjectArray (idx.length (), ocls, nullptr);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
980 // Here retval has the same length as idx
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
981
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
982 // 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
983 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
984 try
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
985 {
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
986 idx_vector v = idx(i).index_vector ();
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
987
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
988 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
989 jint *buf = jni_env->GetIntArrayElements (i_array, nullptr);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
990 // Here, buf points to the beginning of i_array
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
991
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
992 // Copy v to buf.
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
993 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
994 buf[k] = v(k);
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
995
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
996 // Set retval[i] = i_array
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
997 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
998 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
999
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1000 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
1001 }
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
1002 catch (octave::index_exception& e)
20542
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1003 {
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1004 // Rethrow to allow more info to be reported later.
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
1005 e.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
1006 throw;
dd6345fd8a97 use exceptions for better invalid index error reporting (bug #45957)
Lachlan Andrew <lachlanbis@gmail.com>
parents: 20531
diff changeset
1007 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1008
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1009 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1010 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1011
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1012 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1013 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
1014 const octave_value_list& idx)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1015 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1016 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1017 jobject_ref resObj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1018 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
1019
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1020 jclass_ref helperClass (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1021 find_octave_class (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1022 "org/octave/ClassHelper"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1023 jmethodID mID = jni_env
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1024 ->GetStaticMethodID (helperClass, "arraySubsref",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1025 "(Ljava/lang/Object;[[I)Ljava/lang/Object;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1026 resObj = jni_env->CallStaticObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1027 (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
1028
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1029 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1030 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1031 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1032 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1033
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1034 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1035
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1036 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1037 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1038
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1039 static octave_value
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1040 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
1041 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
1042 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1043 octave_value retval;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1044
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1045 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
1046 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
1047 jobject_ref rhsObj (jni_env);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1048 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
1049
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1050 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
1051 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1052 jclass_ref helperClass (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1053 find_octave_class (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1054 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1055 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "arraySubsasgn",
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1056 "(Ljava/lang/Object;[[ILjava/lang/Object;)" "Ljava/lang/Object;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1057 resObj = jni_env->CallStaticObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1058 (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
1059 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1060
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1061 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1062 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1063 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1064 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1065
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1066 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1067
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1068 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1069 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1070
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1071 static string_vector
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1072 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
1073 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1074 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1075
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1076 std::list<std::string> name_list;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1077
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1078 if (jni_env)
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1079 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1080 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
1081 jclass_ref ccls (jni_env, jni_env->GetObjectClass (cls));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1082 jmethodID getMethods_ID = jni_env->GetMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1083 (ccls, "getMethods", "()[Ljava/lang/reflect/Method;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1084 jmethodID getFields_ID = jni_env->GetMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1085 (ccls, "getFields", "()[Ljava/lang/reflect/Field;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1086 jobjectArray_ref mList (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1087 reinterpret_cast<jobjectArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1088 (jni_env->CallObjectMethod (cls, getMethods_ID)));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1089 jobjectArray_ref fList (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1090 reinterpret_cast<jobjectArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1091 (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
1092 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
1093 int fLen = jni_env->GetArrayLength (fList);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1094 jclass_ref mCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1095 jni_env->FindClass ("java/lang/reflect/Method"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1096 jclass_ref fCls (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1097 jni_env->FindClass ("java/lang/reflect/Field"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1098 jmethodID m_getName_ID = jni_env->GetMethodID (mCls, "getName",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1099 "()Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1100 jmethodID f_getName_ID = jni_env->GetMethodID (fCls, "getName",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1101 "()Ljava/lang/String;");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1102
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1103 for (int i = 0; i < mLen; i++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1104 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1105 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
1106 jstring_ref methName (jni_env, reinterpret_cast<jstring>
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
1107 (jni_env->CallObjectMethod (meth,
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
1108 m_getName_ID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1109 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
1110 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1111
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1112 for (int i = 0; i < fLen; i++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1113 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1114 jobject_ref field (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1115 jni_env->GetObjectArrayElement (fList, i));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1116 jstring_ref fieldName (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1117 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1118 (jni_env->CallObjectMethod
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1119 (field, f_getName_ID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1120 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
1121 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1122
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1123 octave_set_default_fpucw ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1124 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1125
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1126 string_vector v (name_list);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1127
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1128 return v.sort (true);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1129 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1130
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1131 static octave_value
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1132 convert_to_string (JNIEnv *jni_env, jobject java_object, bool force, char type)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1133 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1134 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1135
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1136 if (jni_env && java_object)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1137 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1138 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
1139
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1140 if (jni_env->IsInstanceOf (java_object, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1141 retval = octave_value (jstring_to_string (jni_env, java_object), type);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1142 else if (force)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1143 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1144 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
1145
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1146 if (jni_env->IsInstanceOf (java_object, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1147 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1148 jobjectArray array = reinterpret_cast<jobjectArray> (java_object);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1149 int len = jni_env->GetArrayLength (array);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1150 Cell c (len, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1151
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1152 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
1153 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1154 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1155 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1156 (jni_env->GetObjectArrayElement (array, i)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1157
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1158 if (js)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1159 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
1160 else
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1161 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
1162 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1163
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1164 retval = octave_value (c);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1165 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1166 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1167 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1168 cls = jni_env->FindClass ("java/lang/Object");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1169 jmethodID mID = jni_env->GetMethodID (cls, "toString",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1170 "()Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1171 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1172 reinterpret_cast<jstring>
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
1173 (jni_env->CallObjectMethod (java_object,
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
1174 mID)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1175
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1176 if (js)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1177 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
1178 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1179 retval = check_exception (jni_env);
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 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1182 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1183 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
1184
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1185 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1186 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1187
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1188 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1189 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1190
23447
db1fdf4384dd maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents: 23446
diff changeset
1191 #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
1192
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1193 //! 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
1194 //! 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
1195 //!
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1196 //! 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
1197 //! @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
1198 //! 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
1199 //!
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1200 //! @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
1201 //! @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
1202 //! 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
1203 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
1204 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
1205 {
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1206 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
1207 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
1208 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
1209 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
1210 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
1211 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
1212 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
1213 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
1214 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
1215 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
1216 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
1217 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
1218 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
1219 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
1220 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
1221 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
1222 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
1223 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
1224 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
1225
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1226 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
1227 }
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1228
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1229 //! 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
1230 //! 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
1231 //!
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1232 //! @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
1233 //! @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
1234 //! @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
1235 //!
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1236 //! @return
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1237 //! @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
1238 //! @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
1239 //! @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
1240 //! @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
1241 //! @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
1242 //! 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
1243 //! @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
1244 //! #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
1245 //! @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
1246 //! @c org.octave.OctaveReference
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1247 //! @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
1248
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1249 static octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1250 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
1251 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1252 octave_value retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1253
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1254 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1255 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1256
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1257 jclass_ref cls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1258
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1259 if (! jobj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1260 retval = Matrix ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1261
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
1262 while (retval.is_undefined ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1263 {
22202
f094186125d3 Only convert specific Java numeric objects to double for Matlab compatibility (bug #48013)
Ernst Reissner <rei3ner@arcor.de>
parents: 22146
diff changeset
1264 // 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
1265 // (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
1266 // 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
1267 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
1268 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
1269 && 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
1270 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1271 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
1272 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
1273 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1274 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1275
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1276 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
1277 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1278 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1279 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
1280 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
1281 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1282 }
15625
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 ("java/lang/String");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1285 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1286 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1287 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
1288 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1289 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1290
15815
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1291 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
1292 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
1293 {
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1294 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
1295 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
1296 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
1297 break;
15815
f28b3dcbaa9a Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents: 15813
diff changeset
1298 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1299
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1300 #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
1301 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
1302 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
1303 { \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1304 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
1305 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
1306 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
1307 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
1308 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
1309 retval = d; \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1310 break; \
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1311 }
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1312
20254
a51fe1b60e3f Put most used conversions first in Java box/unbox routines.
Rik <rik@octave.org>
parents: 20253
diff changeset
1313 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
1314 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
1315 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
1316 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
1317 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
1318 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
1319 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
1320 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
1321
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
1322 #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
1323
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
1324 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
1325 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1326 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
1327
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
1328 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
1329 {
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
1330 jmethodID mID = jni_env->GetMethodID (cls, "getDims", "()[I");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1331 jintArray_ref iv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1332 reinterpret_cast<jintArray>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1333 (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
1334 jint *iv_data = jni_env->GetIntArrayElements (jintArray (iv),
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
1335 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
1336 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
1337 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
1338
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1339 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
1340 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
1341
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1342 jni_env->ReleaseIntArrayElements (jintArray (iv), iv_data, 0);
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1343 mID = jni_env->GetMethodID (cls, "getClassName",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1344 "()Ljava/lang/String;");
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1345 jstring_ref js (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1346 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1347 (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
1348
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1349 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
1350
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1351 if (s == "double")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1352 {
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
1353 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
1354 mID = jni_env->GetMethodID (cls, "toDouble", "()[D");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1355 jdoubleArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1356 reinterpret_cast<jdoubleArray>
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
1357 (jni_env->CallObjectMethod (jobj,
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
1358 mID)));
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
1359 jni_env->GetDoubleArrayRegion (dv, 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1360 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1361 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
1362 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1363 }
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
1364 else if (s == "byte")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1365 {
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
1366 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
1367 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1368 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
1369 mID = jni_env->GetMethodID (cls, "toByte", "()[B");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1370 jbyteArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1371 reinterpret_cast<jbyteArray>
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
1372 (jni_env->CallObjectMethod (jobj,
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
1373 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1374 jni_env->GetByteArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1375 reinterpret_cast<jbyte *>
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
1376 (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
1377 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
1378 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
1379 }
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1380 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
1381 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1382 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
1383 mID = jni_env->GetMethodID (cls, "toByte", "()[B");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1384 jbyteArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1385 reinterpret_cast<jbyteArray>
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
1386 (jni_env->CallObjectMethod (jobj,
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
1387 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1388 jni_env->GetByteArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1389 reinterpret_cast<jbyte *>
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
1390 (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
1391 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
1392 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
1393 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1394 }
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
1395 else if (s == "integer")
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1396 {
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
1397 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
1398 {
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1399 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
1400 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
1401 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
1402 reinterpret_cast<jintArray>
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
1403 (jni_env->CallObjectMethod (jobj,
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
1404 mID)));
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
1405 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
1406 reinterpret_cast<jint *>
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
1407 (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
1408 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
1409 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
1410 }
72661fe4b9e5 Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents: 15820
diff changeset
1411 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
1412 {
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 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
1414 mID = jni_env->GetMethodID (cls, "toInt", "()[I");
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1415 jintArray_ref dv (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1416 reinterpret_cast<jintArray>
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
1417 (jni_env->CallObjectMethod (jobj,
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
1418 mID)));
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1419 jni_env->GetIntArrayRegion (dv, 0, m.numel (),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1420 reinterpret_cast<jint *>
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
1421 (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
1422 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
1423 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
1424 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1425 }
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 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1428
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
1429 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
1430 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1431 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1432 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
1433 int ID = jni_env->CallIntMethod (jobj, mID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1434 std::map<int,octave_value>::iterator it = octave_ref_map.find (ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1435
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1436 if (it != octave_ref_map.end ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1437 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
1438 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1439 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1440
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1441 // 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
1442 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
1443 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
1444 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1445
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1446 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1447 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1448
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1449 static octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1450 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
1451 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1452 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1453 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1454
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1455 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
1456
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
1457 if (retval.isjava ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1458 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1459 retval = octave_value ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1460
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1461 jclass_ref cls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1462
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1463 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1464 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1465 cls = jni_env->FindClass ("[D");
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1466
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1467 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1468 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1469 jdoubleArray jarr = reinterpret_cast<jdoubleArray> (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1470 int len = jni_env->GetArrayLength (jarr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1471
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1472 if (len > 0)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1473 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1474 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
1475 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
1476 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1477 retval = m;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1478 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1479 else
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1480 retval = Matrix ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1481 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1482 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1483
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1484 if (retval.is_undefined ())
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1485 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1486 cls = jni_env->FindClass ("[[D");
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1487
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1488 if (jni_env->IsInstanceOf (jobj, cls))
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1489 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1490 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
1491 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
1492 int cols = 0;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1493
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1494 if (rows > 0)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1495 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1496 Matrix m;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1497
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1498 for (int r = 0; r < rows; r++)
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1499 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1500 jdoubleArray_ref row (jni_env,
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1501 reinterpret_cast<jdoubleArray>
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
1502 (jni_env->GetObjectArrayElement
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
1503 (jarr, r)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1504
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
1505 if (m.isempty ())
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1506 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1507 cols = jni_env->GetArrayLength (row);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1508 m.resize (cols, rows);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1509 }
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1510 jni_env->GetDoubleArrayRegion
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1511 (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
1512 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1513 retval = m.transpose ();
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1514 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1515 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1516 retval = Matrix ();
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1517 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1518 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1519
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1520 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1521 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1522 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
1523
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1524 if (jni_env->IsInstanceOf (jobj, cls))
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1525 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1526 jobjectArray jarr = reinterpret_cast<jobjectArray> (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1527 int len = jni_env->GetArrayLength (jarr);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1528 Cell m (len, 1);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1529
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1530 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
1531 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
1532 jstring_ref js (jni_env,
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1533 reinterpret_cast<jstring>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1534 (jni_env->GetObjectArrayElement (jarr, i)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1535 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
1536 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1537
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1538 retval = m;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1539 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1540 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1541 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1542
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1543 if (retval.is_undefined ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1544 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
1545
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1546 octave_set_default_fpucw ();
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1547
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1548 return retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1549 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1550
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1551 static bool
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1552 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
1553 jclass_ref& jcls)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1554 {
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1555 bool found = true;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1556
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
1557 if (val.isjava ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1558 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1559 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
1560 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
1561 jobj.detach ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1562 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1563 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1564 else if (val.is_string ())
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 std::string s = val.string_value ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1567
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1568 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
1569 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1570 }
23575
e95738a119da maint: Deprecate is_cellstr and replace with iscellstr.
Rik <rik@octave.org>
parents: 23573
diff changeset
1571 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
1572 {
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1573 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
1574 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
1575
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1576 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
1577 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
1578
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1579 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
1580 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1581 jstring_ref jstr (jni_env, jni_env->NewStringUTF
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1582 (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
1583 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
1584 }
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1585
20260
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1586 jobj = array;
137f183b7dee Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents: 20250
diff changeset
1587 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
1588 }
23592
80e3bfb7bd5a maint: Deprecate is_vector and replace with isvector.
Rik <rik@octave.org>
parents: 23585
diff changeset
1589 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
1590 {
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1591 // 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
1592 // using a macro?
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1593
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1594 #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
1595 do \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1596 { \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1597 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
1598 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
1599 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
1600 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
1601 jobj = reinterpret_cast<jobject> (jarr); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1602 jcls = jni_env->GetObjectClass (jobj); \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1603 } \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1604 while (0)
20122
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1605
81fcf4aa9e03 Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20121
diff changeset
1606 // 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
1607 // 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
1608
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1609 if (val.is_double_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1610 UNBOX_PRIMITIVE_ARRAY ( , , jdouble, Double);
23579
c20a0fa91c0c maint: Deprecate is_bool_type and replace with islogical.
Rik <rik@octave.org>
parents: 23578
diff changeset
1611 else if (val.islogical ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1612 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
1613 else if (val.isfloat ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1614 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
1615 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
1616 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
1617 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
1618 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
1619 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
1620 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
1621 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
1622 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
1623 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
1624 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
1625 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
1626 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
1627 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
1628 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
1629 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
1630 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
1631
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1632 #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
1633 }
20123
8261c4a11250 Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20122
diff changeset
1634 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
1635 {
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1636 // 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
1637 // using a macro?
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1638
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1639 #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
1640 do \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1641 { \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1642 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
1643 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
1644 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
1645 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
1646 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
1647 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
1648 } \
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1649 while (0)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1650
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1651 if (val.is_double_type ())
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1652 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
1653 else if (val.islogical ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1654 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
1655 else if (val.isfloat ())
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1656 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
1657 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
1658 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
1659 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
1660 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
1661 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
1662 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
1663 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
1664 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
1665 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
1666 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
1667 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
1668 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
1669 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
1670 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
1671 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
1672 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
1673
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1674 #undef UNBOX_PRIMITIVE_SCALAR
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
1675 }
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23576
diff changeset
1676 else if (val.isempty ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1677 {
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1678 jobj = nullptr;
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1679 jcls = nullptr;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1680 //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
1681 }
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20946
diff changeset
1682 else if (! Vjava_matrix_autoconversion
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1683 && ((val.is_real_matrix ()
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1684 && (val.rows () == 1 || val.columns () == 1))
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1685 || val.is_range ()))
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1686 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1687 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
1688 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
1689 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
1690 jobj = dv;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1691 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1692 }
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
1693 else if (Vjava_matrix_autoconversion
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1694 && (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
1695 && val.isreal ())
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1696 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1697 jclass_ref mcls (jni_env, find_octave_class (jni_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1698 "org/octave/Matrix"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1699 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
1700 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
1701 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
1702
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21580
diff changeset
1703 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
1704 iv_data[i] = dims(i);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1705
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1706 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
1707
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1708 if (val.is_double_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1709 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1710 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
1711 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
1712 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
1713 m.fortran_vec ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1714 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
1715 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
1716 jintArray (iv));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1717 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1718 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1719 else if (val.is_int8_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1720 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1721 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
1722 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
1723 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1724 reinterpret_cast<jbyte *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1725 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1726 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
1727 jobj = jni_env->NewObject
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1728 (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
1729 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1730 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1731 else if (val.is_uint8_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1732 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1733 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
1734 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
1735 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1736 reinterpret_cast<jbyte *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1737 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1738 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
1739 jobj = jni_env->NewObject
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1740 (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
1741 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1742 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1743 else if (val.is_int32_type ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1744 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1745 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
1746 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
1747 jni_env->SetIntArrayRegion (jintArray (v), 0, m.numel (),
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1748 reinterpret_cast<jint *>
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1749 (m.fortran_vec ()));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1750 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
1751 jobj = jni_env->NewObject
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1752 (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
1753 jcls = jni_env->GetObjectClass (jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1754 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1755 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1756 {
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1757 found = false;
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1758 error ("cannot convert matrix of type '%s'",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1759 val.class_name ().c_str ());
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1760 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1761 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1762 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1763 {
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
1764 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
1765 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
1766 int ID = octave_java_refcount++;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1767
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1768 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
1769 jcls = rcls;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1770 octave_ref_map[ID] = val;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1771 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1772
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1773 return found;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1774 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1775
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1776 static bool
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
1777 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
1778 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
1779 {
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1780 bool found = true;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1781
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1782 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
1783 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
1784
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1785 if (! jobjs)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1786 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
1787
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1788 if (! jclss)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1789 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
1790
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1791 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
1792 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1793 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1794 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1795
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1796 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
1797 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
1798 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1799
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1800 jni_env->SetObjectArrayElement (jobjs, i, jobj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1801 jni_env->SetObjectArrayElement (jclss, i, jcls);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1802 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1803
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1804 return found;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1805 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1806
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1807 //! 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
1808 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1809 //! @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
1810 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1811 //! @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
1812 //! 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
1813
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1814 static long
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1815 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
1816 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1817 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1818 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1819 // 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
1820 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
1821 jmethodID mID = jni_env->GetStaticMethodID (cls, "currentThread",
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1822 "()Ljava/lang/Thread;");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1823 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
1824
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1825 if (jthread)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1826 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1827 // 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
1828 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
1829 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
1830 long result = jni_env->CallLongMethod (jthread, mID);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1831 return result;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1832 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1833 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1834
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1835 return -1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1836 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1837
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1838 //! 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
1839 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1840 //! @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
1841
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1842 static int
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1843 java_event_hook (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1844 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1845 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
1846
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1847 if (current_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1848 {
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1849 // Invoke static void org.octave.Octave.checkPendingAction().
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1850 jclass_ref cls (current_env, find_octave_class (current_env,
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1851 "org/octave/Octave"));
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1852 jmethodID mID = current_env->GetStaticMethodID
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
1853 (cls, "checkPendingAction", "()V");
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1854 current_env->CallStaticVoidMethod (cls, mID);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1855
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1856 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1857 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1858
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1859 return 0;
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
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1862 //! 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
1863 //!
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1864 //! 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
1865 //! #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
1866 //! used as part of octave functions @c javaObject, @c javaMethod,
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
1867 //! @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
1868
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1869 static void
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1870 initialize_java (void)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1871 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1872 if (! jvm)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1873 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1874 try
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1875 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1876 initialize_jvm ();
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1877
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1878 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
1879
21748
176536b15d68 use namespace for command_editor and command_history classes
John W. Eaton <jwe@octave.org>
parents: 21745
diff changeset
1880 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
1881
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1882 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
1883 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1884 catch (std::string msg)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1885 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1886 error (msg.c_str ());
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1887 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
1888
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
1889 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1890 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1891 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1892
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1893 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1894 Java_org_octave_Octave_call (JNIEnv *env, jclass, jstring funcName,
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1895 jobjectArray argin, jobjectArray argout)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1896 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1897 std::string fname = jstring_to_string (env, funcName);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1898
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1899 int nargout = env->GetArrayLength (argout);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1900 int nargin = env->GetArrayLength (argin);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1901
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1902 octave_value_list varargin, varargout;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1903
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1904 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
1905 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
1906
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
1907 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
1908
20121
41064c150724 Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents: 20120
diff changeset
1909 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
1910 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
1911 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
1912 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1913
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1914 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1915 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
1916 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1917 octave_ref_map.erase (ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1918 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1919
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1920 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1921 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
1922 jobjectArray args)
15625
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 std::map<int,octave_value>::iterator it = octave_ref_map.find (ID);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1925
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1926 if (it != octave_ref_map.end ())
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1927 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1928 octave_value val = it->second;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1929 int len = env->GetArrayLength (args);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1930 octave_value_list oct_args;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1931
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1932 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
1933 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1934 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
1935 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
1936 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1937
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1938 BEGIN_INTERRUPT_WITH_EXCEPTIONS;
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1939
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1940 if (val.is_function_handle ())
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1941 {
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1942 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
1943 octave::feval (fcn, oct_args);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1944 }
23576
00e518162fda maint: Deprecate is_cell and replace with iscell.
Rik <rik@octave.org>
parents: 23575
diff changeset
1945 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
1946 && (val.rows () == 1 || val.columns () == 1)
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1947 && 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
1948 {
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1949 Cell c = val.cell_value ();
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1950 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
1951
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1952 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
1953 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
1954
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
1955 octave::feval (fcn, oct_args);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1956 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1957 else
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1958 error ("trying to invoke non-invocable object");
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1959
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
1960 END_INTERRUPT_WITH_EXCEPTIONS;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1961 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1962 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1963
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1964 JNIEXPORT void JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1965 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
1966 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1967 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
1968 int pstatus;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22871
diff changeset
1969 octave::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
1970 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1971
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1972 JNIEXPORT jboolean JNICALL
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
1973 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
1974 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1975 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
1976 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1977
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1978 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1979
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
1980 //! Ctor.
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1981
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1982 octave_java::octave_java (void)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1983 : octave_base_value (), java_object (nullptr), java_class (nullptr)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1984 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1985 #if ! defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1986
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1987 err_disabled_feature ("Java Objects", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1988
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1989 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1990 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1991
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1992 octave_java::octave_java (const voidptr& jobj, void *jcls)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
1993 : octave_base_value (), java_object (nullptr), java_class (nullptr)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1994 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1995 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1996
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1997 init (jobj, jcls);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1998
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
1999 #else
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2000
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2001 octave_unused_parameter (jobj);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2002 octave_unused_parameter (jcls);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2003
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2004 err_disabled_feature ("Java Objects", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2005
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2006 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2007 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2008
15813
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2009 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
2010
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2011 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
2012
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2013 void
24540
46440078d73b don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
2014 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
2015 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2016 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2017
24540
46440078d73b don't use singleton for octave_value_typeinfo
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
2018 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
2019 octave_value (new octave_java ()));
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2020
24571
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2021 #else
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2022
7b6a5336ddb3 * ov-java.cc (octave_java::register_type): Eliminate unused variable warning.
John W. Eaton <jwe@octave.org>
parents: 24540
diff changeset
2023 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
2024
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2025 #endif
15813
10d6ab9b1b4f Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents: 15806
diff changeset
2026 }
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2027
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2028 dim_vector
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2029 octave_java::dims (void) const
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2030 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2031 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2032
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2033 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2034
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2035 if (current_env && java_object)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2036 return compute_array_dimensions (current_env, TO_JOBJECT (java_object));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2037 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2038 return dim_vector (1, 1);
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2039
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2040 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2041
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2042 // 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
2043 // 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
2044
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2045 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2046
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2047 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2048 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2049
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2050 octave_value_list
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2051 octave_java::subsref (const std::string& type,
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2052 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
2053 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2054 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2055
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2056 octave_value_list retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2057 int skip = 1;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2058
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2059 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2060
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2061 switch (type[0])
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2062 {
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2063 case '.':
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2064 if (type.length () > 1 && type[1] == '(')
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2065 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2066 octave_value_list ovl;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2067 count++;
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
2068 ovl(1) = octave_value (this);
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
2069 ovl(0) = (idx.front ())(0);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2070 std::list<octave_value_list>::const_iterator it = idx.begin ();
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2071 ovl.append (*++it);
23129
35e3d199527c Replace feval calls with direct call to C++ function (bug #50116).
Rik <rik@octave.org>
parents: 23084
diff changeset
2072 retval = FjavaMethod (ovl, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2073 skip++;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2074 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2075 else
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2076 {
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2077 octave_value_list ovl;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2078 count++;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2079 ovl(0) = octave_value (this);
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2080 ovl(1) = (idx.front ())(0);
23129
35e3d199527c Replace feval calls with direct call to C++ function (bug #50116).
Rik <rik@octave.org>
parents: 23084
diff changeset
2081 retval = F__java_get__ (ovl, 1);
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2082 }
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2083 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2084
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2085 case '(':
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2086 if (current_env)
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2087 retval = get_array_elements
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2088 (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
2089 break;
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2090
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2091 default:
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2092 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
2093 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2094 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2095
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2096 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
2097 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
2098
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2099 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2100
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2101 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2102
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2103 octave_unused_parameter (type);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2104 octave_unused_parameter (idx);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2105 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2106
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2107 // 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
2108 // 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
2109
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2110 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2111
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2112 #endif
15625
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
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2115 octave_value
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2116 octave_java::subsasgn (const std::string& type,
21661
1b9a36a66b01 maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents: 21660
diff changeset
2117 const std::list<octave_value_list>& idx,
1b9a36a66b01 maint: Octave coding convention cleanups.
Rik <rik@octave.org>
parents: 21660
diff changeset
2118 const octave_value& rhs)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2119 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2120 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2121
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2122 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2123
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2124 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2125
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2126 switch (type[0])
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2127 {
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2128 case '.':
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2129 if (type.length () == 1)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2130 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2131 // field assignment
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2132 octave_value_list ovl;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2133 count++;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2134 ovl(0) = octave_value (this);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2135 ovl(1) = (idx.front ())(0);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2136 ovl(2) = rhs;
23129
35e3d199527c Replace feval calls with direct call to C++ function (bug #50116).
Rik <rik@octave.org>
parents: 23084
diff changeset
2137 F__java_set__ (ovl);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2138
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2139 count++;
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2140 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2141 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2142 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
2143 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2144 std::list<octave_value_list> new_idx;
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2145 std::list<octave_value_list>::const_iterator it = idx.begin ();
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2146 new_idx.push_back (*it++);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2147 new_idx.push_back (*it++);
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2148 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
2149
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2150 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
2151 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2152 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2153 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
2154
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2155 count++;
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2156 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2157 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2158 else if (type[1] == '.')
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2159 {
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2160 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
2161
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2162 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
2163 next_idx.erase (next_idx.begin ());
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2164 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
2165
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2166 count++;
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2167 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2168 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2169 else
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2170 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
2171 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2172
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2173 case '(':
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2174 if (current_env)
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2175 {
22303
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2176 set_array_elements (current_env, TO_JOBJECT (to_java ()),
0448bf26fe98 style fixes (patch #9059)
Ernst Reissner <rei3ner@arcor.de>
parents: 22203
diff changeset
2177 idx.front (), rhs);
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2178
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2179 count++;
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2180 retval = octave_value (this);
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2181 }
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2182 break;
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2183
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2184 default:
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2185 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
2186 break;
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2187 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2188
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2189 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2190
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2191 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2192
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2193 octave_unused_parameter (type);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2194 octave_unused_parameter (idx);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2195 octave_unused_parameter (rhs);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2196
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2197 // 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
2198 // 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
2199
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2200 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2201
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2202 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2203 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2204
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2205 string_vector
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2206 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
2207 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2208 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2209
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2210 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2211
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2212 if (current_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2213 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
2214 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2215 return string_vector ();
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2216
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2217 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2218
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2219 // 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
2220 // 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
2221
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2222 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2223
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2224 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2225 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2226
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2227 octave_value
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2228 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
2229 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2230 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2231
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2232 JNIEnv *current_env = thread_jni_env ();
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2233
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2234 if (current_env)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2235 return convert_to_string (current_env, TO_JOBJECT (to_java ()), force, type);
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2236 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2237 return octave_value ("");
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2238
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2239 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2240
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2241 octave_unused_parameter (force);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2242 octave_unused_parameter (type);
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
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2252 void
18416
bcd71a2531d3 Support disp/display overloading in classdef
Michael Goffioul <michael.goffioul@gmail.com>
parents: 18100
diff changeset
2253 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
2254 {
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2255 print_raw (os);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2256 newline (os);
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2257 }
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2258
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2259 void
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2260 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
2261 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
2262 os << "<Java object: " << java_classname << '>';
15859
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2263 }
0e393e744e5e ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents: 15858
diff changeset
2264
20441
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2265 // 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
2266 // 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
2267
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2268 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2269 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
2270 {
20531
dcfbf4c1c3c8 eliminate trailing whitespace and tabs from sources
John W. Eaton <jwe@octave.org>
parents: 20468
diff changeset
2271 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
2272
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2273 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2274 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2275
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2276 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2277 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
2278 {
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2279 // 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
2280 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2281 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2282
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2283 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2284 octave_java::save_binary (std::ostream& /* os */, bool& /* save_as_floats */)
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2285 {
20531
dcfbf4c1c3c8 eliminate trailing whitespace and tabs from sources
John W. Eaton <jwe@octave.org>
parents: 20468
diff changeset
2286 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
2287
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2288 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2289 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2290
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2291 bool
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2292 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
2293 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
2294 {
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2295 // 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
2296 return true;
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2297 }
b22528fd3deb Add placeholder functions for save_ascii, save_binary for octave_java (bug #45694).
Rik <rik@octave.org>
parents: 20422
diff changeset
2298
20468
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2299 bool
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2300 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
2301 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
2302 {
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2303 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
2304
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2305 return true;
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2306 }
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2307
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2308 bool
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2309 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
2310 {
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2311 // 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
2312 return true;
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2313 }
2f94652de9ff Add placeholder functions for save_hdf5, load_hdf5 for octave_java functions.
Rik <rik@octave.org>
parents: 20441
diff changeset
2314
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2315 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2316 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
2317 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2318 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2319 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2320
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2321 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2322
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2323 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
2324
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2325 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2326 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2327 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
2328 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
2329 {
15744
686580b1a934 eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents: 15743
diff changeset
2330 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
2331 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "invokeMethod",
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2332 "(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
2333 jstring_ref methName (jni_env, jni_env->NewStringUTF (name.c_str ()));
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2334 jobjectArray_ref resObj (jni_env, reinterpret_cast<jobjectArray> (jni_env->CallStaticObjectMethod (helperClass, mID,
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2335 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
2336 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2337 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2338 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2339 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2340 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2341
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2342 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2343 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2344
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2345 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2346
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2347 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2348
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2349 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
2350 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2351 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2352
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2353 // 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
2354 // 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
2355
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2356 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2357
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2358 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2359 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2360
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2361 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2362 octave_java::do_javaMethod (const std::string& name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2363 const octave_value_list& args)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2364 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2365 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2366
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2367 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
2368
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2369 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2370
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2371 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2372 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2373
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2374 // 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
2375 // 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
2376
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2377 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2378
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2379 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2380 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2381
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2382 octave_value
24199
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2383 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
2384 const std::string& class_name,
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2385 const std::string& name,
2ac103974d00 Remove extra space between scope operator '::' and function.
Rik <rik@octave.org>
parents: 24141
diff changeset
2386 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2387 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2388 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2389
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2390 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2391
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2392 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
2393
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2394 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2395 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2396 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
2397 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
2398 {
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
2399 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
2400 find_octave_class (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
2401 "org/octave/ClassHelper"));
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
2402 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
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
2403 "invokeStaticMethod",
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2404 "(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
2405 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
2406 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
2407 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
2408 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
2409 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
2410 jni_env->CallStaticObjectMethod (helperClass,
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
2411 mID,
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
2412 jstring (clsName),
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
2413 jstring (methName),
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
2414 jobjectArray (arg_objs),
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
2415 jobjectArray (arg_types)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2416 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2417 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2418 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2419 retval = check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2420 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2421
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2422 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2423 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2424
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2425 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2426
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2427 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2428
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2429 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
2430 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2431 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2432 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2433
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2434 // 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
2435 // 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
2436
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2437 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2438
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2439 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2440 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2441
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2442 octave_value
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2443 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
2444 const std::string& name,
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
2445 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2446 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2447 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2448
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2449 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
2450
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2451 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2452
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2453 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2454 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2455 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2456
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2457 // 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
2458 // 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
2459
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2460 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2461
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2462 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2463 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2464
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2465 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2466 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
2467 const octave_value_list& args)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2468 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2469 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2470
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2471 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2472
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2473 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
2474
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2475 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2476 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2477 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
2478
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2479 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
2480 {
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
2481 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
2482 find_octave_class (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
2483 "org/octave/ClassHelper"));
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
2484 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
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
2485 "invokeConstructor",
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2486 "(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
2487 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
2488 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
2489 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
2490 jni_env->CallStaticObjectMethod (helperClass,
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
2491 mID,
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
2492 jstring (clsName),
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
2493 jobjectArray (arg_objs),
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
2494 jobjectArray (arg_types)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2495
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2496 if (resObj)
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2497 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
2498 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2499 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2500 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2501
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2502 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2503 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2504
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2505 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2506
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2507 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2508
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2509 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
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
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2519 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2520
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2521 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2522 octave_java::do_javaObject (const std::string& name,
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2523 const octave_value_list& args)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2524 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2525 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2526
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2527 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
2528
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2529 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2530
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2531 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2532 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2533
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2534 // 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
2535 // 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
2536
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2537 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2538
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2539 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2540 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2541
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2542 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2543 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
2544 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2545 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2546
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2547 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2548
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2549 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
2550
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2551 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2552 {
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
2553 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
2554 find_octave_class (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
2555 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2556 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "getField",
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2557 "(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;");
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2558 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
2559 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
2560 jni_env->CallStaticObjectMethod (helperClass,
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
2561 mID,
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
2562 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
2563 jstring (fName)));
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2564
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2565 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2566 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2567 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2568 retval = check_exception (jni_env);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2569
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2570 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2571 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2572
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2573 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2574
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2575 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2576
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2577 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
2578 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2579
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2580 // 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
2581 // 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
2582
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2583 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2584
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2585 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2586 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2587
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2588 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2589 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
2590 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2591 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2592
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2593 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
2594
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2595 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2596
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2597 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2598
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2599 // 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
2600 // 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
2601
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2602 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2603
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2604 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2605 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2606
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2607 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2608 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
2609 const std::string& name)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2610 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2611 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2612
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2613 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2614
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2615 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
2616
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2617 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2618 {
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
2619 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
2620 find_octave_class (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 "org/octave/ClassHelper"));
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
2622 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
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 "getStaticField",
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
2624 "(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
2625 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
2626 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
2627 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
2628 jni_env->CallStaticObjectMethod (helperClass, mID,
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 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
2630 jstring (fName)));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2631 if (resObj)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2632 retval = box (jni_env, resObj);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2633 else
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2634 retval = check_exception (jni_env);
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2635
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2636 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2637 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2638
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2639 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2640
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2641 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2642
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2643 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
2644 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2645 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2646
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2647 // 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
2648 // 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
2649
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2650 panic_impossible ();
21691
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 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2653 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2654
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2655 octave_value
22407
34ce5be04942 maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents: 22331
diff changeset
2656 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
2657 const std::string& name)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2658 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2659 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2660
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2661 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
2662
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2663 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2664
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2665 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2666 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2667
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2668 // 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
2669 // 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
2670
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2671 panic_impossible ();
21691
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 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2674 }
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 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2677 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
2678 const octave_value& val)
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2679 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2680 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2681
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2682 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2683
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2684 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
2685
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2686 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2687 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2688 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2689 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2690
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2691 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
2692 {
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
2693 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
2694 find_octave_class (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
2695 "org/octave/ClassHelper"));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2696 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "setField",
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2697 "(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
2698 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
2699 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
2700 jstring (fName), jobject (jobj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2701 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2702 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2703
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2704 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2705 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2706
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2707 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2708
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2709 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2710
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2711 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
2712 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2713 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2714
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2715 // 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
2716 // 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
2717
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2718 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2719
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2720 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2721 }
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2722
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2723 octave_value
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2724 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
2725 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2726 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2727
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2728 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
2729
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2730 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2731
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2732 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2733 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2734
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2735 // 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
2736 // 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
2737
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2738 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2739
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2740 #endif
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2741 }
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2742
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2743 octave_value
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2744 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
2745 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
2746 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2747 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2748
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2749 octave_value retval;
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2750
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2751 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
2752
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2753 if (jni_env)
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2754 {
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2755 jobject_ref jobj (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2756 jclass_ref jcls (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2757
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2758 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
2759 {
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
2760 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
2761 find_octave_class (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
2762 "org/octave/ClassHelper"));
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
2763 jmethodID mID = jni_env->GetStaticMethodID (helperClass,
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
2764 "setStaticField",
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2765 "(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
2766 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
2767 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
2768 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
2769 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
2770 jstring (fName), jobject (jobj));
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2771 check_exception (jni_env);
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2772 }
16078
9439f3b5c5fa Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents: 15879
diff changeset
2773
21894
67a5cb9cd941 hide gnulib fpucw header
John W. Eaton <jwe@octave.org>
parents: 21823
diff changeset
2774 octave_set_default_fpucw ();
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2775 }
15745
19850dfc2f88 * __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 15744
diff changeset
2776
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2777 return retval;
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2778
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2779 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2780
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2781 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
2782 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2783 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2784 octave_unused_parameter (val);
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 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
2793
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
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_set (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 const octave_value& val)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2798 {
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2799 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2800
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2801 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
2802
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2803 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2804
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2805 octave_unused_parameter (class_name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2806 octave_unused_parameter (name);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2807 octave_unused_parameter (val);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2808
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2809 // 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
2810 // 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
2811
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2812 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2813
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2814 #endif
15625
acf0addfc610 include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2815 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
2816
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2817 void
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2818 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
2819 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2820 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2821
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2822 jobject jobj = TO_JOBJECT (jobj_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2823 jclass jcls = TO_JCLASS (jcls_arg);
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2824
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2825 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
2826
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2827 if (current_env)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2828 {
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2829 if (jobj)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2830 java_object = current_env->NewGlobalRef (jobj);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2831
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2832 if (jcls)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2833 java_class = current_env->NewGlobalRef (jcls);
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2834 else if (java_object)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2835 {
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
2836 jclass_ref ocls (current_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
2837 current_env->GetObjectClass(TO_JOBJECT (java_object)));
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2838 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
2839 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2840
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2841 if (java_class)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2842 {
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
2843 jclass_ref clsCls (current_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
2844 current_env->GetObjectClass (TO_JCLASS (java_class)));
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
2845 jmethodID mID = current_env->GetMethodID (clsCls,
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
2846 "getCanonicalName",
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
2847 "()Ljava/lang/String;");
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
2848 jobject_ref resObj (current_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
2849 current_env->CallObjectMethod (TO_JCLASS (java_class), mID));
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2850 java_classname = jstring_to_string (current_env, resObj);
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2851 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2852 }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2853
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2854 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2855
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2856 octave_unused_parameter (jobj_arg);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2857 octave_unused_parameter (jcls_arg);
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 // 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
2860 // 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
2861
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2862 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2863
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2864 #endif
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2865 }
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2866
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2867 void
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2868 octave_java::release (void)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2869 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2870 #if defined (HAVE_JAVA)
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2871
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2872 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
2873
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2874 if (current_env)
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2875 {
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2876 if (java_object)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2877 current_env->DeleteGlobalRef (TO_JOBJECT (java_object));
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2878
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2879 if (java_class)
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2880 current_env->DeleteGlobalRef (TO_JCLASS (java_class));
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2881
23795
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2882 java_object = nullptr;
980f39c3ab90 Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents: 23717
diff changeset
2883 java_class = nullptr;
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2884 }
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2885
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2886 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2887
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2888 // 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
2889 // 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
2890
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2891 panic_impossible ();
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2892
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2893 #endif
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2894 }
15806
01d4f742d75d doc: Re-organize and improve Java Interface documentation.
Rik <rik@octave.org>
parents: 15800
diff changeset
2895
24140
0b7662d8bd02 doc: libinterp/octave-value/ov-java.cc: Improve (Doxygen) comments.
Ernst Reissner <rei3ner@arcor.de>
parents: 23929
diff changeset
2896 // 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
2897 // 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
2898
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2899 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
2900 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
2901 @deftypefn {} {} __java_init__ ()
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2902 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
2903
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2904 Function will directly call initialize_java to create an instance of a JVM.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2905 @end deftypefn */)
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2906 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2907 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2908
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
2909 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
2910
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2911 initialize_java ();
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2912
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
2913 retval = 1;
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2914
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2915 return retval;
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2916
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2917 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2918
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2919 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
2920
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2921 #endif
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2922 }
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2923
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2924 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
2925 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
2926 @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
2927 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
2928
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2929 Function will directly call terminate_jvm to destroy the current JVM
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2930 instance.
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2931 @end deftypefn */)
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2932 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2933 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2934
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2935 terminate_jvm ();
20957
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
2936
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
2937 return ovl ();
9db35d2042be maint: eliminate special cases of statements after error.
Rik <rik@octave.org>
parents: 20955
diff changeset
2938
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2939 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2940
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2941 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
2942
15879
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2943 #endif
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2944 }
f69530e3600d make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents: 15859
diff changeset
2945
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2946 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
2947 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
2948 @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
2949 @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
2950 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
2951 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
2952
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2953 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
2954 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
2955
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2956 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2957 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2958 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
2959 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
2960 @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
2961 @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
2962
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
2963 @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
2964 @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
2965 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2966 #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
2967
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2968 if (args.length () == 0)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2969 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2970
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2971 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
2972
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2973 initialize_java ();
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
2974
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2975 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
2976
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2977 octave_value_list tmp;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2978 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
2979 tmp(i-1) = args(i);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2980
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
2981 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
2982
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2983 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2984
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2985 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
2986
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2987 err_disabled_feature ("javaObject", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
2988
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2989 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2990 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
2991
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
2992 /*
21042
0967e2393386 * ov-java.h, ov-java.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents: 20974
diff changeset
2993 ## 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
2994 ## 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
2995 ## 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
2996 ## whether it overflows.
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
2997 %!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
2998 %! 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
2999 */
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3000
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3001 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
3002 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
3003 @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
3004 @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
3005 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
3006 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
3007
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3008 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
3009 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
3010
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3011 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
3012 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
3013 equivalent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3014
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3015 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3016 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3017 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
3018 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
3019 @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
3020 @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
3021
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3022 @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
3023
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3024 @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
3025 @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
3026 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3027 #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
3028
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3029 if (args.length () < 2)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3030 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3031
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3032 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
3033
15790
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
3034 initialize_java ();
921912c92102 Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents: 15771
diff changeset
3035
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3036 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
3037
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3038 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3039
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3040 octave_value_list tmp;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3041 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
3042 tmp(i-2) = args(i);
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3043
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3044 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
3045 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3046 octave_java *jobj = TO_JAVA (args(1));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3047 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
3048 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3049 else if (args(1).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3050 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3051 std::string cls = args(1).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3052 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
3053 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3054 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3055 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
3056
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3057 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3058
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3059 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3060
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3061 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3062
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3063 err_disabled_feature ("javaMethod", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3064
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3065 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3066 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3067
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3068 /*
23405
32ec90068be5 use %!testif runtime tests to properly skip java tests
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
3069 %!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
3070 %! 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
3071 %! jver = strsplit (jver, ".");
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3072 %! 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
3073 %! 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
3074 %! 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
3075 %! else
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3076 %! 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
3077 %! endif
15825
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3078 */
9854666df787 ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15824
diff changeset
3079
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3080 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
3081 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
3082 @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
3083 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
3084
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3085 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
3086 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
3087
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3088 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
3089 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
3090 equivalent
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3091
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3092 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3093 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3094 __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
3095 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
3096 @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
3097 @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
3098
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3099 @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
3100 @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
3101 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3102 #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
3103
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3104 if (args.length () != 2)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3105 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3106
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3107 std::string name = args(1).string_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
3108
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3109 initialize_java ();
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3110
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3111 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
3112
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3113 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3114
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3115 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
3116 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3117 octave_java *jobj = TO_JAVA (args(0));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3118 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
3119 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3120 else if (args(0).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3121 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3122 std::string cls = args(0).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3123 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
3124 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3125 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3126 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
3127
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3128 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3129
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3130 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3131
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3132 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3133
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3134 err_disabled_feature ("__java_get__", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3135
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3136 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3137 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3138
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3139 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
3140 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
3141 @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
3142 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
3143 @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
3144
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3145 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
3146 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
3147
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3148 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
3149 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
3150 equivalent
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 @example
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3153 @group
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3154 __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
3155 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
3156 @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
3157 @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
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 @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
3160 @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
3161 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3162 #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
3163
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3164 if (args.length () != 3)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3165 print_usage ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3166
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3167 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
3168
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3169 initialize_java ();
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 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
3172
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3173 octave_value retval;
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3174
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3175 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
3176 {
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3177 octave_java *jobj = TO_JAVA (args(0));
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3178 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
3179 }
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3180 else if (args(0).is_string ())
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3181 {
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3182 std::string cls = args(0).string_value ();
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3183 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
3184 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3185 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3186 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
3187
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3188 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3189
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3190 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3191
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3192 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3193
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3194 err_disabled_feature ("__java_set__", "Java");
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3195
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3196 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3197 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3198
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
3199 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
3200 doc: /* -*- texinfo -*-
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
3201 @deftypefn {} {} __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
3202 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
3203 @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
3204 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3205 #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
3206
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3207 if (args.length () != 1)
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3208 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
3209
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3210 initialize_java ();
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3211
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3212 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
3213
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3214 octave_value_list retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3215
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3216 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
3217 {
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3218 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
3219 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
3220 }
20559
0650b8431037 eliminate more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20542
diff changeset
3221 else
20939
b17fda023ca6 maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents: 20893
diff changeset
3222 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
3223
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3224 return retval;
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3225
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3226 #else
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3227
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3228 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3229
25041
d5d61f1b6de0 Deprecate java2mat function.
Rik <rik@octave.org>
parents: 24853
diff changeset
3230 err_disabled_feature ("__java2mat__", "Java");
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3231
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3232 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3233 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3234
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3235 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
3236 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
3237 @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
3238 @deftypefnx {} {@var{old_val} =} java_matrix_autoconversion (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3239 @deftypefnx {} {} java_matrix_autoconversion (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3240 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
3241 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
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 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
3244
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3245 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
3246 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
3247 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
3248 @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
3249 @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
3250 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3251 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3252
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3253 return SET_INTERNAL_VARIABLE (java_matrix_autoconversion);
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3254
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3255 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3256
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3257 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3258 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3259
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3260 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
3261
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3262 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3263 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3264
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3265 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
3266 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
3267 @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
3268 @deftypefnx {} {@var{old_val} =} java_unsigned_autoconversion (@var{new_val})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3269 @deftypefnx {} {} java_unsigned_autoconversion (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3270 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
3271 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
3272
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3273 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
3274 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
3275
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3276 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
3277 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
3278 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
3279 @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
3280 @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
3281 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3282 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3283
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3284 return SET_INTERNAL_VARIABLE (java_unsigned_autoconversion);
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3285
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3286 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3287
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3288 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3289 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3290
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3291 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
3292
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3293 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3294 }
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3295
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3296 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
3297 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
3298 @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
3299 @deftypefnx {} {@var{old_val} =} debug_java (@var{new_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 @deftypefnx {} {} debug_java (@var{new_val}, "local")
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3301 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
3302 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
3303 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
3304
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3305 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
3306 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
3307 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
3308 @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
3309 @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
3310 {
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3311 #if defined (HAVE_JAVA)
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3312
15800
d9b8333df5e4 Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents: 15798
diff changeset
3313 return SET_INTERNAL_VARIABLE (debug_java);
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3314
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3315 #else
21691
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3316
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3317 octave_unused_parameter (args);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3318 octave_unused_parameter (nargout);
263d18409fdf Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents: 21661
diff changeset
3319
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3320 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
3321
15771
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3322 #endif
4698ea77aa75 Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents: 15770
diff changeset
3323 }
15736
6faa01ff2967 build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents: 15625
diff changeset
3324
21379
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3325 // 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
3326 // 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
3327 // installed.
93c489ca8a6b elimnate HAVE_JAVA from ov-java.h
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
3328
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3329 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
3330 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
3331 @deftypefn {} {} isjava (@var{x})
112b20240c87 move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents: 21894
diff changeset
3332 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
3333 @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
3334 @end deftypefn */)
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3335 {
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3336 if (args.length () != 1)
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3337 print_usage ();
20797
492738d32c60 eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents: 20765
diff changeset
3338
23578
7b47b7c2d6c7 maint: Deprecate is_java and replace with isjava.
Rik <rik@octave.org>
parents: 23577
diff changeset
3339 return ovl (args(0).isjava ());
15770
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3340 }
e61405133a76 Add new isjava function.
Rik <rik@octave.org>
parents: 15763
diff changeset
3341
20120
2db2db2df55b Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents: 20028
diff changeset
3342 /*
20152
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3343 ## 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
3344 %!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
3345 %! 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
3346 %! 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
3347
8187a66039e4 Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents: 20124
diff changeset
3348 ## 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
3349 ## 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
3350 %!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
3351 %! 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
3352 %! 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
3353 %! 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
3354 %! 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
3355 %! 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
3356
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3357 ## 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
3358 %!testif HAVE_JAVA; usejava ("jvm") <*38821>
21822
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3359 %! assert (class (javaObject ("java.lang.Byte", uint8 (1))), "java.lang.Byte");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3360 %! assert (class (javaObject ("java.lang.Byte", int8 (1))), "java.lang.Byte");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3361 %! assert (class (javaObject ("java.lang.Short", uint16 (1))), "java.lang.Short");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3362 %! assert (class (javaObject ("java.lang.Short", int16 (1))), "java.lang.Short");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3363 %! assert (class (javaObject ("java.lang.Integer", uint32 (1))), "java.lang.Integer");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3364 %! assert (class (javaObject ("java.lang.Integer", int32 (1))), "java.lang.Integer");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3365 %! assert (class (javaObject ("java.lang.Long", uint64 (1))), "java.lang.Long");
e56ba70108d3 Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents: 21780
diff changeset
3366 %! assert (class (javaObject ("java.lang.Long", int64 (1))), "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
3367
23681
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3368 ## 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
3369 %!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
3370 %! 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
3371 %! 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
3372 %! 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
3373 %! 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
3374 %! 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
3375
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3376 %!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
3377 %! 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
3378 %! 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
3379 %! 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
3380 %! 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
3381 %! 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
3382
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3383 %!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
3384 %! 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
3385 %! 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
3386 %! 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
3387 %! 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
3388 %! 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
3389
24671
5aa9c885ea18 Rewrite certain Java BIST tests to pass with Java 9 (bug #52627).
Rik <rik@octave.org>
parents: 24592
diff changeset
3390 %!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
3391 %! 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
3392 %! 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
3393 %! 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
3394 %! 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
3395
25305
47c803b4b8ae test: tag possible test failure with known bug #51804
Mike Miller <mtmiller@octave.org>
parents: 25139
diff changeset
3396 %!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
3397 %! 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
3398 %! 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
3399 %! 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
3400 %! 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
3401
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3402 %!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
3403 %! 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
3404 %! 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
3405 %! 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
3406 %! 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
3407
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3408 %!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
3409 %! 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
3410 %! 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
3411 %! 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
3412 %! 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
3413 %! 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
3414 %! 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
3415
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3416 ## 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
3417 %!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
3418 %! 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
3419 %! 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
3420 %! 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
3421 %! 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
3422 %! 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
3423 %! assert (javaMethod ("valueOf", "java.lang.Double", double (1)), 1)
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3424 %! assert (class (javaMethod ("valueOf", "java.math.BigDecimal", double (1))), "java.math.BigDecimal")
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3425 %! assert (class (javaMethod ("valueOf", "java.math.BigInteger", int64 (1))), "java.math.BigInteger")
2f301a30aeed Add tests for Java numeric type conversion (bug #48013)
Mike Miller <mtmiller@octave.org>
parents: 22202
diff changeset
3426
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22407
diff changeset
3427 ## 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
3428 %!testif HAVE_JAVA; usejava ("jvm") <*45290>
21580
ecce63c99c3f maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents: 21547
diff changeset
3429 %! 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
3430 %! 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
3431 %! 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
3432
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3433 ## 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
3434 %!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
3435 %! 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
3436 %! assert (s.length (), 6)
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3437 %! 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
3438 %! 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
3439 %! assert (s.matches ("^Octave$"))
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3440 %! assert (s.startsWith ("Oct"))
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3441 %! ## 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
3442 %! a(1).s = s;
d197f62cde8a restore Java method calls by delegating indexing properly (bug #51152)
Mike Miller <mtmiller@octave.org>
parents: 23592
diff changeset
3443 %! 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
3444 %! 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
3445 %! 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
3446 %! 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
3447 %! 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
3448 %! 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
3449
8b5bc5e5f74b add unit tests creating and calling methods on some basic Java types
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 23671
diff changeset
3450 ## 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
3451 ## 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
3452 ## 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
3453 ## 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
3454 %!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
3455 %! 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
3456 %! 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
3457 %! 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
3458 */