Storing C++ data in an instance field using CNI?

Andrew Haley aph@redhat.com
Tue May 25 10:51:00 GMT 2004


David Daney writes:
 > Paul Gear wrote:
 > 
 > >Hi folks,
 > >
 > >I've searched the archives & Google without finding an answer to this
 > >question: is it possible using CNI to store C++ data in the object as an
 > >instance field?
 > >
 > >I need to store a struct defined in an external library within the
 > >object.  Can i just define a field that is of type Object and then use
 > >that as a pointer?  If i do this, do i need to use special malloc/free
 > >routines?
 > >
 > >Thanks in advance,
 > >Paul
 > >http://paulgear.webhop.net
 > >  
 > >
 > I think the traditional way to do it with JNI and CNI is to define an 
 > int (or long if using 64 bit pointers) member in the java object that 
 > will be casted to a pointer to the C++ data object.

Please, if you're going to use an integral type, use a long.  I once
spent more than a month converting a huge code base that used ints to
store pointers.

The other thing you can do if using an integral type, is:

foo bar (int /*PTR*/ first, int /*PTR*/ second)

and you can then mechanically convert from one to t'other with a
trivial script.

Andrew.



More information about the Java mailing list