Mercurial > hg > octave-nkf
annotate libinterp/octave-value/ov-java.h @ 15767:e665645fb402
only register java type if using java
* ov.cc: Only include ov-java.h if HAVE_JAVA.
(install_types): Only call octave_java::register_type if HAVE_JAVA.
From Andreas Weber <andreas.weber@hs-offenburg.de>.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 12 Dec 2012 08:38:22 -0500 |
parents | f96faf028d90 |
children | e61405133a76 |
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 |
da26f72408a7
update copyright statements in newly added java files
John W. Eaton <jwe@octave.org>
parents:
15745
diff
changeset
|
3 Copyright (C) 2007 Michael Goffioul |
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 |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
23 #if !defined (octave_java_h) |
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
24 #define octave_java_h 1 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 #include <jni.h> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 |
15747
4be890c5527c
* __java__.cc, __java__.h: Clean up lists of include files.
John W. Eaton <jwe@octave.org>
parents:
15746
diff
changeset
|
28 #include <oct-obj.h> |
4be890c5527c
* __java__.cc, __java__.h: Clean up lists of include files.
John W. Eaton <jwe@octave.org>
parents:
15746
diff
changeset
|
29 #include <ov.h> |
4be890c5527c
* __java__.cc, __java__.h: Clean up lists of include files.
John W. Eaton <jwe@octave.org>
parents:
15746
diff
changeset
|
30 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 #ifdef JAVAPKG_BUILD |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 # define JAVAPKG_API OCTAVE_EXPORT |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 #else |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 # define JAVAPKG_API OCTAVE_IMPORT |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 #endif |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 template <class T> |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 class java_local_ref |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 public: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
41 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 java_local_ref (JNIEnv *_env) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
43 : jobj (0), detached (false), env (_env) { } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 java_local_ref (JNIEnv *_env, T obj) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
46 : jobj (obj), detached (false), env (_env) { } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
48 ~java_local_ref (void) { release (); } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
50 T& operator= (T obj) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
51 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
52 release (); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
53 jobj = obj; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
54 detached = false; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
55 return jobj; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
56 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
57 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
58 operator bool () const { return (jobj != 0); } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
59 operator T () { return jobj; } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
61 void detach (void) { detached = true; } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
63 private: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
64 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 void release (void) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
66 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
67 if (env && jobj && ! detached) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
68 env->DeleteLocalRef (jobj); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
69 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
70 jobj = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
71 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
72 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
73 java_local_ref (void) |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
74 : jobj (0), detached (false), env (0) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
75 { } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
76 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
77 protected: |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
78 T jobj; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
79 bool detached; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
80 JNIEnv *env; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
81 }; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
82 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
83 typedef java_local_ref<jobject> jobject_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
84 typedef java_local_ref<jclass> jclass_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
85 typedef java_local_ref<jstring> jstring_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
86 typedef java_local_ref<jobjectArray> jobjectArray_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
87 typedef java_local_ref<jintArray> jintArray_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
88 typedef java_local_ref<jbyteArray> jbyteArray_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
89 typedef java_local_ref<jdoubleArray> jdoubleArray_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
90 typedef java_local_ref<jthrowable> jthrowable_ref; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
91 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
92 extern JAVAPKG_API std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
93 jstring_to_string (JNIEnv* jni_env, jstring s); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
94 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
95 extern JAVAPKG_API std::string |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
96 jstring_to_string (JNIEnv* jni_env, jobject obj); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
97 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
98 extern JAVAPKG_API octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
99 box (JNIEnv* jni_env, jobject jobj, jclass jcls = 0); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
100 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
101 extern JAVAPKG_API octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
102 box_more (JNIEnv* jni_env, jobject jobj, jclass jcls = 0); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
103 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
104 extern JAVAPKG_API int |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
105 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
|
106 jclass_ref& jcls); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
107 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
108 extern JAVAPKG_API int |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
109 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
|
110 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
|
111 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
112 extern JAVAPKG_API bool Vjava_convert_matrix; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
113 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
114 extern JAVAPKG_API bool Vjava_unsigned_conversion; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
115 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
116 extern JAVAPKG_API bool Vjava_debug; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
117 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
118 class JAVAPKG_API octave_java : public octave_base_value |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
119 { |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
120 public: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
121 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
122 octave_java (void) |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15625
diff
changeset
|
123 : octave_base_value (), java_object (0), java_class (0) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
124 { } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
125 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
126 octave_java (const octave_java& jobj) |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15625
diff
changeset
|
127 : octave_base_value (jobj), java_object (0), java_class (0) |
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 init (jobj.java_object, jobj.java_class); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
130 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
131 |
15744
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15625
diff
changeset
|
132 octave_java (const jobject& obj, jclass cls = 0) |
686580b1a934
eliminate most compilation warnings for __java__.cc
John W. Eaton <jwe@octave.org>
parents:
15625
diff
changeset
|
133 : octave_base_value (), java_object (0) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
134 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
135 init (obj, cls); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
136 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
137 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
138 ~octave_java (void) { release (); } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
139 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
140 jobject to_java (void) const { return java_object; } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
141 jclass to_class (void) const { return java_class; } |
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 std::string java_class_name (void) const { return java_type; } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
144 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
145 octave_base_value* clone (void) const { return new octave_java (*this); } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
146 octave_base_value* empty_clone (void) const { return new octave_java (); } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
147 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
148 bool is_defined (void) const { return true; } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
149 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
150 bool is_map (void) const { return true; } |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
151 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
152 string_vector map_keys (void) const; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
153 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
154 dim_vector dims (void) const; |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
155 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
156 void print (std::ostream& os, bool pr_as_read_syntax = false) const |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
157 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
158 os << "<Java object: " << java_type << ">"; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
159 newline(os); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
160 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
161 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
162 void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
163 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
164 print(os, pr_as_read_syntax); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
165 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
166 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
167 octave_value_list |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
168 subsref (const std::string& type, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
169 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
|
170 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
171 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
172 subsref (const std::string& type, const std::list<octave_value_list>& idx) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
173 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
174 octave_value_list retval = subsref (type, idx, 1); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
175 return (retval.length () > 0 ? retval(0) : octave_value ()); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
176 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
177 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
178 octave_value subsasgn (const std::string& type, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
179 const std::list<octave_value_list>& idx, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
180 const octave_value& rhs); |
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 octave_value convert_to_str_internal (bool pad, bool force, char type) const; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
183 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
184 bool is_string (void) const |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
185 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
186 JNIEnv *current_env = thread_jni_env (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
187 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
188 if (current_env && java_object) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
189 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
190 jclass_ref cls (current_env, current_env->FindClass ("java/lang/String")); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
191 return current_env->IsInstanceOf (java_object, cls); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
192 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
193 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
194 return false; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
195 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
196 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
197 static JNIEnv* thread_jni_env (void); |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
198 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
199 octave_value do_java_invoke (JNIEnv* jni_env, const std::string& name, |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
200 const octave_value_list& args); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
201 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
202 octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
203 do_java_invoke (const std::string& name, const octave_value_list& args) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
204 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
205 return do_java_invoke(thread_jni_env (), name, args); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
206 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
207 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
208 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
209 do_java_invoke (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
|
210 const std::string& name, const octave_value_list& args); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
211 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
212 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
213 do_java_invoke (const std::string& class_name, const std::string& name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
214 const octave_value_list& args) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
215 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
216 return do_java_invoke(thread_jni_env (), class_name, name, args); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
217 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
218 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
219 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
220 do_java_create (JNIEnv* jni_env, const std::string& name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
221 const octave_value_list& args); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
222 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
223 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
224 do_java_create (const std::string& name, const octave_value_list& args) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
225 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
226 return do_java_create (thread_jni_env (), name, args); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
227 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
228 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
229 octave_value do_java_get (JNIEnv* jni_env, const std::string& name); |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
230 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
231 octave_value do_java_get (const std::string& name) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
232 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
233 return do_java_get (thread_jni_env (), name); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
234 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
235 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
236 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
237 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
|
238 const std::string& name); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
239 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
240 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
241 do_java_get (const std::string& class_name, const std::string& name) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
242 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
243 return do_java_get (thread_jni_env (), class_name, name); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
244 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
245 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
246 octave_value 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
|
247 const octave_value& val); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
248 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
249 octave_value do_java_set (const std::string& name, const octave_value& val) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
250 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
251 return do_java_set (thread_jni_env (), name, val); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
252 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
253 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
254 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
255 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
|
256 const std::string& name, const octave_value& val); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
257 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
258 static octave_value |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
259 do_java_set (const std::string& class_name, const std::string& name, |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
260 const octave_value& val) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
261 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
262 return do_java_set (thread_jni_env (), class_name, name, val); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
263 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
264 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
265 private: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
266 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
267 void init (jobject jobj, jclass jcls) |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
268 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
269 JNIEnv *current_env = thread_jni_env (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
270 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
271 if (current_env) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
272 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
273 if (jobj) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
274 java_object = current_env->NewGlobalRef (jobj); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
275 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
276 if (jcls) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
277 java_class = reinterpret_cast<jclass> (current_env->NewGlobalRef (jcls)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
278 else if (java_object) |
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 jclass_ref ocls (current_env, current_env->GetObjectClass (java_object)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
281 java_class = reinterpret_cast<jclass> (current_env->NewGlobalRef (jclass (ocls))); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
282 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
283 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
284 if (java_class) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
285 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
286 jclass_ref clsCls (current_env, current_env->GetObjectClass (java_class)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
287 jmethodID mID = current_env->GetMethodID (clsCls, "getCanonicalName", "()Ljava/lang/String;"); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
288 jobject_ref resObj (current_env, current_env->CallObjectMethod (java_class, mID)); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
289 java_type = jstring_to_string (current_env, resObj); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
290 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
291 } |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
292 } |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
293 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
294 void release (void) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
295 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
296 JNIEnv *current_env = thread_jni_env (); |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
297 |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
298 if (current_env) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
299 { |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
300 if (java_object) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
301 current_env->DeleteGlobalRef (java_object); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
302 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
303 if (java_class) |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
304 current_env->DeleteGlobalRef (java_class); |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
305 |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
306 java_object = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
307 java_class = 0; |
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
308 } |
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 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
311 private: |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
312 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
313 DECLARE_OCTAVE_ALLOCATOR |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
314 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
315 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
316 |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
317 jobject java_object; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
318 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
319 jclass java_class; |
15745
19850dfc2f88
* __java__.h, __java__.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
15744
diff
changeset
|
320 |
15625
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
321 std::string java_type; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
322 }; |
acf0addfc610
include Octave Forge java package in core Octave
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
323 |
15752
f96faf028d90
make java functions part of core octave_value classes
John W. Eaton <jwe@octave.org>
parents:
15747
diff
changeset
|
324 #endif |