Mercurial > hg > octave-lyh
comparison libinterp/octave-value/ov-java.cc @ 15813:10d6ab9b1b4f
Implement octave_value function class_name() for class "octave_java"
* libinterp/octave-value/ov-class.cc(Fclass): Remove special code
for Java objects; Just call class_name() on octave_value object.
* libinterp/octave-value/ov-java.h: Declare octave_value type functions.
Rename confusing octave_java class private variable java_type to
java_classname.
* libinterp/octave-value/ov-java.cc: Replace tests for Java object
from class_name() == "octave_java" to is_java().
author | Rik <rik@octave.org> |
---|---|
date | Tue, 18 Dec 2012 10:29:51 -0800 |
parents | 01d4f742d75d |
children | f28b3dcbaa9a |
comparison
equal
deleted
inserted
replaced
15812:83bf6fd9e46d | 15813:10d6ab9b1b4f |
---|---|
1061 octave_value | 1061 octave_value |
1062 box_more (JNIEnv* jni_env, jobject jobj, jclass jcls) | 1062 box_more (JNIEnv* jni_env, jobject jobj, jclass jcls) |
1063 { | 1063 { |
1064 octave_value retval = box (jni_env, jobj, jcls); | 1064 octave_value retval = box (jni_env, jobj, jcls); |
1065 | 1065 |
1066 if (retval.class_name () == "octave_java") | 1066 if (retval.is_java ()) |
1067 { | 1067 { |
1068 retval = octave_value (); | 1068 retval = octave_value (); |
1069 | 1069 |
1070 jclass_ref cls (jni_env); | 1070 jclass_ref cls (jni_env); |
1071 | 1071 |
1151 unbox (JNIEnv* jni_env, const octave_value& val, jobject_ref& jobj, | 1151 unbox (JNIEnv* jni_env, const octave_value& val, jobject_ref& jobj, |
1152 jclass_ref& jcls) | 1152 jclass_ref& jcls) |
1153 { | 1153 { |
1154 int found = 1; | 1154 int found = 1; |
1155 | 1155 |
1156 if (val.class_name () == "octave_java") | 1156 if (val.is_java ()) |
1157 { | 1157 { |
1158 octave_java *ovj = TO_JAVA (val); | 1158 octave_java *ovj = TO_JAVA (val); |
1159 jobj = ovj->to_java (); | 1159 jobj = ovj->to_java (); |
1160 jobj.detach (); | 1160 jobj.detach (); |
1161 jcls = jni_env->GetObjectClass (jobj); | 1161 jcls = jni_env->GetObjectClass (jobj); |
1512 | 1512 |
1513 // octave_java class definition | 1513 // octave_java class definition |
1514 | 1514 |
1515 DEFINE_OCTAVE_ALLOCATOR (octave_java); | 1515 DEFINE_OCTAVE_ALLOCATOR (octave_java); |
1516 | 1516 |
1517 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_java, "octave_java", "octave_java"); | 1517 int octave_java::t_id (-1); |
1518 | |
1519 const std::string octave_java::t_name ("octave_java"); | |
1520 | |
1521 void | |
1522 octave_java::register_type (void) | |
1523 { | |
1524 t_id = octave_value_typeinfo::register_type | |
1525 (octave_java::t_name, "<unknown>", octave_value (new octave_java ())); | |
1526 } | |
1518 | 1527 |
1519 dim_vector | 1528 dim_vector |
1520 octave_java::dims (void) const | 1529 octave_java::dims (void) const |
1521 { | 1530 { |
1522 JNIEnv *current_env = thread_jni_env (); | 1531 JNIEnv *current_env = thread_jni_env (); |
1976 { | 1985 { |
1977 octave_value_list tmp; | 1986 octave_value_list tmp; |
1978 for (int i=2; i<args.length (); i++) | 1987 for (int i=2; i<args.length (); i++) |
1979 tmp(i-2) = args(i); | 1988 tmp(i-2) = args(i); |
1980 | 1989 |
1981 if (args(1).class_name () == "octave_java") | 1990 if (args(1).is_java ()) |
1982 { | 1991 { |
1983 octave_java *jobj = TO_JAVA (args(1)); | 1992 octave_java *jobj = TO_JAVA (args(1)); |
1984 retval = jobj->do_javaMethod (current_env, methodname, tmp); | 1993 retval = jobj->do_javaMethod (current_env, methodname, tmp); |
1985 } | 1994 } |
1986 else if (args(1).is_string ()) | 1995 else if (args(1).is_string ()) |
2038 if (args.length () == 2) | 2047 if (args.length () == 2) |
2039 { | 2048 { |
2040 std::string name = args(1).string_value (); | 2049 std::string name = args(1).string_value (); |
2041 if (! error_state) | 2050 if (! error_state) |
2042 { | 2051 { |
2043 if (args(0).class_name () == "octave_java") | 2052 if (args(0).is_java ()) |
2044 { | 2053 { |
2045 octave_java *jobj = TO_JAVA (args(0)); | 2054 octave_java *jobj = TO_JAVA (args(0)); |
2046 retval = jobj->do_java_get (current_env, name); | 2055 retval = jobj->do_java_get (current_env, name); |
2047 } | 2056 } |
2048 else if (args(0).is_string ()) | 2057 else if (args(0).is_string ()) |
2100 if (args.length () == 3) | 2109 if (args.length () == 3) |
2101 { | 2110 { |
2102 std::string name = args(1).string_value (); | 2111 std::string name = args(1).string_value (); |
2103 if (! error_state) | 2112 if (! error_state) |
2104 { | 2113 { |
2105 if (args(0).class_name () == "octave_java") | 2114 if (args(0).is_java ()) |
2106 { | 2115 { |
2107 octave_java *jobj = TO_JAVA (args(0)); | 2116 octave_java *jobj = TO_JAVA (args(0)); |
2108 retval = jobj->do_java_set (current_env, name, args(2)); | 2117 retval = jobj->do_java_set (current_env, name, args(2)); |
2109 } | 2118 } |
2110 else if (args(0).is_string ()) | 2119 else if (args(0).is_string ()) |
2144 { | 2153 { |
2145 JNIEnv *current_env = octave_java::thread_jni_env (); | 2154 JNIEnv *current_env = octave_java::thread_jni_env (); |
2146 | 2155 |
2147 if (args.length () == 1) | 2156 if (args.length () == 1) |
2148 { | 2157 { |
2149 if (args(0).class_name () == "octave_java") | 2158 if (args(0).is_java ()) |
2150 { | 2159 { |
2151 octave_java *jobj = TO_JAVA (args(0)); | 2160 octave_java *jobj = TO_JAVA (args(0)); |
2152 retval(0) = box_more (current_env, jobj->to_java (), 0); | 2161 retval(0) = box_more (current_env, jobj->to_java (), 0); |
2153 } | 2162 } |
2154 else | 2163 else |