[armedbear-devel] Question about calling Java
evenson at panix.com
Tue Feb 2 16:50:56 UTC 2010
Usually, I can find a way to translate given Java code into the ABCL
equivalent. Sometimes it takes quite a while to figure the correct
syntax which I attribute to the organically evolved nature of our Java
integration, but I have never found something ultimately unexpressable.
Until now, although I think this has to do with me trying to debug
ABCL internals with the ABCL REPL, but I want to document it. Have I
missed some way of making this call?
SimpleString h = new SimpleString("FOO");
LOGICAL_PATHNAME_TRANSLATIONS is a EqualHashTable object whose signature
of get() is
LispObject get(LispObject key)
(jnew "org.armedbear.lisp.SimpleString" "FOO"))
with the error
The value "org.armedbear.lisp.SimpleString" is not of type JAVA-OBJECT
Diving into the code shows that the Java.translateMethodArguments() call
is always going to translate the SimpleString argument into a instance
of java.lang.String as this is what SimpleString.javaInstance()
returns. Is there any way to tell JCALL not to perform such translation
on its arguments? JCALL-RAW doesn't convert its return value, but maybe
we need a JCALL-NAKED that doesn't translate its arguments? I suspect
that we don't need JCALL-NAKED for anyone not using Java objects that
are descendents of org.armedbear.lisp.LispObject but I'm not exactly
sure how to prove this claim.
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
More information about the armedbear-devel