Mercurial > octave
annotate libinterp/octave-value/ov-java.cc @ 21822:e56ba70108d3 stable
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
* ov-java.cc (unbox): Invoke correct class name java.lang.Integer for 32 bit
integers. Use correct type signature "J" for 64 bit long integer values.
Add BIST tests.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Fri, 03 Jun 2016 20:51:45 -0700 |
parents | 3bbc8e89a24c |
children | 49d999dc443f |
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 |
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
17281
diff
changeset
|
3 Copyright (C) 2007, 2013 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 |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
10 option) any later version. |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
11 |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
15 for more details. |
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 |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
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 |
15736
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
24 #include <config.h> |
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
25 #endif |
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
26 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
27 #include "defun.h" |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
28 #include "error.h" |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
29 #include "fpucw.h" |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
30 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
31 #if HAVE_FPU_CONTROL_H |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
32 #include <fpu_control.h> |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
33 #endif |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
34 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
35 #if defined HAVE_JAVA |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 |
15755
3216dafbbd48
ov-java.cc: Correcty typo HAVE_WINDWOS_H to HAVE_WINDOWS_H
Rik <rik@octave.org>
parents:
15754
diff
changeset
|
37 #if defined (HAVE_WINDOWS_H) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 #include <windows.h> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 #include <algorithm> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 #include <map> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
43 #include <iostream> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 #include <fstream> |
20028
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
45 #include <string> |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 #include <clocale> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
49 #include "Cell.h" |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
50 #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
|
51 #include "defaults.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" |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
54 #include "load-path.h" |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
55 #include "oct-env.h" |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
56 #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
|
57 #include "ov-java.h" |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
58 #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
|
59 #include "variables.h" |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
60 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
61 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
|
62 void *args); |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
63 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
|
64 jsize *nVMs); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
66 extern "C" |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
67 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
68 JNIEXPORT jboolean JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
69 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
|
70 jobjectArray); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
71 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
72 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
|
73 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
74 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
75 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
|
76 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
77 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
78 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
|
79 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
80 JNIEXPORT jboolean JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
81 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *, jclass); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
82 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
83 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
84 static JavaVM *jvm = 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
85 static bool jvm_attached = false; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
86 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
87 // Need to keep hold of the shared library handle until exit. |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
88 static octave_shlib jvm_lib; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
89 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
90 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
|
91 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
|
92 static int octave_java_refcount = 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
93 static long octave_thread_ID = -1; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
94 |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
95 bool Vjava_matrix_autoconversion = false; |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
96 bool Vjava_unsigned_autoconversion = true; |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
97 bool Vdebug_java = false; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
98 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
99 class JVMArgs |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
100 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
101 public: |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
102 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
103 JVMArgs (void) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
104 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
105 vm_args.version = JNI_VERSION_1_2; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
106 vm_args.nOptions = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
107 vm_args.options = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
108 vm_args.ignoreUnrecognized = false; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
109 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
110 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
111 ~JVMArgs (void) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
112 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
113 clean (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
114 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
115 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
116 JavaVMInitArgs* to_args () |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
117 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
118 update (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
119 return &vm_args; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
120 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
121 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
122 void add (const std::string& opt) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
123 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
124 java_opts.push_back (opt); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
125 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
126 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
127 void read_java_opts (const std::string& filename) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
128 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
129 std::ifstream js (filename.c_str ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
130 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
131 if (! js.bad () && ! js.fail ()) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
132 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
133 std::string line; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
134 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
135 while (! js.eof () && ! js.fail ()) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
136 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
137 std::getline (js, line); |
21780
3bbc8e89a24c
Don't overly restrict options passed to Java jvm (bug #39063).
Rik <rik@octave.org>
parents:
20260
diff
changeset
|
138 if (line.find ("-") == 0) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
139 java_opts.push_back (line); |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
140 else if (line.length () > 0 && Vdebug_java) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
141 std::cerr << "invalid JVM option, skipping: " << line << std::endl; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
142 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
143 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
144 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
145 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
146 private: |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
147 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
148 void clean (void) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
149 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
150 if (vm_args.options != 0) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
151 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
152 for (int i = 0; i < vm_args.nOptions; i++) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
153 delete [] vm_args.options[i].optionString; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
154 delete [] vm_args.options; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
155 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
156 vm_args.options = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
157 vm_args.nOptions = 0; |
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 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
160 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
161 void update (void) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
162 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
163 clean (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
164 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
165 if (java_opts.size () > 0) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
166 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
167 int index = 0; |
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 vm_args.nOptions = java_opts.size (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
170 vm_args.options = new JavaVMOption [vm_args.nOptions]; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
171 for (std::list<std::string>::const_iterator it = java_opts.begin (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
172 it != java_opts.end (); ++it) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
173 { |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
174 if (Vdebug_java) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
175 std::cout << *it << std::endl; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
176 vm_args.options[index++].optionString = strsave ((*it).c_str ()); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
177 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
178 java_opts.clear (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
179 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
180 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
181 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
182 private: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
183 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
184 JavaVMInitArgs vm_args; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
185 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
186 std::list<std::string> java_opts; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
187 }; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
188 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
189 #ifdef __WIN32__ |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
190 static std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
191 read_registry_string (const std::string& key, const std::string& value) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
192 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
193 HKEY hkey; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
194 DWORD len; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
195 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
196 std::string retval; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
197 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
198 if (! RegOpenKeyEx (HKEY_LOCAL_MACHINE, key.c_str (), 0, KEY_READ, &hkey)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
199 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
200 if (! RegQueryValueEx (hkey, value.c_str (), 0, 0, 0, &len)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
201 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
202 retval.resize (len); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
203 if (RegQueryValueEx (hkey, value.c_str (), 0, 0, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
204 (LPBYTE)&retval[0], &len)) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
205 retval = ""; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
206 else if (retval[len-1] == '\0') |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
207 retval.resize (--len); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
208 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
209 RegCloseKey (hkey); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
210 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
211 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
212 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
213 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
214 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
215 static std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
216 get_module_filename (HMODULE hMod) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
217 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
218 int n = 1024; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
219 std::string retval (n, '\0'); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
220 bool found = false; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
221 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
222 while (n < 65536) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
223 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
224 int status = GetModuleFileName(hMod, &retval[0], n); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
225 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
226 if (status < n) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
227 { |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
228 retval.resize (n); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
229 found = true; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
230 break; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
231 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
232 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
233 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
234 n *= 2; |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
235 retval.resize (n); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
236 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
237 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
238 return (found ? retval : ""); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
239 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
240 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
241 static void |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
242 set_dll_directory (const std::string& dir = "") |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
243 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
244 typedef BOOL (WINAPI *dllfcn_t) (LPCTSTR path); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
245 |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
246 static dllfcn_t dllfcn = 0; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
247 static bool first = true; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
248 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
249 if (! dllfcn && first) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
250 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
251 HINSTANCE hKernel32 = GetModuleHandle ("kernel32"); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
252 dllfcn = reinterpret_cast<dllfcn_t> (GetProcAddress (hKernel32, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
253 "SetDllDirectoryA")); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
254 first = false; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
255 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
256 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
257 if (dllfcn) |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
258 dllfcn (dir.empty () ? 0 : dir.c_str ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
259 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
260 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
261 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
262 static std::string |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
263 initial_java_dir (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
264 { |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
265 static std::string java_dir; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
266 |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
267 if (java_dir.empty ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
268 { |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
269 java_dir = octave_env::getenv ("OCTAVE_JAVA_DIR"); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
270 |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
271 if (java_dir.empty ()) |
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
272 java_dir = Vfcn_file_dir + 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
|
273 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
274 |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
275 return java_dir; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
276 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
277 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
278 // Read the content of a file filename (usually "classpath.txt") |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
279 // |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
280 // Returns a string with all lines concatenated and separated |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
281 // by the path separator character. |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
282 // The return string also starts with a path separator so that |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
283 // it can be appended easily to a base classpath. |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
284 // |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
285 // The file "classpath.txt" must contain single lines, each |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
286 // with a classpath. |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
287 // Comment lines starting with a '#' or a '%' in column 1 are allowed. |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
288 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
289 static std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
290 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
|
291 { |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
292 std::string classpath; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
293 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
294 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
|
295 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
296 if (! fs.bad () && ! fs.fail ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
297 { |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
298 std::string line; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
299 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
300 while (! fs.eof () && ! fs.fail ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
301 { |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
302 std::getline (fs, line); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
303 |
15798
ac9e34f83522
Allow one char paths, like '/', in javaclasspath.txt
Rik <rik@octave.org>
parents:
15797
diff
changeset
|
304 if (line.length () > 0) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
305 { |
15798
ac9e34f83522
Allow one char paths, like '/', in javaclasspath.txt
Rik <rik@octave.org>
parents:
15797
diff
changeset
|
306 if (line[0] == '#' || line[0] == '%') |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
307 ; // skip comments |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
308 else |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
309 { |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
310 // prepend separator character |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
311 classpath.append (dir_path::path_sep_str ()); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
312 |
15798
ac9e34f83522
Allow one char paths, like '/', in javaclasspath.txt
Rik <rik@octave.org>
parents:
15797
diff
changeset
|
313 // append content of line without whitespace |
ac9e34f83522
Allow one char paths, like '/', in javaclasspath.txt
Rik <rik@octave.org>
parents:
15797
diff
changeset
|
314 int last = line.find_last_not_of (" \t\f\v\r\n"); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
315 |
15798
ac9e34f83522
Allow one char paths, like '/', in javaclasspath.txt
Rik <rik@octave.org>
parents:
15797
diff
changeset
|
316 classpath.append (file_ops::tilde_expand (line.substr (0, last+1))); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
317 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
318 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
319 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
320 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
321 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
322 return (classpath); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
323 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
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 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
326 initial_class_path (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 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
|
329 |
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
330 std::string retval = java_dir; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
331 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
332 // find octave.jar file |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
333 if (! retval.empty ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
334 { |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
335 std::string sep = file_ops::dir_sep_str (); |
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
336 |
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
337 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
|
338 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
339 file_stat jar_exists (jar_file); |
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 if (jar_exists) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
342 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
343 // initialize static classpath to octave.jar |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
344 retval = jar_file; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
345 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
346 // 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
|
347 // 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
|
348 // 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
|
349 // 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
|
350 // 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
|
351 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
352 // The filename is "javaclasspath.txt", but historically |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
353 // has been "classpath.txt" so both are supported. |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
354 std::string cp_list[] = {"javaclasspath.txt", "classpath.txt"}; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
355 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
356 for (int i=0; i<2; i++) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
357 { |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
358 std::string filename = cp_list[i]; |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
359 std::string cp_file = filename; |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
360 file_stat 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
|
361 |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
362 // 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
|
363 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
364 cp_exists = file_stat (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
|
365 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
|
366 { |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
367 // 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
|
368 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
|
369 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
|
370 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
371 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
372 // 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
|
373 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
374 cp_file = "~" + sep + filename; |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
375 cp_file = file_ops::tilde_expand (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
|
376 cp_exists = file_stat (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
|
377 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
|
378 { |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
379 // 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
|
380 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
|
381 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
|
382 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
383 |
15797
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
384 // 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
|
385 |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
386 cp_file = java_dir + sep + filename; |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
387 cp_exists = file_stat (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
|
388 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
|
389 { |
492893b98eef
Search for "javaclasspath.txt" as well as "classpath.txt" to set static class path.
Rik <rik@octave.org>
parents:
15792
diff
changeset
|
390 // 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
|
391 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
|
392 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
|
393 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
394 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
395 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
396 else |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
397 throw std::string ("octave.jar does not exist: ") + jar_file; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
398 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
399 else |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
400 throw std::string ("initial java dir is empty"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
401 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
402 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
403 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
404 |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
405 #ifndef _FPU_DEFAULT |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
406 #if defined __i386__ || defined __x86_64__ |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
407 #define _FPU_DEFAULT 0x037f |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
408 #else |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
409 #define _FPU_DEFAULT 0 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
410 #endif |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
411 #endif |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
412 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
413 static void |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
414 restore_fpu_state (void) |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
415 { |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
416 fpucw_t cw = GET_FPUCW (); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
417 if (cw != _FPU_DEFAULT) |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
418 SET_FPUCW (_FPU_DEFAULT); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
419 } |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
420 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
421 static void |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
422 initialize_jvm (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
423 { |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
424 // Most of the time JVM already exists and has been initialized. |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
425 if (jvm) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
426 return; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
427 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
428 JNIEnv *current_env; |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
429 const char *static_locale = setlocale (LC_ALL, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
430 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
|
431 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
432 #if defined (__WIN32__) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
433 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
434 HMODULE hMod = GetModuleHandle ("jvm.dll"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
435 std::string jvm_lib_path; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
436 std::string old_cwd; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
437 |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
438 if (hMod) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
439 { |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
440 // JVM seems to be already loaded, better to use that DLL instead |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
441 // of looking in the registry, to avoid opening a different JVM. |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
442 jvm_lib_path = get_module_filename (hMod); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
443 |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
444 if (jvm_lib_path.empty ()) |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
445 throw std::string ("unable to find Java Runtime Environment"); |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
446 } |
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
447 else |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
448 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
449 // In windows, find the location of the JRE from the registry |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
450 // and load the symbol from the dll. |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
451 std::string key, value; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
452 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
453 key = "software\\javasoft\\java runtime environment"; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
454 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
455 value = octave_env::getenv ("JAVA_VERSION"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
456 if (value.empty ()) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
457 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
458 value = "Currentversion"; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
459 std::string regval = read_registry_string (key,value); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
460 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
461 if (regval.empty ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
462 throw std::string ("unable to find Java Runtime Environment: ") |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
463 + key + "::" + value; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
464 value = regval; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
465 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
466 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
467 key = key + "\\" + value; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
468 value = "RuntimeLib"; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
469 jvm_lib_path = read_registry_string (key, value); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
470 if (jvm_lib_path.empty ()) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
471 throw std::string ("unable to find Java Runtime Environment: ") |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
472 + key + "::" + value; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
473 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
474 std::string jvm_bin_path; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
475 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
476 value = "JavaHome"; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
477 jvm_bin_path = read_registry_string (key, value); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
478 if (! jvm_bin_path.empty ()) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
479 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
480 jvm_bin_path = (jvm_bin_path + std::string ("\\bin")); |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
481 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
482 old_cwd = octave_env::get_current_directory (); |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
483 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
484 set_dll_directory (jvm_bin_path); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
485 octave_env::chdir (jvm_bin_path); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
486 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
487 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
488 |
15763
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
489 #else // Not Win32 system |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
490 |
15763
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
491 // JAVA_LDPATH determined by configure and set in config.h |
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
492 #if defined (__APPLE__) |
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
493 std::string jvm_lib_path = JAVA_LDPATH + std::string ("/libjvm.dylib"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
494 #else |
15763
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
495 std::string jvm_lib_path = JAVA_LDPATH + std::string ("/libjvm.so"); |
56239ff815a3
build: Overhaul auto-detection of Java when JAVA_HOME is not set.
Rik <rik@octave.org>
parents:
15755
diff
changeset
|
496 #endif |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
497 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
498 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
499 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
500 jsize nVMs = 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
501 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
502 # if !defined (__APPLE__) && !defined (__MACH__) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
503 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
504 octave_shlib lib (jvm_lib_path); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
505 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
506 if (!lib) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
507 throw std::string ("unable to load Java Runtime Environment from ") |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
508 + jvm_lib_path; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
509 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
510 #if defined (__WIN32__) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
511 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
512 set_dll_directory (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
513 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
514 if (! old_cwd.empty ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
515 octave_env::chdir (old_cwd); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
516 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
517 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
518 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
519 JNI_CreateJavaVM_t create_vm = |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
520 reinterpret_cast<JNI_CreateJavaVM_t> (lib.search ("JNI_CreateJavaVM")); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
521 JNI_GetCreatedJavaVMs_t get_vm = |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
522 reinterpret_cast<JNI_GetCreatedJavaVMs_t> (lib.search ("JNI_GetCreatedJavaVMs")); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
523 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
524 if (!create_vm) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
525 throw std::string ("unable to find JNI_CreateJavaVM in ") + jvm_lib_path; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
526 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
527 if (!get_vm) |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
528 throw std::string ("unable to find JNI_GetCreatedJavaVMs in ") |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
529 + jvm_lib_path; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
530 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
531 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
|
532 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
533 #else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
534 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
535 // FIXME: There exists a problem on the Mac platform that |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
536 // octave_shlib lib (jvm_lib_path) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
537 // doesn't work with 'not-bundled' *.oct files. |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
538 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
539 if (JNI_GetCreatedJavaVMs (&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
|
540 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
541 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
542 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
543 { |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
544 // At least one JVM exists, try to attach to it |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
545 |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
546 switch (jvm->GetEnv (reinterpret_cast<void **> (¤t_env), |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
547 JNI_VERSION_1_2)) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
548 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
549 case JNI_EDETACHED: |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
550 // Attach the current thread |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
551 JavaVMAttachArgs vm_args; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
552 vm_args.version = JNI_VERSION_1_2; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
553 vm_args.name = const_cast<char *> ("octave"); |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
554 vm_args.group = 0; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
555 if (jvm->AttachCurrentThread (reinterpret_cast<void **> (¤t_env), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
556 &vm_args) < 0) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
557 throw std::string ("JVM internal error, unable to attach octave to existing JVM"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
558 break; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
559 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
560 case JNI_EVERSION: |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
561 throw std::string ("JVM internal error, the required JNI version is not supported"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
562 break; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
563 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
564 case JNI_OK: |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
565 // 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
|
566 break; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
567 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
568 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
569 jvm_attached = true; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
570 //printf ("JVM attached\n"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
571 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
572 else |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
573 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
574 // No JVM exists, create one |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
575 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
576 JVMArgs vm_args; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
577 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
578 vm_args.add ("-Djava.class.path=" + initial_class_path ()); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
579 vm_args.add ("-Xrs"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
580 vm_args.add ("-Djava.system.class.loader=org.octave.OctClassLoader"); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
581 vm_args.read_java_opts (initial_java_dir () + file_ops::dir_sep_str () + |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
582 "java.opts"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
583 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
584 # if !defined (__APPLE__) && !defined (__MACH__) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
585 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
586 if (create_vm (&jvm, ¤t_env, vm_args.to_args ()) != JNI_OK) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
587 throw std::string ("unable to start Java VM in ")+jvm_lib_path; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
588 //printf ("JVM created\n"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
589 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
590 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
591 jvm_lib = lib; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
592 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
593 #else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
594 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
595 if (JNI_CreateJavaVM (&jvm, reinterpret_cast<void **> (¤t_env), |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
596 vm_args.to_args ()) != JNI_OK) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
597 throw std::string ("unable to start Java VM in ")+jvm_lib_path; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
598 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
599 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
600 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
601 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
602 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
603 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
|
604 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
605 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
606 static void |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
607 terminate_jvm (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
608 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
609 if (jvm) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
610 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
611 if (jvm_attached) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
612 jvm->DetachCurrentThread (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
613 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
614 jvm->DestroyJavaVM (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
615 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
616 jvm = 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
617 jvm_attached = false; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
618 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
619 if (jvm_lib) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
620 jvm_lib.close (); |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
621 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
622 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
623 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
624 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
625 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
626 std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
627 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
|
628 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
629 std::string retval; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
630 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
631 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
632 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
633 const char *cstr = jni_env->GetStringUTFChars (s, 0); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
634 retval = cstr; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
635 jni_env->ReleaseStringUTFChars (s, cstr); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
636 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
637 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
638 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
639 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
640 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
641 std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
642 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
|
643 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
644 std::string retval; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
645 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
646 if (jni_env && obj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
647 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
648 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
|
649 if (cls) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
650 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
651 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
|
652 retval = jstring_to_string (jni_env, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
653 reinterpret_cast<jstring> (obj)); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
654 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
655 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
656 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
657 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
658 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
659 |
15824
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
660 bool |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
661 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
|
662 { |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
663 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
|
664 |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
665 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
|
666 { |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
667 jclass_ref cls (current_env, current_env->FindClass ("java/lang/String")); |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
668 return current_env->IsInstanceOf (java_object, cls); |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
669 } |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
670 |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
671 return false; |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
672 } |
abc9e5f3c661
Return correct value for ischar() predicate test on octave_java objects.
Rik <rik@octave.org>
parents:
15822
diff
changeset
|
673 |
20028
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
674 bool |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
675 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
|
676 { |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
677 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
|
678 |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
679 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
|
680 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
|
681 |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
682 if (current_env && java_object) |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
683 { |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
684 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
|
685 if (current_env->ExceptionCheck ()) |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
686 current_env->ExceptionClear(); |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
687 else |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
688 return current_env->IsInstanceOf (java_object, cls); |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
689 } |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
690 return false; |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
691 } |
107130a0490c
isa: check parent class of java objects (bug #42702)
Carnë Draug <carandraug@octave.org>
parents:
19861
diff
changeset
|
692 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
693 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
694 check_exception (JNIEnv* jni_env) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
695 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
696 octave_value retval; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
697 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
698 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
|
699 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
700 if (ex) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
701 { |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
702 if (Vdebug_java) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
703 jni_env->ExceptionDescribe (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
704 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
705 jni_env->ExceptionClear (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
706 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
707 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
|
708 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
|
709 "()Ljava/lang/String;"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
710 jstring_ref js (jni_env, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
711 reinterpret_cast<jstring> (jni_env->CallObjectMethod (ex, mID))); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
712 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
|
713 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
714 error ("[java] %s", msg.c_str ()); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
715 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
716 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
717 retval = Matrix (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
718 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
719 return retval; |
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 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
722 static jclass |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
723 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
|
724 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
725 static std::string class_loader; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
726 static jclass uiClass = 0; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
727 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
728 jclass jcls = jni_env->FindClass (name); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
729 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
730 if (jcls == 0) |
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 jni_env->ExceptionClear (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
733 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
734 if (! uiClass) |
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 if (class_loader.empty ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
737 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
738 jclass_ref syscls (jni_env, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
739 jni_env->FindClass ("java/lang/System")); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
740 jmethodID mID = jni_env->GetStaticMethodID (syscls, "getProperty", "(Ljava/lang/String;)Ljava/lang/String;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
741 jstring_ref js (jni_env, jni_env->NewStringUTF ("octave.class.loader")); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
742 js = reinterpret_cast<jstring> (jni_env->CallStaticObjectMethod (syscls, mID, jstring (js))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
743 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
|
744 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
|
745 '.', '/'); |
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 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
748 jclass_ref uicls (jni_env, jni_env->FindClass (class_loader.c_str ())); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
749 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
750 if (! uicls) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
751 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
752 jni_env->ExceptionClear (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
753 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
754 /* Try the netbeans way */ |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
755 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
|
756 '/', '.'); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
757 jclass_ref jcls2 (jni_env, jni_env->FindClass ("org/openide/util/Lookup")); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
758 jmethodID mID = jni_env->GetStaticMethodID (jcls2, "getDefault", "()Lorg/openide/util/Lookup;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
759 jobject_ref lObj (jni_env, jni_env->CallStaticObjectMethod (jcls2, mID)); |
19861
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
760 mID = jni_env->GetMethodID (jcls2, "lookup", |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19598
diff
changeset
|
761 "(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
|
762 jclass_ref cLoaderCls (jni_env, jni_env->FindClass ("java/lang/ClassLoader")); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
763 jobject_ref cLoader (jni_env, jni_env->CallObjectMethod (lObj, mID, jclass (cLoaderCls))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
764 mID = jni_env->GetMethodID (cLoaderCls, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
765 jstring_ref js (jni_env, jni_env->NewStringUTF (class_loader.c_str ())); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
766 uicls = reinterpret_cast<jclass> (jni_env->CallObjectMethod (cLoader, mID, jstring (js))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
767 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
768 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
769 if (uicls) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
770 uiClass = reinterpret_cast<jclass> (jni_env->NewGlobalRef (jclass (uicls))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
771 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
772 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
773 if (uiClass) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
774 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
775 jmethodID mID = jni_env->GetStaticMethodID (uiClass, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
776 jstring_ref js (jni_env, jni_env->NewStringUTF (name)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
777 jcls = reinterpret_cast<jclass> (jni_env->CallStaticObjectMethod (uiClass, mID, jstring (js))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
778 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
779 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
780 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
781 return jcls; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
782 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
783 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
784 static dim_vector |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
785 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
|
786 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
787 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
|
788 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
|
789 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
|
790 jmethodID isArray_ID = jni_env->GetMethodID (ccls, "isArray", "()Z"); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
791 jmethodID getComponentType_ID = jni_env->GetMethodID (ccls, "getComponentType", "()Ljava/lang/Class;"); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
792 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
793 dim_vector dv (1, 1); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
794 int idx = 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
795 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
796 jobj.detach (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
797 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
|
798 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
799 int len = (jobj ? jni_env->GetArrayLength (jobj) : 0); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
800 if (idx >= dv.length ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
801 dv.resize (idx+1); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
802 dv(idx) = len; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
803 jcls = reinterpret_cast<jclass> (jni_env->CallObjectMethod (jcls, getComponentType_ID)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
804 jobj = (len > 0 ? reinterpret_cast<jobjectArray> (jni_env->GetObjectArrayElement (jobj, 0)) : 0); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
805 idx++; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
806 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
807 |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
808 restore_fpu_state (); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
809 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
810 return dv; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
811 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
812 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
813 static jobject |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
814 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
|
815 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
816 jclass_ref ocls (jni_env, jni_env->FindClass ("[I")); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
817 jobjectArray retval = jni_env->NewObjectArray (idx.length (), ocls, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
818 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
819 for (int i = 0; i < idx.length (); i++) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
820 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
821 idx_vector v = idx(i).index_vector (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
822 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
823 if (! error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
824 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
825 jintArray_ref i_array (jni_env, jni_env->NewIntArray (v.length ())); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
826 jint *buf = jni_env->GetIntArrayElements (i_array, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
827 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
828 for (int k = 0; k < v.length (); k++) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
829 buf[k] = v(k); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
830 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
831 jni_env->ReleaseIntArrayElements (i_array, buf, 0); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
832 jni_env->SetObjectArrayElement (retval, i, i_array); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
833 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
834 check_exception (jni_env); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
835 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
836 if (error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
837 break; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
838 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
839 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
840 break; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
841 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
842 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
843 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
844 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
845 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
846 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
847 get_array_elements (JNIEnv* jni_env, jobject jobj, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
848 const octave_value_list& idx) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
849 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
850 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
851 jobject_ref resObj (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
852 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
|
853 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
854 if (! error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
855 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
856 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
|
857 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "arraySubsref", "(Ljava/lang/Object;[[I)Ljava/lang/Object;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
858 resObj = jni_env->CallStaticObjectMethod (helperClass, mID, jobj, jobject (java_idx)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
859 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
860 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
861 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
862 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
863 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
864 retval = check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
865 |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
866 restore_fpu_state (); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
867 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
868 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
869 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
870 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
871 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
872 set_array_elements (JNIEnv* jni_env, jobject jobj, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
873 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
|
874 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
875 octave_value retval; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
876 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
877 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
|
878 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
|
879 jobject_ref rhsObj (jni_env); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
880 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
|
881 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
882 if (! error_state && unbox (jni_env, rhs, rhsObj, rhsCls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
883 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
884 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
|
885 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "arraySubsasgn", |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
886 "(Ljava/lang/Object;[[ILjava/lang/Object;)Ljava/lang/Object;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
887 resObj = jni_env->CallStaticObjectMethod (helperClass, mID, |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
888 jobj, jobject (java_idx), jobject (rhsObj)); |
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 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
891 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
892 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
893 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
894 retval = check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
895 |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
896 restore_fpu_state (); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
897 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
898 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
899 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
900 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
901 static string_vector |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
902 get_invoke_list (JNIEnv* jni_env, jobject jobj) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
903 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
904 std::list<std::string> name_list; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
905 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
906 if (jni_env) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
907 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
908 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
|
909 jclass_ref ccls (jni_env, jni_env->GetObjectClass (cls)); |
15859
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
910 jmethodID getMethods_ID = jni_env->GetMethodID (ccls, "getMethods", "()[Ljava/lang/reflect/Method;"); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
911 jmethodID getFields_ID = jni_env->GetMethodID (ccls, "getFields", "()[Ljava/lang/reflect/Field;"); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
912 jobjectArray_ref mList (jni_env, reinterpret_cast<jobjectArray> (jni_env->CallObjectMethod (cls, getMethods_ID))); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
913 jobjectArray_ref fList (jni_env, reinterpret_cast<jobjectArray> (jni_env->CallObjectMethod (cls, getFields_ID))); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
914 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
|
915 int fLen = jni_env->GetArrayLength (fList); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
916 jclass_ref mCls (jni_env, jni_env->FindClass ("java/lang/reflect/Method")); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
917 jclass_ref fCls (jni_env, jni_env->FindClass ("java/lang/reflect/Field")); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
918 jmethodID m_getName_ID = jni_env->GetMethodID (mCls, "getName", "()Ljava/lang/String;"); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
919 jmethodID f_getName_ID = jni_env->GetMethodID (fCls, "getName", "()Ljava/lang/String;"); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
920 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
921 for (int i = 0; i < mLen; i++) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
922 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
923 jobject_ref meth (jni_env, jni_env->GetObjectArrayElement (mList, i)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
924 jstring_ref methName (jni_env, reinterpret_cast<jstring> (jni_env->CallObjectMethod (meth, m_getName_ID))); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
925 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
|
926 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
927 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
928 for (int i = 0; i < fLen; i++) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
929 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
930 jobject_ref field (jni_env, jni_env->GetObjectArrayElement (fList, i)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
931 jstring_ref fieldName (jni_env, reinterpret_cast<jstring> (jni_env->CallObjectMethod (field, f_getName_ID))); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
932 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
|
933 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
934 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
935 restore_fpu_state (); |
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 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
938 string_vector v (name_list); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
939 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
940 return v.sort (true); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
941 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
942 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
943 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
944 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
|
945 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
946 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
947 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
948 if (jni_env && java_object) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
949 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
950 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
|
951 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
952 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
|
953 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
|
954 else if (force) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
955 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
956 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
|
957 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
958 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
|
959 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
960 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
|
961 int len = jni_env->GetArrayLength (array); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
962 Cell c (len, 1); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
963 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
964 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
|
965 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
966 jstring_ref js (jni_env, reinterpret_cast<jstring> (jni_env->GetObjectArrayElement (array, i))); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
967 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
968 if (js) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
969 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
|
970 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
971 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
972 c(i) = check_exception (jni_env); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
973 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
974 if (error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
975 break; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
976 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
977 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
978 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
979 retval = octave_value (c); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
980 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
981 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
982 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
983 cls = jni_env->FindClass ("java/lang/Object"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
984 jmethodID mID = jni_env->GetMethodID (cls, "toString", "()Ljava/lang/String;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
985 jstring_ref js (jni_env, reinterpret_cast<jstring> (jni_env->CallObjectMethod (java_object, mID))); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
986 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
987 if (js) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
988 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
|
989 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
990 retval = check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
991 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
992 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
993 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
994 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
|
995 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
996 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
997 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
998 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
999 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1000 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1001 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1002 #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
|
1003 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1004 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1005 box (JNIEnv* jni_env, jobject jobj, jclass jcls) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1006 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1007 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1008 jclass_ref cls (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1009 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1010 if (! jobj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1011 retval = Matrix (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1012 |
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
|
1013 while (retval.is_undefined ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1014 { |
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
|
1015 // Convert a scalar of any numeric class (byte, short, integer, long, |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1016 // float, double) to a double value. Matlab does the same thing. |
15820
00172e5c2302
Add autoconversion of Java numeric types (byte, short, integer, long, float) to Octave double.
Rik <rik@octave.org>
parents:
15816
diff
changeset
|
1017 cls = jni_env->FindClass ("java/lang/Number"); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1018 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1019 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1020 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
|
1021 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
|
1022 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1023 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1024 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1025 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
|
1026 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1027 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1028 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
|
1029 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
|
1030 break; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1031 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1032 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1033 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
|
1034 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1035 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1036 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
|
1037 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1038 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1039 |
15815
f28b3dcbaa9a
Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents:
15813
diff
changeset
|
1040 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
|
1041 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
|
1042 { |
f28b3dcbaa9a
Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents:
15813
diff
changeset
|
1043 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
|
1044 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
|
1045 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
|
1046 break; |
15815
f28b3dcbaa9a
Add autoconversion between java.lang.Character class and Octave string class.
Rik <rik@octave.org>
parents:
15813
diff
changeset
|
1047 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1048 |
20120
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1049 #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
|
1050 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
|
1051 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
|
1052 { \ |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1053 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
|
1054 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
|
1055 OCTAVE_ID ## NDArray d (dim_vector (len, 1)); \ |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1056 JAVA_TYPE * buffer = reinterpret_cast<JAVA_TYPE *> (d.fortran_vec ()); \ |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1057 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
|
1058 retval = d; \ |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1059 break; \ |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1060 } |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1061 |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1062 BOX_PRIMITIVE_ARRAY (jboolean, "[Z", Boolean, bool) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1063 BOX_PRIMITIVE_ARRAY (jchar, "[C", Char, char) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1064 BOX_PRIMITIVE_ARRAY (jbyte, "[B", Byte, int8) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1065 BOX_PRIMITIVE_ARRAY (jshort, "[S", Short, int16) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1066 BOX_PRIMITIVE_ARRAY (jint, "[I", Int, int32) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1067 BOX_PRIMITIVE_ARRAY (jlong, "[J", Long, int64) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1068 BOX_PRIMITIVE_ARRAY (jfloat, "[F", Float, Float) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1069 BOX_PRIMITIVE_ARRAY (jdouble, "[D", Double, ) |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1070 |
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
1071 #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
|
1072 |
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
|
1073 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
|
1074 { |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1075 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
|
1076 |
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
|
1077 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
|
1078 { |
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
|
1079 jmethodID mID = jni_env->GetMethodID (cls, "getDims", "()[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
|
1080 jintArray_ref iv (jni_env, reinterpret_cast<jintArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1081 jint *iv_data = jni_env->GetIntArrayElements (jintArray (iv), 0); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1082 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
|
1083 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
|
1084 |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1085 for (int i = 0; i < dims.length (); 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
|
1086 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
|
1087 |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1088 jni_env->ReleaseIntArrayElements (jintArray (iv), iv_data, 0); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1089 mID = jni_env->GetMethodID (cls, "getClassName", "()Ljava/lang/String;"); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1090 jstring_ref js (jni_env, reinterpret_cast<jstring> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1091 |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1092 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
|
1093 |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1094 if (s == "double") |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1095 { |
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
|
1096 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
|
1097 mID = jni_env->GetMethodID (cls, "toDouble", "()[D"); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1098 jdoubleArray_ref dv (jni_env, reinterpret_cast<jdoubleArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1099 jni_env->GetDoubleArrayRegion (dv, 0, m.length (), m.fortran_vec ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1100 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
|
1101 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1102 } |
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
|
1103 else if (s == "byte") |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1104 { |
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
|
1105 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
|
1106 { |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1107 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
|
1108 mID = jni_env->GetMethodID (cls, "toByte", "()[B"); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1109 jbyteArray_ref dv (jni_env, reinterpret_cast<jbyteArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1110 jni_env->GetByteArrayRegion (dv, 0, m.length (), reinterpret_cast<jbyte *> (m.fortran_vec ())); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1111 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
|
1112 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
|
1113 } |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1114 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
|
1115 { |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1116 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
|
1117 mID = jni_env->GetMethodID (cls, "toByte", "()[B"); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1118 jbyteArray_ref dv (jni_env, reinterpret_cast<jbyteArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1119 jni_env->GetByteArrayRegion (dv, 0, m.length (), reinterpret_cast<jbyte *> (m.fortran_vec ())); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1120 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
|
1121 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
|
1122 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1123 } |
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
|
1124 else if (s == "integer") |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1125 { |
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
|
1126 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
|
1127 { |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1128 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
|
1129 mID = jni_env->GetMethodID (cls, "toInt", "()[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
|
1130 jintArray_ref dv (jni_env, reinterpret_cast<jintArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1131 jni_env->GetIntArrayRegion (dv, 0, m.length (), reinterpret_cast<jint *> (m.fortran_vec ())); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1132 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
|
1133 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
|
1134 } |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1135 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
|
1136 { |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1137 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
|
1138 mID = jni_env->GetMethodID (cls, "toInt", "()[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
|
1139 jintArray_ref dv (jni_env, reinterpret_cast<jintArray> (jni_env->CallObjectMethod (jobj, mID))); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1140 jni_env->GetIntArrayRegion (dv, 0, m.length (), reinterpret_cast<jint *> (m.fortran_vec ())); |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1141 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
|
1142 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
|
1143 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1144 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1145 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1146 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1147 |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1148 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
|
1149 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1150 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1151 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
|
1152 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
|
1153 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
|
1154 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1155 if (it != octave_ref_map.end ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1156 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
|
1157 |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1158 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1159 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1160 |
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
|
1161 // No suitable class found. Return a generic octave_java object |
72661fe4b9e5
Short-circuit out of Java box code as soon as valid class has been found.
Rik <rik@octave.org>
parents:
15820
diff
changeset
|
1162 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
|
1163 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
|
1164 } |
15625
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 return retval; |
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 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1169 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1170 box_more (JNIEnv* jni_env, jobject jobj, jclass jcls) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1171 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1172 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
|
1173 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1174 if (retval.is_java ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1175 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1176 retval = octave_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1177 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1178 jclass_ref cls (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1179 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1180 if (retval.is_undefined ()) |
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 cls = jni_env->FindClass ("[D"); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1183 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1184 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1185 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1186 jdoubleArray jarr = reinterpret_cast<jdoubleArray> (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1187 int len = jni_env->GetArrayLength (jarr); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1188 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1189 if (len > 0) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1190 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1191 Matrix m (1, len); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1192 jni_env->GetDoubleArrayRegion (jarr, 0, len, m.fortran_vec ()); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1193 retval = m; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1194 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1195 else |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1196 retval = Matrix (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1197 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1198 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1199 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1200 if (retval.is_undefined ()) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1201 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1202 cls = jni_env->FindClass ("[[D"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1203 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1204 if (jni_env->IsInstanceOf (jobj, cls)) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1205 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1206 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
|
1207 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
|
1208 int cols = 0; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1209 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1210 if (rows > 0) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1211 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1212 Matrix m; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1213 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1214 for (int r = 0; r < rows; r++) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1215 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1216 jdoubleArray_ref row (jni_env, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1217 reinterpret_cast<jdoubleArray> (jni_env->GetObjectArrayElement (jarr, r))); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1218 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1219 if (m.length () == 0) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1220 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1221 cols = jni_env->GetArrayLength (row); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1222 m.resize (cols, rows); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1223 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1224 jni_env->GetDoubleArrayRegion (row, 0, cols, m.fortran_vec () + r * cols); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1225 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1226 retval = m.transpose (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1227 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1228 else |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1229 retval = Matrix (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1230 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1231 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1232 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1233 if (retval.is_undefined ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1234 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1235 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
|
1236 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1237 if (jni_env->IsInstanceOf (jobj, cls)) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1238 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1239 jobjectArray jarr = reinterpret_cast<jobjectArray> (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1240 int len = jni_env->GetArrayLength (jarr); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1241 Cell m (len, 1); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1242 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1243 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
|
1244 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1245 jstring_ref js (jni_env, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1246 reinterpret_cast<jstring> (jni_env->GetObjectArrayElement (jarr, i))); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1247 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
|
1248 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1249 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1250 retval = m; |
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 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1253 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1254 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1255 if (retval.is_undefined ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1256 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
|
1257 |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1258 restore_fpu_state (); |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1259 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1260 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1261 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1262 |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1263 bool |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1264 unbox (JNIEnv* jni_env, const octave_value& val, jobject_ref& jobj, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1265 jclass_ref& jcls) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1266 { |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1267 bool found = true; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1268 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1269 if (val.is_java ()) |
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 octave_java *ovj = TO_JAVA (val); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1272 jobj = ovj->to_java (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1273 jobj.detach (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1274 jcls = jni_env->GetObjectClass (jobj); |
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 else if (val.is_string ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1277 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1278 std::string s = val.string_value (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1279 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1280 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
|
1281 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1282 } |
20260
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1283 else if (val.is_cellstr ()) |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1284 { |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1285 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
|
1286 const octave_idx_type n = str_arr.numel (); |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1287 jclass_ref scls (jni_env, jni_env->FindClass ("java/lang/String")); |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1288 jobjectArray array = jni_env->NewObjectArray (n, scls, NULL); |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1289 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
|
1290 { |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1291 jstring_ref jstr (jni_env, jni_env->NewStringUTF (str_arr(i).c_str ())); |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1292 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
|
1293 } |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1294 jobj = array; |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
1295 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
|
1296 } |
20122
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1297 else if (val.numel () > 1 && val.dims ().is_vector ()) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1298 { |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1299 #define IF_UNBOX_PRIMITIVE_ARRAY(CHECK_TYPE, METHOD_TYPE, OCTAVE_TYPE, JAVA_TYPE, JAVA_TYPE_CAP) \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1300 if (val.is_ ## CHECK_TYPE ## _type ()) \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1301 { \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1302 const OCTAVE_TYPE ## NDArray v = val.METHOD_TYPE ## array_value (); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1303 JAVA_TYPE ## Array jarr = jni_env->New ## JAVA_TYPE_CAP ## Array (v.numel ()); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1304 const JAVA_TYPE* jv = reinterpret_cast<const JAVA_TYPE*> (v.data ()); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1305 jni_env->Set ## JAVA_TYPE_CAP ## ArrayRegion (jarr, 0, v.numel (), jv); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1306 jobj = reinterpret_cast<jobject> (jarr); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1307 jcls = jni_env->GetObjectClass (jobj); \ |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1308 } |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1309 |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1310 // 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
|
1311 // into a String[], not into a char array |
20250
209ee4a730f6
Convert double Octave vectors to double Java vectors (bug #45264).
Rik <rik@octave.org>
parents:
20163
diff
changeset
|
1312 IF_UNBOX_PRIMITIVE_ARRAY(double, , , jdouble, Double) |
209ee4a730f6
Convert double Octave vectors to double Java vectors (bug #45264).
Rik <rik@octave.org>
parents:
20163
diff
changeset
|
1313 else IF_UNBOX_PRIMITIVE_ARRAY(bool, bool_, bool, jboolean, Boolean) |
20122
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1314 else IF_UNBOX_PRIMITIVE_ARRAY(float, float_, Float, jfloat, Float) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1315 else IF_UNBOX_PRIMITIVE_ARRAY(int8, int8_, int8, jbyte, Byte) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1316 else IF_UNBOX_PRIMITIVE_ARRAY(uint8, uint8_, uint8, jbyte, Byte) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1317 else IF_UNBOX_PRIMITIVE_ARRAY(int16, int16_, int16, jshort, Short) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1318 else IF_UNBOX_PRIMITIVE_ARRAY(uint16, uint16_, uint16, jshort, Short) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1319 else IF_UNBOX_PRIMITIVE_ARRAY(int32, int32_, int32, jint, Int) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1320 else IF_UNBOX_PRIMITIVE_ARRAY(uint32, uint32_, uint32, jint, Int) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1321 else IF_UNBOX_PRIMITIVE_ARRAY(int64, int64_, int64, jlong, Long) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1322 else IF_UNBOX_PRIMITIVE_ARRAY(uint64, uint64_, uint64, jlong, Long) |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1323 |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1324 #undef IF_UNBOX_PRIMITIVE_ARRAY |
81fcf4aa9e03
Automatically convert octave vectors into java primitive arrays (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20121
diff
changeset
|
1325 } |
20123
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1326 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
|
1327 { |
20123
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1328 #define IF_UNBOX_PRIMITIVE_SCALAR(CHECK_TYPE, OCTAVE_TYPE, METHOD_TYPE, JAVA_TYPE, JAVA_CON) \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1329 if (val.is_ ## CHECK_TYPE ## _type ()) \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1330 { \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1331 const OCTAVE_TYPE ov = val.METHOD_TYPE ## _value (); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1332 jclass_ref dcls (jni_env, jni_env->FindClass (JAVA_TYPE)); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1333 const jfieldID fid = jni_env->GetStaticFieldID (dcls, "TYPE", "Ljava/lang/Class;"); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1334 const jmethodID mid = jni_env->GetMethodID (dcls, "<init>", JAVA_CON); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1335 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (dcls, fid)); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1336 jobj = jni_env->NewObject (dcls, mid, ov); \ |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1337 } |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1338 |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1339 IF_UNBOX_PRIMITIVE_SCALAR(double, double, double, "java/lang/Double", "(D)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1340 else IF_UNBOX_PRIMITIVE_SCALAR(float, float, float, "java/lang/Float", "(F)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1341 else IF_UNBOX_PRIMITIVE_SCALAR(bool, bool, bool, "java/lang/Boolean", "(Z)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1342 else IF_UNBOX_PRIMITIVE_SCALAR(int8, int8_t, int8_scalar, "java/lang/Byte", "(B)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1343 else IF_UNBOX_PRIMITIVE_SCALAR(uint8, uint8_t, uint8_scalar, "java/lang/Byte", "(B)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1344 else IF_UNBOX_PRIMITIVE_SCALAR(int16, int16_t, int16_scalar, "java/lang/Short", "(S)V") |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1345 else IF_UNBOX_PRIMITIVE_SCALAR(uint16, uint16_t, uint16_scalar, "java/lang/Short", "(S)V") |
21822
e56ba70108d3
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents:
21780
diff
changeset
|
1346 else IF_UNBOX_PRIMITIVE_SCALAR(int32, int32_t, int32_scalar, "java/lang/Integer", "(I)V") |
e56ba70108d3
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents:
21780
diff
changeset
|
1347 else IF_UNBOX_PRIMITIVE_SCALAR(uint32, uint32_t, uint32_scalar, "java/lang/Integer", "(I)V") |
e56ba70108d3
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents:
21780
diff
changeset
|
1348 else IF_UNBOX_PRIMITIVE_SCALAR(int64, int64_t, int64_scalar, "java/lang/Long", "(J)V") |
e56ba70108d3
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents:
21780
diff
changeset
|
1349 else IF_UNBOX_PRIMITIVE_SCALAR(uint64, uint64_t, uint64_scalar, "java/lang/Long", "(J)V") |
20123
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1350 |
8261c4a11250
Convert octave integer scalars into closest java type (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20122
diff
changeset
|
1351 #undef IF_UNBOX_PRIMITIVE_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
|
1352 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1353 else if (val.is_empty ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1354 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1355 jobj = 0; |
15822
e7d9db9531d1
Add conversion for Octave integer and single classes to Java int and float classes.
Rik <rik@octave.org>
parents:
15821
diff
changeset
|
1356 jcls = 0; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1357 //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
|
1358 } |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
1359 else if (!Vjava_matrix_autoconversion |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1360 && ((val.is_real_matrix () |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1361 && (val.rows () == 1 || val.columns () == 1)) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1362 || val.is_range ())) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1363 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1364 Matrix m = val.matrix_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1365 jdoubleArray dv = jni_env->NewDoubleArray (m.length ()); |
15859
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1366 jni_env->SetDoubleArrayRegion (dv, 0, m.length (), m.fortran_vec ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1367 jobj = dv; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1368 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1369 } |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
1370 else if (Vjava_matrix_autoconversion |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1371 && (val.is_matrix_type () || val.is_range ()) && val.is_real_type ()) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1372 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1373 jclass_ref mcls (jni_env, find_octave_class (jni_env, "org/octave/Matrix")); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1374 dim_vector dims = val.dims (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1375 jintArray_ref iv (jni_env, jni_env->NewIntArray (dims.length ())); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1376 jint *iv_data = jni_env->GetIntArrayElements (jintArray (iv), 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1377 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1378 for (int i = 0; i < dims.length (); i++) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1379 iv_data[i] = dims(i); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1380 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1381 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
|
1382 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1383 if (val.is_double_type ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1384 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1385 NDArray m = val.array_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1386 jdoubleArray_ref dv (jni_env, jni_env->NewDoubleArray (m.length ())); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1387 jni_env->SetDoubleArrayRegion (jdoubleArray (dv), 0, m.length (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1388 m.fortran_vec ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1389 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
|
1390 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
|
1391 jintArray (iv)); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1392 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1393 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1394 else if (val.is_int8_type ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1395 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1396 int8NDArray m = val.int8_array_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1397 jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.length ())); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1398 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.length (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1399 reinterpret_cast <jbyte *> (m.fortran_vec ())); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1400 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1401 jobj = jni_env->NewObject (jclass (mcls), mID, jbyteArray (bv), jintArray (iv)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1402 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1403 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1404 else if (val.is_uint8_type ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1405 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1406 uint8NDArray m = val.uint8_array_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1407 jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.length ())); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1408 jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.length (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1409 reinterpret_cast<jbyte *> (m.fortran_vec ())); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1410 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1411 jobj = jni_env->NewObject (jclass (mcls), mID, jbyteArray (bv), jintArray (iv)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1412 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1413 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1414 else if (val.is_int32_type ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1415 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1416 int32NDArray m = val.int32_array_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1417 jintArray_ref v (jni_env, jni_env->NewIntArray (m.length ())); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1418 jni_env->SetIntArrayRegion (jintArray (v), 0, m.length (), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1419 reinterpret_cast<jint *> (m.fortran_vec ())); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1420 jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([I[I)V"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1421 jobj = jni_env->NewObject (jclass (mcls), mID, jintArray (v), jintArray (iv)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1422 jcls = jni_env->GetObjectClass (jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1423 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1424 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1425 { |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1426 found = false; |
16766
7268845c0a1e
avoid backquote in error messages, some uses in doc strings
John W. Eaton <jwe@octave.org>
parents:
16295
diff
changeset
|
1427 error ("cannot convert matrix of type '%s'", val.class_name ().c_str ()); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1428 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1429 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1430 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1431 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1432 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
|
1433 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
|
1434 int ID = octave_java_refcount++; |
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 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
|
1437 jcls = rcls; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1438 octave_ref_map[ID] = val; |
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 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1441 return found; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1442 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1443 |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1444 bool |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1445 unbox (JNIEnv* jni_env, const octave_value_list& args, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1446 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
|
1447 { |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1448 bool found = true; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1449 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1450 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
|
1451 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
|
1452 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1453 if (! jobjs) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1454 jobjs = jni_env->NewObjectArray (args.length (), ocls, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1455 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1456 if (! jclss) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1457 jclss = jni_env->NewObjectArray (args.length (), ccls, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1458 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1459 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
|
1460 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1461 jobject_ref jobj (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1462 jclass_ref jcls (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1463 |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1464 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
|
1465 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
|
1466 break; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1467 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1468 jni_env->SetObjectArrayElement (jobjs, i, jobj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1469 jni_env->SetObjectArrayElement (jclss, i, jcls); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1470 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1471 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1472 return found; |
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 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1475 static long |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1476 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
|
1477 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1478 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1479 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1480 jclass_ref cls (jni_env, jni_env->FindClass ("java/lang/Thread")); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1481 jmethodID mID = jni_env->GetStaticMethodID (cls, "currentThread", "()Ljava/lang/Thread;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1482 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
|
1483 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1484 if (jthread) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1485 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1486 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
|
1487 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
|
1488 long result = jni_env->CallLongMethod (jthread, mID); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1489 //printf ("current java thread ID = %ld\n", result); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1490 return result; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1491 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1492 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1493 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1494 return -1; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1495 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1496 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1497 static int |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1498 java_event_hook (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1499 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1500 JNIEnv *current_env = octave_java::thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1501 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1502 if (current_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1503 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1504 jclass_ref cls (current_env, find_octave_class (current_env, "org/octave/Octave")); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1505 jmethodID mID = current_env->GetStaticMethodID (cls, "checkPendingAction", "()V"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1506 current_env->CallStaticVoidMethod (cls, mID); |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1507 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1508 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1509 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1510 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1511 return 0; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1512 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1513 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1514 static void |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1515 initialize_java (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1516 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1517 if (! jvm) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1518 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1519 try |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1520 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1521 initialize_jvm (); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1522 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1523 JNIEnv *current_env = octave_java::thread_jni_env (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1524 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1525 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
|
1526 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1527 octave_thread_ID = get_current_thread_ID (current_env); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1528 //printf ("octave thread ID=%ld\n", octave_thread_ID); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1529 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1530 catch (std::string msg) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1531 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1532 error (msg.c_str ()); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1533 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1534 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1535 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1536 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1537 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1538 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1539 JNIEXPORT jboolean JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1540 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
|
1541 jobjectArray argin, jobjectArray argout) |
15625
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 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
|
1544 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1545 int nargout = env->GetArrayLength (argout); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1546 int nargin = env->GetArrayLength (argin); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1547 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1548 octave_value_list varargin, varargout; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1549 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1550 for (int i = 0; i < nargin; i++) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1551 varargin(i) = box (env, env->GetObjectArrayElement (argin, i), 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1552 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1553 varargout = feval (fname, varargin, nargout); |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1554 if (error_state) |
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1555 return false; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1556 |
20121
41064c150724
Return bools instead of ints in oc-java box and unbox internal functions.
Carnë Draug <carandraug@octave.org>
parents:
20120
diff
changeset
|
1557 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
|
1558 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
|
1559 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
|
1560 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1561 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1562 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1563 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
|
1564 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1565 octave_ref_map.erase (ID); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1566 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1567 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1568 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1569 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
|
1570 jobjectArray args) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1571 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1572 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
|
1573 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1574 if (it != octave_ref_map.end ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1575 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1576 octave_value val = it->second; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1577 int len = env->GetArrayLength (args); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1578 octave_value_list oct_args; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1579 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1580 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
|
1581 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1582 jobject_ref jobj (env, env->GetObjectArrayElement (args, i)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1583 oct_args(i) = box (env, jobj, 0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1584 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1585 if (error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1586 break; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1587 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1588 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1589 if (! error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1590 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1591 BEGIN_INTERRUPT_WITH_EXCEPTIONS; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1592 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1593 if (val.is_function_handle ()) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1594 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1595 octave_function *fcn = val.function_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1596 feval (fcn, oct_args); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1597 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1598 else if (val.is_cell () && val.length () > 0 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1599 && (val.rows () == 1 || val.columns () == 1) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1600 && 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
|
1601 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1602 Cell c = val.cell_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1603 octave_function *fcn = c(0).function_value (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1604 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1605 for (int i=1; i<c.length (); i++) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1606 oct_args(len+i-1) = c(i); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1607 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1608 if (! error_state) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1609 feval (fcn, oct_args); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1610 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1611 else |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1612 error ("trying to invoke non-invocable object"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1613 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1614 END_INTERRUPT_WITH_EXCEPTIONS; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1615 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1616 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1617 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1618 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1619 JNIEXPORT void JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1620 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
|
1621 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1622 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
|
1623 int pstatus; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1624 eval_string (s, false, pstatus, 0); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1625 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1626 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1627 JNIEXPORT jboolean JNICALL |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1628 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
|
1629 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1630 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
|
1631 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1632 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1633 // octave_java class definition |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1634 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1635 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1636 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
|
1637 |
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1638 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
|
1639 |
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1640 void |
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1641 octave_java::register_type (void) |
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1642 { |
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1643 t_id = octave_value_typeinfo::register_type |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1644 (octave_java::t_name, "<unknown>", octave_value (new octave_java ())); |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
1645 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1646 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1647 dim_vector |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1648 octave_java::dims (void) const |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1649 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1650 JNIEnv *current_env = thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1651 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1652 if (current_env && java_object) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1653 return compute_array_dimensions (current_env, java_object); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1654 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1655 return dim_vector (1, 1); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1656 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1657 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1658 JNIEnv * |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1659 octave_java::thread_jni_env (void) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1660 { |
17898
8c33abdd2f9a
maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents:
17787
diff
changeset
|
1661 JNIEnv *env = 0; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1662 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1663 if (jvm) |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1664 jvm->GetEnv (reinterpret_cast<void **> (&env), JNI_VERSION_1_2); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1665 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1666 return env; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1667 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1668 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1669 octave_value_list |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1670 octave_java::subsref (const std::string& type, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1671 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
|
1672 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1673 octave_value_list retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1674 int skip = 1; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1675 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1676 JNIEnv *current_env = thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1677 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1678 switch (type[0]) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1679 { |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1680 case '.': |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1681 if (type.length () > 1 && type[1] == '(') |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1682 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1683 octave_value_list ovl; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1684 count++; |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1685 ovl(1) = octave_value (this); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1686 ovl(0) = (idx.front ())(0); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1687 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
|
1688 ovl.append (*++it); |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1689 retval = feval (std::string ("javaMethod"), ovl, 1); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1690 skip++; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1691 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1692 else |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1693 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1694 octave_value_list ovl; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1695 count++; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1696 ovl(0) = octave_value (this); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1697 ovl(1) = (idx.front ())(0); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
1698 retval = feval (std::string ("__java_get__"), ovl, 1); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1699 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1700 break; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1701 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1702 case '(': |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1703 if (current_env) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1704 retval = get_array_elements (current_env, to_java (), idx.front ()); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1705 break; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1706 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1707 default: |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1708 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
|
1709 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1710 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1711 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1712 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
|
1713 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
|
1714 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1715 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1716 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1717 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1718 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1719 octave_java::subsasgn (const std::string& type, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1720 const std::list<octave_value_list>&idx, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1721 const octave_value &rhs) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1722 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1723 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1724 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1725 JNIEnv *current_env = thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1726 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1727 switch (type[0]) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1728 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1729 case '.': |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1730 if (type.length () == 1) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1731 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1732 // field assignment |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1733 octave_value_list ovl; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1734 count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1735 ovl(0) = octave_value (this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1736 ovl(1) = (idx.front ())(0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1737 ovl(2) = rhs; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1738 feval ("__java_set__", ovl, 0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1739 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1740 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1741 count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1742 retval = octave_value (this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1743 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1744 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1745 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
|
1746 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1747 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
|
1748 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
|
1749 new_idx.push_back (*it++); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1750 new_idx.push_back (*it++); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1751 octave_value_list u = subsref (type.substr (0, 2), new_idx, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1752 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1753 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1754 std::list<octave_value_list> next_idx (idx); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1755 next_idx.erase (next_idx.begin ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1756 next_idx.erase (next_idx.begin ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1757 u(0).subsasgn (type.substr (2), next_idx, rhs); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1758 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1759 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1760 count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1761 retval = octave_value (this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1762 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1763 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1764 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1765 else if (type[1] == '.') |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1766 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1767 octave_value_list u = subsref (type.substr (0, 1), idx, 1); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1768 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1769 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1770 std::list<octave_value_list> next_idx (idx); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1771 next_idx.erase (next_idx.begin ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1772 u(0).subsasgn (type.substr (1), next_idx, rhs); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1773 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1774 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1775 count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1776 retval = octave_value (this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1777 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1778 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1779 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1780 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1781 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
|
1782 break; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1783 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1784 case '(': |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1785 if (current_env) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1786 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1787 set_array_elements (current_env, to_java (), idx.front (), rhs); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1788 if (! error_state) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1789 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1790 count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1791 retval = octave_value (this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1792 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1793 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1794 break; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1795 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1796 default: |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1797 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
|
1798 break; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1799 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1800 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1801 return retval; |
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 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1804 string_vector |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1805 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
|
1806 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1807 JNIEnv *current_env = thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1808 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1809 if (current_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1810 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
|
1811 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1812 return string_vector (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1813 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1814 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1815 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1816 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
|
1817 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1818 JNIEnv *current_env = thread_jni_env (); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1819 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1820 if (current_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1821 return convert_to_string (current_env, to_java (), force, type); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1822 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1823 return octave_value (""); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1824 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1825 |
15859
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1826 void |
18416
bcd71a2531d3
Support disp/display overloading in classdef
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18100
diff
changeset
|
1827 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
|
1828 { |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1829 print_raw (os); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1830 newline (os); |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1831 } |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1832 |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1833 void |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1834 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
|
1835 { |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1836 os << "<Java object: " << java_classname << ">"; |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1837 } |
0e393e744e5e
ov-java.cc: Replace instances of comma operator for code clarity.
Rik <rik@octave.org>
parents:
15858
diff
changeset
|
1838 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1839 octave_value |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1840 octave_java::do_javaMethod (JNIEnv* jni_env, const std::string& name, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1841 const octave_value_list& args) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1842 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1843 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1844 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1845 if (jni_env) |
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 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
|
1848 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
|
1849 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1850 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
|
1851 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
|
1852 "(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
|
1853 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
|
1854 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
|
1855 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
|
1856 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1857 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1858 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1859 retval = check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1860 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1861 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1862 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1863 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1864 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1865 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1866 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1867 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1868 octave_value |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1869 octave_java:: do_javaMethod (JNIEnv* jni_env, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1870 const std::string& class_name, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1871 const std::string& name, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1872 const octave_value_list& args) |
15625
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 octave_value retval; |
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 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1877 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1878 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
|
1879 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
|
1880 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1881 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
|
1882 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "invokeStaticMethod", |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1883 "(Ljava/lang/String;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
|
1884 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
|
1885 jstring_ref clsName (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
|
1886 jobject_ref resObj (jni_env, jni_env->CallStaticObjectMethod (helperClass, mID, |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1887 jstring (clsName), 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
|
1888 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1889 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1890 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1891 retval = check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1892 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1893 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1894 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1895 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1896 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1897 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1898 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1899 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1900 octave_value |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
1901 octave_java::do_javaObject (JNIEnv* jni_env, const std::string& name, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1902 const octave_value_list& args) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1903 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1904 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1905 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1906 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1907 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1908 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
|
1909 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1910 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
|
1911 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1912 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
|
1913 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "invokeConstructor", |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1914 "(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
|
1915 jstring_ref clsName (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
|
1916 jobject_ref resObj (jni_env, jni_env->CallStaticObjectMethod (helperClass, mID, |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1917 jstring (clsName), jobjectArray (arg_objs), jobjectArray (arg_types))); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1918 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1919 if (resObj) |
15816
59b6c6aee042
Don't box return values from javaObject. Always return a Java object.
Rik <rik@octave.org>
parents:
15815
diff
changeset
|
1920 retval = octave_value (new octave_java (resObj, 0)); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1921 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1922 check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1923 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1924 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1925 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1926 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1927 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1928 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1929 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1930 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1931 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1932 octave_java::do_java_get (JNIEnv* jni_env, const std::string& name) |
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 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1935 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1936 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1937 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1938 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
|
1939 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
|
1940 "(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
|
1941 jstring_ref fName (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
|
1942 jobject_ref resObj (jni_env, jni_env->CallStaticObjectMethod (helperClass, mID, |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1943 to_java (), jstring (fName))); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1944 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1945 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1946 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1947 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1948 retval = check_exception (jni_env); |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1949 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1950 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1951 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1952 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1953 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1954 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1955 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1956 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1957 octave_java::do_java_get (JNIEnv* jni_env, const std::string& class_name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1958 const std::string& name) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1959 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1960 octave_value retval; |
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 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1963 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1964 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
|
1965 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "getStaticField", |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1966 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;"); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1967 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
|
1968 jstring_ref fName (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
|
1969 jobject_ref resObj (jni_env, jni_env->CallStaticObjectMethod (helperClass, mID, |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1970 jstring (cName), jstring (fName))); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1971 if (resObj) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1972 retval = box (jni_env, resObj); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1973 else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1974 retval = check_exception (jni_env); |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1975 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
1976 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1977 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1978 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1979 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1980 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1981 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1982 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1983 octave_java::do_java_set (JNIEnv* jni_env, const std::string& name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
1984 const octave_value& val) |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1985 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1986 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1987 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1988 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1989 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1990 jobject_ref jobj (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1991 jclass_ref jcls (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1992 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1993 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
|
1994 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
1995 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
|
1996 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
|
1997 "(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
|
1998 jstring_ref fName (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
|
1999 jni_env->CallStaticObjectMethod (helperClass, mID, to_java (), jstring (fName), jobject (jobj)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2000 check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2001 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
2002 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
2003 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2004 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2005 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2006 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2007 } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2008 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2009 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2010 octave_java::do_java_set (JNIEnv* jni_env, const std::string& class_name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2011 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
|
2012 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2013 octave_value retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2014 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2015 if (jni_env) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2016 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2017 jobject_ref jobj (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2018 jclass_ref jcls (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2019 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2020 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
|
2021 { |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15743
diff
changeset
|
2022 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
|
2023 jmethodID mID = jni_env->GetStaticMethodID (helperClass, "setStaticField", |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2024 "(Ljava/lang/String;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
|
2025 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
|
2026 jstring_ref fName (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
|
2027 jni_env->CallStaticObjectMethod (helperClass, mID, jstring (cName), jstring (fName), jobject (jobj)); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2028 check_exception (jni_env); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2029 } |
16078
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
2030 |
9439f3b5c5fa
Restore default floating point state after calling Java
Mike Miller <mtmiller@ieee.org>
parents:
15879
diff
changeset
|
2031 restore_fpu_state (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2032 } |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
2033 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2034 return retval; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2035 } |
15736
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
2036 |
15806
01d4f742d75d
doc: Re-organize and improve Java Interface documentation.
Rik <rik@octave.org>
parents:
15800
diff
changeset
|
2037 #endif // endif on HAVE_JAVA |
01d4f742d75d
doc: Re-organize and improve Java Interface documentation.
Rik <rik@octave.org>
parents:
15800
diff
changeset
|
2038 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2039 // DEFUN blocks below must be outside of HAVE_JAVA block so that |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2040 // documentation strings are always available, even when functions are not. |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2041 |
15879
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2042 DEFUN (__java_init__, , , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2043 "-*- texinfo -*-\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2044 @deftypefn {Built-in Function} {} __java_init__ ()\n\ |
15879
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2045 Internal function used @strong{only} when debugging Java interface.\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2046 \n\ |
15879
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2047 Function will directly call initialize_java() to create an instance of a JVM.\n\ |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2048 @end deftypefn") |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2049 { |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2050 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2051 #ifdef HAVE_JAVA |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2052 octave_value retval; |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2053 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2054 retval = 0; |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2055 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2056 initialize_java (); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2057 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2058 if (! error_state) |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2059 retval = 1; |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2060 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2061 return retval; |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2062 #else |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2063 error ("__java_init__: Octave was not compiled with Java interface"); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2064 return octave_value (); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2065 #endif |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2066 } |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2067 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2068 DEFUN (__java_exit__, , , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2069 "-*- texinfo -*-\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2070 @deftypefn {Built-in Function} {} __java_exit__ ()\n\ |
15879
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2071 Internal function used @strong{only} when debugging Java interface.\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2072 \n\ |
15879
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2073 Function will directly call terminate_jvm() to destroy the current JVM\n\ |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2074 instance.\n\ |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2075 @end deftypefn") |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2076 { |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2077 #ifdef HAVE_JAVA |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2078 terminate_jvm (); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2079 #else |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2080 error ("__java_init__: Octave was not compiled with Java interface"); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2081 #endif |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2082 |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2083 return octave_value (); |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2084 } |
f69530e3600d
make docstrings for __java_init__ and __java_exit__ available unconditionally
John W. Eaton <jwe@octave.org>
parents:
15859
diff
changeset
|
2085 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2086 DEFUN (javaObject, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2087 "-*- texinfo -*-\n\ |
15792
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2088 @deftypefn {Built-in Function} {@var{jobj} =} javaObject (@var{classname})\n\ |
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2089 @deftypefnx {Built-in Function} {@var{jobj} =} javaObject (@var{classname}, @var{arg1}, @dots{})\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2090 Create a Java object of class @var{classsname}, by calling the class\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2091 constructor with the arguments @var{arg1}, @dots{}\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2092 \n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2093 The first example below creates an uninitialized object, while the second\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2094 example supplies an initial argument to the constructor.\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2095 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2096 @example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2097 @group\n\ |
15792
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2098 x = javaObject (\"java.lang.StringBuffer\")\n\ |
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2099 x = javaObject (\"java.lang.StringBuffer\", \"Initial string\")\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2100 @end group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2101 @end example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2102 \n\ |
15792
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2103 @seealso{javaMethod, javaArray}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2104 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2105 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2106 #ifdef HAVE_JAVA |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2107 octave_value retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2108 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2109 initialize_java (); |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2110 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2111 if (! error_state) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2112 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2113 JNIEnv *current_env = octave_java::thread_jni_env (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2114 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2115 if (args.length () > 0) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2116 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2117 if (args(0).is_string ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2118 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2119 std::string classname = args(0).string_value (); |
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2120 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2121 octave_value_list tmp; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2122 for (int i=1; i<args.length (); i++) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2123 tmp(i-1) = args(i); |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2124 retval = octave_java::do_javaObject (current_env, classname, tmp); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2125 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2126 else |
15792
12394261da0f
doc: tweak docstrings for javaObject and javaArray.
Rik <rik@octave.org>
parents:
15790
diff
changeset
|
2127 error ("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
|
2128 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2129 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2130 print_usage (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2131 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2132 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2133 return retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2134 #else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2135 error ("javaObject: Octave was not compiled with Java interface"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2136 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2137 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2138 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2139 |
15825
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2140 /* |
20152
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2141 ## The tests below merely check if javaObject() works at all. Whether it works |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2142 ## properly, i.e., creates the right values, is a matter of Java itself. |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2143 ## Create a Short and check if it really is a short, i.e., whether it overflows. |
15825
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2144 %!testif HAVE_JAVA |
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2145 %! 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
|
2146 */ |
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2147 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2148 DEFUN (javaMethod, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2149 "-*- texinfo -*-\n\ |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2150 @deftypefn {Built-in Function} {@var{ret} =} javaMethod (@var{methodname}, @var{obj})\n\ |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2151 @deftypefnx {Built-in Function} {@var{ret} =} javaMethod (@var{methodname}, @var{obj}, @var{arg1}, @dots{})\n\ |
15806
01d4f742d75d
doc: Re-organize and improve Java Interface documentation.
Rik <rik@octave.org>
parents:
15800
diff
changeset
|
2152 Invoke the method @var{methodname} on the Java object @var{obj} with the\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2153 arguments @var{arg1}, @dots{}.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2154 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2155 For static methods, @var{obj} can be a string representing the fully\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2156 qualified name of the corresponding class.\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2157 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2158 When @var{obj} is a regular Java object, structure-like indexing can be\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2159 used as a shortcut syntax. For instance, the two following statements are\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2160 equivalent\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2161 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2162 @example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2163 @group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2164 ret = javaMethod (\"method1\", x, 1.0, \"a string\")\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2165 ret = x.method1 (1.0, \"a string\")\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2166 @end group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2167 @end example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2168 \n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2169 @code{javaMethod} returns the result of the method invocation.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2170 \n\ |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2171 @seealso{methods, javaObject}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2172 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2173 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2174 #ifdef HAVE_JAVA |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2175 octave_value retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2176 |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2177 initialize_java (); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2178 |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2179 if (! error_state) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2180 { |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2181 JNIEnv *current_env = octave_java::thread_jni_env (); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2182 |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2183 if (args.length () > 1) |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2184 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2185 if (args(0).is_string ()) |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2186 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2187 std::string methodname = args(0).string_value (); |
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2188 |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2189 octave_value_list tmp; |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2190 for (int i=2; i<args.length (); i++) |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2191 tmp(i-2) = args(i); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2192 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
2193 if (args(1).is_java ()) |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2194 { |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2195 octave_java *jobj = TO_JAVA (args(1)); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2196 retval = jobj->do_javaMethod (current_env, methodname, tmp); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2197 } |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2198 else if (args(1).is_string ()) |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2199 { |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2200 std::string cls = args(1).string_value (); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2201 retval = octave_java::do_javaMethod (current_env, cls, methodname, tmp); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2202 } |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2203 else |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2204 error ("javaMethod: OBJ must be a Java object or a string"); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2205 } |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2206 else |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2207 error ("javaMethod: METHODNAME must be a string"); |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2208 } |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2209 else |
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2210 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
|
2211 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2212 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2213 return retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2214 #else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2215 error ("javaMethod: Octave was not compiled with Java interface"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2216 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2217 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2218 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2219 |
15825
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2220 /* |
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2221 %!testif HAVE_JAVA |
20152
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2222 %! ## Check for valid first two Java version numbers |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2223 %! jver = strsplit (javaMethod ("getProperty", "java.lang.System", "java.version"), "."); |
15825
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2224 %! assert (isfinite (str2double (jver{1})) && isfinite (str2double (jver{2}))); |
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2225 */ |
9854666df787
ov-java.cc: tests added for javaObject and javaMethod
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15824
diff
changeset
|
2226 |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2227 DEFUN (__java_get__, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2228 "-*- texinfo -*-\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2229 @deftypefn {Built-in Function} {@var{val} =} __java_get__ (@var{obj}, @var{name})\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2230 Get the value of the field @var{name} of the Java object @var{obj}.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2231 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2232 For static fields, @var{obj} can be a string representing the fully qualified\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2233 name of the corresponding class.\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2234 \n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2235 When @var{obj} is a regular Java object, structure-like indexing can be used\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2236 as a shortcut syntax. For instance, the two following statements are\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2237 equivalent\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2238 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2239 @example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2240 @group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2241 __java_get__ (x, \"field1\")\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2242 x.field1\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2243 @end group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2244 @end example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2245 \n\ |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2246 @seealso{__java_set__, javaMethod, javaObject}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2247 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2248 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2249 #ifdef HAVE_JAVA |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2250 octave_value retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2251 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2252 initialize_java (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2253 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2254 if (! error_state) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2255 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2256 JNIEnv *current_env = octave_java::thread_jni_env (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2257 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2258 if (args.length () == 2) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2259 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2260 if (args(1).is_string ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2261 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2262 std::string name = args(1).string_value (); |
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2263 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
2264 if (args(0).is_java ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2265 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2266 octave_java *jobj = TO_JAVA (args(0)); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2267 retval = jobj->do_java_get (current_env, name); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2268 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2269 else if (args(0).is_string ()) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2270 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2271 std::string cls = args(0).string_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2272 retval = octave_java::do_java_get (current_env, cls, name); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2273 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2274 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2275 error ("__java_get__: OBJ must be a Java object or a string"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2276 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2277 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2278 error ("__java_get__: NAME must be a string"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2279 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2280 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2281 print_usage (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2282 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2283 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2284 return retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2285 #else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2286 error ("__java_get__: Octave was not compiled with Java interface"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2287 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2288 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2289 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2290 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2291 DEFUN (__java_set__, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2292 "-*- texinfo -*-\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2293 @deftypefn {Built-in Function} {@var{obj} =} __java_set__ (@var{obj}, @var{name}, @var{val})\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2294 Set the value of the field @var{name} of the Java object @var{obj} to\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2295 @var{val}.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2296 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2297 For static fields, @var{obj} can be a string representing the fully\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2298 qualified named of the corresponding Java class.\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2299 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2300 When @var{obj} is a regular Java object, structure-like indexing can be\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2301 used as a shortcut syntax. For instance, the two following statements are\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2302 equivalent\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2303 \n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2304 @example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2305 @group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2306 __java_set__ (x, \"field1\", val)\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2307 x.field1 = val\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2308 @end group\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2309 @end example\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2310 \n\ |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2311 @seealso{__java_get__, javaMethod, javaObject}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2312 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2313 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2314 #ifdef HAVE_JAVA |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2315 octave_value retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2316 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2317 initialize_java (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2318 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2319 if (! error_state) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2320 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2321 JNIEnv *current_env = octave_java::thread_jni_env (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2322 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2323 if (args.length () == 3) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2324 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2325 if (args(1).is_string ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2326 { |
19403
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2327 std::string name = args(1).string_value (); |
03067dab10ca
Use stricter input validation when looking for a string as input (bug #42651).
Rik <rik@octave.org>
parents:
18416
diff
changeset
|
2328 |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
2329 if (args(0).is_java ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2330 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2331 octave_java *jobj = TO_JAVA (args(0)); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2332 retval = jobj->do_java_set (current_env, name, args(2)); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2333 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2334 else if (args(0).is_string ()) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2335 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2336 std::string cls = args(0).string_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2337 retval = octave_java::do_java_set (current_env, cls, name, args(2)); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2338 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2339 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2340 error ("__java_set__: OBJ must be a Java object or a string"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2341 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2342 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2343 error ("__java_set__: NAME must be a string"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2344 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2345 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2346 print_usage (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2347 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2348 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2349 return retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2350 #else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2351 error ("__java_set__: Octave was not compiled with Java interface"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2352 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2353 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2354 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2355 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2356 DEFUN (java2mat, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2357 "-*- texinfo -*-\n\ |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2358 @deftypefn {Built-in Function} {} java2mat (@var{javaobj})\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2359 Undocumented internal function.\n\ |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2360 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2361 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2362 #ifdef HAVE_JAVA |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2363 octave_value_list retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2364 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2365 initialize_java (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2366 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2367 if (! error_state) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2368 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2369 JNIEnv *current_env = octave_java::thread_jni_env (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2370 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2371 if (args.length () == 1) |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2372 { |
15813
10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
Rik <rik@octave.org>
parents:
15806
diff
changeset
|
2373 if (args(0).is_java ()) |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2374 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2375 octave_java *jobj = TO_JAVA (args(0)); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2376 retval(0) = box_more (current_env, jobj->to_java (), 0); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2377 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2378 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2379 retval(0) = args(0); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2380 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2381 else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2382 print_usage (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2383 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2384 |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2385 return retval; |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2386 #else |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2387 error ("java2mat: Octave was not compiled with Java interface"); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2388 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2389 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2390 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2391 |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2392 DEFUN (java_matrix_autoconversion, args, nargout, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2393 "-*- texinfo -*-\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2394 @deftypefn {Built-in Function} {@var{val} =} java_matrix_autoconversion ()\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2395 @deftypefnx {Built-in Function} {@var{old_val} =} java_matrix_autoconversion (@var{new_val})\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2396 @deftypefnx {Built-in Function} {} java_matrix_autoconversion (@var{new_val}, \"local\")\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2397 Query or set the internal variable that controls whether Java arrays are\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2398 automatically converted to Octave matrices.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2399 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2400 The default value is false.\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2401 \n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2402 When called from inside a function with the @qcode{\"local\"} option, the\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2403 variable is changed locally for the function and any subroutines it calls.\n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2404 The original variable value is restored when exiting the function.\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2405 @seealso{java_unsigned_autoconversion, debug_java}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2406 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2407 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2408 #ifdef HAVE_JAVA |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2409 return SET_INTERNAL_VARIABLE (java_matrix_autoconversion); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2410 #else |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2411 error ("java_matrix_autoconversion: Octave was not compiled with Java interface"); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2412 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2413 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2414 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2415 |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2416 DEFUN (java_unsigned_autoconversion, args, nargout, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2417 "-*- texinfo -*-\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2418 @deftypefn {Built-in Function} {@var{val} =} java_unsigned_autoconversion ()\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2419 @deftypefnx {Built-in Function} {@var{old_val} =} java_unsigned_autoconversion (@var{new_val})\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2420 @deftypefnx {Built-in Function} {} java_unsigned_autoconversion (@var{new_val}, \"local\")\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2421 Query or set the internal variable that controls how integer classes are\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2422 converted when @code{java_matrix_autoconversion} is enabled.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2423 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2424 When enabled, Java arrays of class Byte or Integer are converted to matrices\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2425 of class uint8 or uint32 respectively. The default value is true.\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2426 \n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2427 When called from inside a function with the @qcode{\"local\"} option, the\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2428 variable is changed locally for the function and any subroutines it calls.\n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2429 The original variable value is restored when exiting the function.\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2430 @seealso{java_matrix_autoconversion, debug_java}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2431 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2432 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2433 #ifdef HAVE_JAVA |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2434 return SET_INTERNAL_VARIABLE (java_unsigned_autoconversion); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2435 #else |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2436 error ("java_unsigned_autoconversion: Octave was not compiled with Java interface"); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2437 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2438 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2439 } |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2440 |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2441 DEFUN (debug_java, args, nargout, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2442 "-*- texinfo -*-\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2443 @deftypefn {Built-in Function} {@var{val} =} debug_java ()\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2444 @deftypefnx {Built-in Function} {@var{old_val} =} debug_java (@var{new_val})\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2445 @deftypefnx {Built-in Function} {} debug_java (@var{new_val}, \"local\")\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2446 Query or set the internal variable that determines whether extra debugging\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2447 information regarding the initialization of the JVM and any Java exceptions\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2448 is printed.\n\ |
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2449 \n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2450 When called from inside a function with the @qcode{\"local\"} option, the\n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20152
diff
changeset
|
2451 variable is changed locally for the function and any subroutines it calls.\n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16766
diff
changeset
|
2452 The original variable value is restored when exiting the function.\n\ |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2453 @seealso{java_matrix_autoconversion, java_unsigned_autoconversion}\n\ |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2454 @end deftypefn") |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2455 { |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2456 #ifdef HAVE_JAVA |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2457 return SET_INTERNAL_VARIABLE (debug_java); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2458 #else |
15800
d9b8333df5e4
Deprecate java_debug, java_convert_matrix, java_unsigned_conversion.
Rik <rik@octave.org>
parents:
15798
diff
changeset
|
2459 error ("debug_java: Octave was not compiled with Java interface"); |
15771
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2460 return octave_value (); |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2461 #endif |
4698ea77aa75
Hide java_init, java_exit functions. Deprecate java_new, java_set, java_get.
Rik <rik@octave.org>
parents:
15770
diff
changeset
|
2462 } |
15736
6faa01ff2967
build: Add --disable-java option to configure (bug #37838).
Rik <rik@octave.org>
parents:
15625
diff
changeset
|
2463 |
15770 | 2464 // Outside of #ifdef HAVE_JAVA because it is desirable to be able to |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2465 // test for the presence of a Java object without having Java installed. |
15770 | 2466 DEFUN (isjava, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2467 "-*- texinfo -*-\n\ |
15770 | 2468 @deftypefn {Built-in Function} {} isjava (@var{x})\n\ |
2469 Return true if @var{x} is a Java object.\n\ | |
15790
921912c92102
Deprecate java_invoke, replace with javaMethod.
Rik <rik@octave.org>
parents:
15771
diff
changeset
|
2470 @seealso{class, typeinfo, isa, javaObject}\n\ |
15770 | 2471 @end deftypefn") |
2472 { | |
2473 octave_value retval; | |
2474 | |
2475 if (args.length () != 1) | |
2476 print_usage (); | |
2477 else | |
2478 retval = args(0).is_java (); | |
2479 | |
2480 return retval; | |
2481 } | |
2482 | |
20120
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
2483 /* |
20152
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2484 ## Check automatic conversion of java primitive arrays into octave types. |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2485 %!testif HAVE_JAVA |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2486 %! 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
|
2487 %! 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
|
2488 |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2489 ## 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
|
2490 ## Note that uint8 is casted to int8. |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2491 %!testif HAVE_JAVA |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2492 %! 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
|
2493 %! 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
|
2494 %! 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
|
2495 %! 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
|
2496 %! 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
|
2497 |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2498 ## Check we can create objects that wrap java literals (bug #38821). |
8187a66039e4
Don't run Java BIST tests if HAVA_JAVA is false.
Rik <rik@octave.org>
parents:
20124
diff
changeset
|
2499 %!testif HAVE_JAVA |
21822
e56ba70108d3
Fix typos in Java conversion of 32 and 64 bit integers (bug #48107)
Mike Miller <mtmiller@octave.org>
parents:
21780
diff
changeset
|
2500 %! 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
|
2501 %! 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
|
2502 %! 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
|
2503 %! 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
|
2504 %! 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
|
2505 %! 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
|
2506 %! 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
|
2507 %! 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
|
2508 |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
2509 ## Automatic conversion from string cell array into String[] (bug #45290) |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
2510 %!testif HAVE_JAVA |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
2511 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "aaa"), 0) |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
2512 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "zzz"), 3) |
137f183b7dee
Fix conversion from string cell array into java's String[] (bug #45290)
Carnë Draug <carandraug@octave.org>
parents:
20250
diff
changeset
|
2513 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "hhh") < 0) |
20120
2db2db2df55b
Automatically convert arrays of java primitives into Octave types (bug #44882)
Carnë Draug <carandraug@octave.org>
parents:
20028
diff
changeset
|
2514 */ |