[vtkusers] Returning datas as java array
Simon Chatelain
simon.chatelain at epfl.ch
Wed Nov 6 02:27:29 EST 2002
Jarek Sacha wrote:
>--- Simon Chatelain <simon.chatelain at epfl.ch> wrote:
>
>
>>Hello,
>>i'm still trying to transfer my vtkimageData via Java-RMI. But now, i'am
>>
>>trying to subclass vtkImageData to add a method who return
>>all the datas as a byte array. And i want to call this method from Java
>>to reiceve a java Byte Array (byte[]) but if the C++ method return a
>>char*
>>the wrapper understand that as returning a java String.
>>
>>
>
>[I did not follow what you were doing before, not sure what wrapper you
>mean above.]
>
>You can convert String to byte[] either using String.getBytes() method or
>CharacterEncoder class (new Java 1.4).
>
>Jarek
>
>
>
Hello,
The wrapper i mentionned is the vtkWrappJava executable who generate the
JNI c++ and java class.
And the problem is that c++ char type is a 8 bits type and the Java char
who compose a String is 16 bit unicode
character. So i cannot recast the string into byte, the datas are not
similar.
The general problem is to transfer a vtkImageData from a java
application to another via the Java-RMI system.
The first solution is to serialize the object, but as the java
vtkImageData object is a wrapp class to an c++ object,
i do'nt know how to serialize it. If i do this simply, only the java
object is transferred and not the data stored into
the C++ object.
So,now, the idea is to get the datas of the imageData as a raw byte
array, who is a type easily serializable, then i transfer
this raw data via RMI, and i reconstruct a vtkImageData object on the
other side.
My question is how to code a method in C++ who return this raw byte
array independently of the data type
(float, int, unsigned int, etc...), and who (after the generation of
wrapping class process) return a jarray of byte and not a String ?
Thanks
Simon
More information about the vtkusers
mailing list