Mercurial > hg > octave-lyh
comparison libinterp/octave-value/ov-java.cc @ 15822:e7d9db9531d1
Add conversion for Octave integer and single classes to Java int and float classes.
* libinterp/octave-value/ov-java.cc(unbox): Check is_double_type and convert
to Java Double or Java Float class. Check is_integer_type(all Octave integers)
and convert to Java Integer class (signed 32-bit int).
author | Rik <rik@octave.org> |
---|---|
date | Thu, 20 Dec 2012 08:12:55 -0800 |
parents | 72661fe4b9e5 |
children | abc9e5f3c661 |
comparison
equal
deleted
inserted
replaced
15821:72661fe4b9e5 | 15822:e7d9db9531d1 |
---|---|
1162 std::string s = val.string_value (); | 1162 std::string s = val.string_value (); |
1163 | 1163 |
1164 jobj = jni_env->NewStringUTF (s.c_str ()); | 1164 jobj = jni_env->NewStringUTF (s.c_str ()); |
1165 jcls = jni_env->GetObjectClass (jobj); | 1165 jcls = jni_env->GetObjectClass (jobj); |
1166 } | 1166 } |
1167 else if (val.is_real_scalar ()) | |
1168 { | |
1169 if (val.is_double_type ()) | |
1170 { | |
1171 double dval = val.double_value (); | |
1172 jclass_ref dcls (jni_env, jni_env->FindClass ("java/lang/Double")); | |
1173 jfieldID fid = jni_env->GetStaticFieldID (dcls, "TYPE", "Ljava/lang/Class;"); | |
1174 jmethodID mid = jni_env->GetMethodID (dcls, "<init>", "(D)V"); | |
1175 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (dcls, fid)); | |
1176 jobj = jni_env->NewObject (dcls, mid, dval); | |
1177 } | |
1178 else | |
1179 { | |
1180 float fval = val.float_scalar_value (); | |
1181 jclass_ref fcls (jni_env, jni_env->FindClass ("java/lang/Float")); | |
1182 jfieldID fid = jni_env->GetStaticFieldID (fcls, "TYPE", "Ljava/lang/Class;"); | |
1183 jmethodID mid = jni_env->GetMethodID (fcls, "<init>", "(F)V"); | |
1184 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (fcls, fid)); | |
1185 jobj = jni_env->NewObject (fcls, mid, fval); | |
1186 } | |
1187 } | |
1188 else if (val.is_integer_type () && val.is_scalar_type ()) | |
1189 { | |
1190 int32_t ival = val.int32_scalar_value (); | |
1191 jclass_ref icls (jni_env, jni_env->FindClass ("java/lang/Integer")); | |
1192 jfieldID fid = jni_env->GetStaticFieldID (icls, "TYPE", "Ljava/lang/Class;"); | |
1193 jmethodID mid = jni_env->GetMethodID (icls, "<init>", "(I)V"); | |
1194 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (icls, fid)); | |
1195 jobj = jni_env->NewObject (icls, mid, ival); | |
1196 } | |
1167 else if (val.is_bool_scalar ()) | 1197 else if (val.is_bool_scalar ()) |
1168 { | 1198 { |
1169 bool bval = val.bool_value (); | 1199 bool bval = val.bool_value (); |
1170 jclass_ref bcls (jni_env, jni_env->FindClass ("java/lang/Boolean")); | 1200 jclass_ref bcls (jni_env, jni_env->FindClass ("java/lang/Boolean")); |
1171 jfieldID fid = jni_env->GetStaticFieldID (bcls, "TYPE", "Ljava/lang/Class;"); | 1201 jfieldID fid = jni_env->GetStaticFieldID (bcls, "TYPE", "Ljava/lang/Class;"); |
1172 jmethodID mid = jni_env->GetMethodID (bcls, "<init>", "(Z)V"); | 1202 jmethodID mid = jni_env->GetMethodID (bcls, "<init>", "(Z)V"); |
1173 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (bcls, fid)); | 1203 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (bcls, fid)); |
1174 jobj = jni_env->NewObject (bcls, mid, bval); | 1204 jobj = jni_env->NewObject (bcls, mid, bval); |
1175 } | 1205 } |
1176 else if (val.is_real_scalar ()) | |
1177 { | |
1178 double dval = val.double_value (); | |
1179 jclass_ref dcls (jni_env, jni_env->FindClass ("java/lang/Double")); | |
1180 jfieldID fid = jni_env->GetStaticFieldID (dcls, "TYPE", "Ljava/lang/Class;"); | |
1181 jmethodID mid = jni_env->GetMethodID (dcls, "<init>", "(D)V"); | |
1182 jcls = reinterpret_cast<jclass> (jni_env->GetStaticObjectField (dcls, fid)); | |
1183 jobj = jni_env->NewObject (dcls, mid, dval); | |
1184 } | |
1185 else if (val.is_empty ()) | 1206 else if (val.is_empty ()) |
1186 { | 1207 { |
1187 jobj = 0; | 1208 jobj = 0; |
1209 jcls = 0; | |
1188 //jcls = jni_env->FindClass ("java/lang/Object"); | 1210 //jcls = jni_env->FindClass ("java/lang/Object"); |
1189 jcls = 0; | |
1190 } | 1211 } |
1191 else if (!Vjava_matrix_autoconversion | 1212 else if (!Vjava_matrix_autoconversion |
1192 && ((val.is_real_matrix () | 1213 && ((val.is_real_matrix () |
1193 && (val.rows () == 1 || val.columns () == 1)) | 1214 && (val.rows () == 1 || val.columns () == 1)) |
1194 || val.is_range ())) | 1215 || val.is_range ())) |