This is very close to what you want. You do not want [ANY]
, since the size of the array is not "fixed" in C (it is specified by int
, but is not part of its type).
You can do your typography with:
%module test %typemap(jni) signed char *content "jbyteArray" %typemap(jtype) signed char *content "byte[]" %typemap(jstype) signed char *content "byte[]" %typemap(javaout) signed char *content { return $jnicall; } %typemap(out) signed char * content { $result = JCALL1(NewByteArray, jenv, arg1->contentLength); JCALL4(SetByteArrayRegion, jenv, $result, 0, arg1->contentLength, $1); } // Optional: ignore contentLength; %ignore contentLength; %inline %{ typedef struct { signed char * content; int contentLength; } Foo; %}
I might be missing something, but I donโt see a better way to get a "self" interpreter from inside this map than this - arg$argnum
does not work, and $self
does not matter. There are no other types that will be applied to this function that will help.
(Note that you probably also want to write memberin for signed char * content
or make it immutable. I would also tempt %ignore
the contentLength
member).
Flexo source share