On Jun 27, 2007, at 1:34 AM, Wayne Meissner wrote:
Assuming img looks like:
class ImageHandle {
Pointer handle;
}
This way, you get the added type safety of specific java classes
(instead of using Pointer everywhere) without having to extend
Pointer (and having to work-around package-private constructors
like you did).
Unless you really need/want users to be able to access the Pointer
methods (like readInt, writeInt, etc), I recommend delegation over
inheritance when wrapping a C/C++ api like that.
It makes for a cleaner API, and doesn't clutter up code-completion/
intellisense with a bazillion methods you don't need.
I agree with Wayne on this one; delegation seems a better usage than
inheritance. None of the Pointer methods have anything to do with
your application/API object, and would likely just clutter any API
you design for it.
The current state of member/class access is not written in stone, but
mostly as restrictive as possible to communicate to the user which
classes they really need to be looking at. We're trying to drive
the API by actual usage, which unfortunately is limited right now to
Wayne's gstreamer work and my various experiments with various w32
and X11 APIs.