[armedbear-devel] multidimensional java arrays?

Alan Ruttenberg alanruttenberg at gmail.com
Fri Feb 7 12:35:04 UTC 2014


CL-USER> (#"getMultiDimensional" 'Array)
#(#<jarray [I at 2b8edf4d {30E64E92}> #<jarray [I at 60306c52 {B17ACD4}> #<jarray
[I at 3f5397fc {91F41DF}> #<jarray [I at 631d9c26 {2CF6B5A0}>)
CL-USER> (#0"getMultiDimensional" 'Array)
#<jarray [[I at 4068f9fc {2BF4306D}>

or
(jstatic-raw "getMultiDimensional" (find-java-class "Array"))
#<jarray [[I at 56810247 {2FBCAFAF}>

So try using #0"..." if you are using jss or jcall-raw if not.

-Alan

On Thu, Feb 6, 2014 at 9:47 AM, Mark Evenson <evenson at panix.com> wrote:

>
> On Feb 6, 2014, at 2:52, Cyrus Harmon <ch-lisp at bobobeach.com> wrote:
>
> > I am trying to connect ABCL up with some java code that uses
> multidimensional arrays of the form:
> >
> >        int[][] theArray = new int[4][4];
> >
> > The problem is that when I call this code I get something like this in
> return:
> >
> >       #(#<jarray [I at 2d983837 {6492BA43}> #<jarray [I at 5d02b84a{5D9131FA}> #<jarray [I at 67684413{6E4D706E}> #<jarray [I at 1e107e55{4CD60DDE}>)
> >
> > that is a lisp array that contains 4 java arrays. I can’t pass this off
> to a method like this:
> >
> >    static public int[][] arrayTest2(int[][] oldArray) {
> >      …
> >    }
> >
> > I can work around this by creating a new java array myself (and
> populating it appropriately), but this is no fun. Is this the intended
> behavior?
>
> Regardless of whether this behavior was intended—for which I can find no
> evidence—it certainly seems wrong given that for the Java class:
>
> public class Array {
>   public static int[][] getMultiDimensional() {
>     return new int[4][4];
>   }
>
>   public static int[][] returnRef(int[][] ref) {
>     return ref;
>   }
> }
>
> Compiled with javac, (java:add-to-classpath “~/directory/“), then the
> following
>
> CL-USER> (java:jnew-array "int" 4 4)
> #<jarray [[I at 2e9e32cc {141906FD}>
> CL-USER> (jstatic "returnRef" "Array" *)
> #(#<jarray [I at 4147aa25 {47F3849E}> #<jarray [I at 4487c5f9 {2DD68195}>
>   #<jarray [I at 5dd574b5 {68E14733}> #<jarray [I at 1e099b10 {8A346D8}>)
>
> shows that we are clearly getting a different sort of Lisp object than we
> pass into the Java FFI for what should be a symmetric reflection.
>
> Filed as [ticket-347][].
>
>
> [ticket-347]: http://abcl.org/trac/ticket/347
>
>
>
> --
> "A screaming comes across the sky.  It has happened before but there is
> nothing
> to compare to it now."
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20140207/d5328fdf/attachment.html>


More information about the armedbear-devel mailing list