Mercurial > forge
changeset 3299:b50896cdcc20 octave-forge
Convert double[][] into double matrix.
author | goffioul |
---|---|
date | Fri, 30 Mar 2007 14:35:44 +0000 |
parents | f46ca3b02e0e |
children | cac692d87f7e |
files | extra/java/src/__java__.cc extra/java/src/org/octave/ClassHelper.java |
diffstat | 2 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/java/src/__java__.cc Thu Mar 29 19:12:47 2007 +0000 +++ b/extra/java/src/__java__.cc Fri Mar 30 14:35:44 2007 +0000 @@ -812,6 +812,33 @@ retval = Matrix (); } } + + if (retval.is_undefined ()) + { + jclass_ref cls = jni_env->FindClass ("[[D"); + if (jni_env->IsInstanceOf (jobj, cls)) + { + jobjectArray jarr = reinterpret_cast<jobjectArray> (jobj); + int rows = jni_env->GetArrayLength (jarr), cols = 0; + if (rows > 0) + { + Matrix m; + for (int r = 0; r < rows; r++) + { + jdoubleArray_ref row = reinterpret_cast<jdoubleArray> (jni_env->GetObjectArrayElement (jarr, r)); + if (m.length () == 0) + { + cols = jni_env->GetArrayLength (row); + m.resize (cols, rows); + } + jni_env->GetDoubleArrayRegion (row, 0, cols, m.fortran_vec () + r * cols); + } + retval = m.transpose (); + } + else + retval = Matrix(); + } + } } if (retval.is_undefined ())
--- a/extra/java/src/org/octave/ClassHelper.java Thu Mar 29 19:12:47 2007 +0000 +++ b/extra/java/src/org/octave/ClassHelper.java Fri Mar 30 14:35:44 2007 +0000 @@ -72,9 +72,11 @@ catch (Exception e) { Constructor[] cList = cls.getConstructors (); + //System.out.println("# constructors: " + cList.length); Constructor c; for (int i=0; i<cList.length; i++) { + //System.out.println("Considering constructor: " + cList[i]); c = cList[i]; if (c.getParameterTypes().length == argTypes.length && isCallableFrom (c, argTypes))