# HG changeset patch # User Rik # Date 1355965375 28800 # Node ID 00172e5c230253cd63541a1cdb23542bf85dafe6 # Parent 1e9a6285acc46cf68168725b0b08e38b8475052e Add autoconversion of Java numeric types (byte, short, integer, long, float) to Octave double. Operation is only for scalar return results and matches Matlab behavior. * libinterp/octave-value/ov-java.cc(box): Check for instance of superclass java.lang.Number and convert to double value. diff --git a/libinterp/octave-value/ov-java.cc b/libinterp/octave-value/ov-java.cc --- a/libinterp/octave-value/ov-java.cc +++ b/libinterp/octave-value/ov-java.cc @@ -923,20 +923,11 @@ if (! jobj) retval = Matrix (); + // Convert a scalar of any numeric class (byte, short, integer, long, float, + // double) to a double value. Matlab does the same thing. if (retval.is_undefined ()) { - cls = jni_env->FindClass ("java/lang/Integer"); - - if (jni_env->IsInstanceOf (jobj, cls)) - { - jmethodID m = jni_env->GetMethodID (cls, "intValue", "()I"); - retval = jni_env->CallIntMethod (jobj, m); - } - } - - if (retval.is_undefined ()) - { - cls = jni_env->FindClass ("java/lang/Double"); + cls = jni_env->FindClass ("java/lang/Number"); if (jni_env->IsInstanceOf (jobj, cls)) { @@ -952,7 +943,6 @@ if (jni_env->IsInstanceOf (jobj, cls)) { jmethodID m = jni_env->GetMethodID (cls, "booleanValue", "()Z"); - // MH retval = jni_env->CallBooleanMethod (jobj, m); retval = (jni_env->CallBooleanMethod (jobj, m) ? true : false); } }