On Oct 24, 2008, at 11:07 AM, Kunal Shah wrote:
I am receiving a byte[] which is essentially a Structure reference.
Is there any reason you need the type byte[]?
Structure.getPointer() returns the address of the structure's
allocated memory. If you want to allocate it yourself (if, for
instance, your Structure is of variable size), you can allocate Memory
and use Structure.useMemory to point the Structure at it. This is
typically done in the Structure ctor.
Note that you can always make multiple function mappings with
appropriately typed arguments. For example:
void populateBuffer(byte[] buf);
void populateBuffer(MyStructure s);
can both be mapped onto a native function with the signature:
void populateBuffer(void *buf);
It's generally better to introduce type safety rather than copying bad
practices from C like casting between integers and pointers or
different pointer types.
In C:
char *data = new char[allocLength];
... update data ...
MESSAGE *rec = (MESSAGE *)data;
printf("status: %d\n", rec->status);
Where MESSAGE is a simple structure.
In Java:
byte[] data = new byte[allocLength];
... update data ...
Now what:
How can I convert a "byte[]" into "MessageStructure.ByReference".
And then how to read data out of it? I would appreciate actual code.
I am open for other options where I can use other than byte[] ....
ByteBuffer or Memory
Thanks,
Kunal