12 messages in net.java.dev.jna.usersRe: [jna-users] Buffer arguments as p...
FromSent OnAttachments
Albert StrasheimAug 22, 2007 3:47 pm 
Wayne MeissnerAug 22, 2007 4:19 pm 
Albert StrasheimAug 22, 2007 4:39 pm 
Wayne MeissnerAug 22, 2007 5:33 pm 
Albert StrasheimAug 22, 2007 5:47 pm 
Wayne MeissnerAug 22, 2007 6:13 pm 
Albert StrasheimAug 22, 2007 6:21 pm 
Albert StrasheimAug 22, 2007 6:26 pm 
Wayne MeissnerAug 22, 2007 8:05 pm 
Albert StrasheimAug 23, 2007 3:25 pm 
Wayne MeissnerAug 23, 2007 4:32 pm 
Albert StrasheimAug 23, 2007 4:50 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [jna-users] Buffer arguments as pointer-to-bufferActions...
From:Wayne Meissner (wmei@gmail.com)
Date:Aug 22, 2007 8:05:31 pm
List:net.java.dev.jna.users

Albert Strasheim wrote:

else if (arg instanceof Buffer) { if (!(arg instanceof ByteBuffer) || !((ByteBuffer)arg).isDirect()) {

I think any direct buffer can be passed through, so it should probably simply be:

else if (arg instanceof Buffer) { if !((Buffer)arg).isDirect()) {

That would be nice, apart from the fact that Buffer.isDirect() didn't appear until JDK 6 :-)

JNA needs to be JDK 1.4 and JDK 1.5 (for V3) compatible.

Also, it would be useful if I could write the function in the interface as:

void foo(Buffer buf);

and have it accept any direct buffer. Also, all the other variants should also work, e.g.,

That should work now for any JDK provided direct Buffer (unless I missed one).

void foo(FloatBuffer buf);

As far as I can tell, the tests don't cover these cases yet.

They do now.

I'm a bit uneasy about using undocumented behaviour here, since it could break on other VMs (e.g. gcj, JRE 1.4?). Then again, without using the undocumented behaviour, it won't work on them anyway, so we don't lose much.