Storing C++ data in an instance field using CNI?
Dalibor Topic
robilad@kaffe.org
Tue May 25 11:42:00 GMT 2004
Andrew Haley wrote:
> 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.
wouldn't a
typedef long native_ptr;
be much better? Then you'd need to change it in a single place.
cheers,
dalibor topic
More information about the Java
mailing list