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))