JNIpp 1.0
JNI meets C++
|
Smart pointer for classes derived from Object. More...
Public Member Functions | |
ObjectPointer (ObjectType *object=0) | |
Constructs pointer with object ; by default constructs empty pointer. | |
template<class OtherObjectType > | |
ObjectPointer (OtherObjectType *object) | |
Constructs pointer with object derived from to ObjectType . | |
ObjectPointer (const ObjectPointer< ObjectType > &other) | |
Copy-constructor. | |
template<typename OtherObjectType > | |
ObjectPointer (const ObjectPointer< OtherObjectType > &other) | |
Copy-constructor that takes pointer to derived object. | |
virtual | ~ObjectPointer () |
Destructor; calls Reset() . | |
void | Swap (ObjectPointer< ObjectType > &other) |
Swaps content with another pointer. | |
void | Reset () |
Resets object pointer: releases and nulls contained object. | |
ObjectType * | Detach () |
Detaches contained object. | |
ObjectType * | Get () const |
Returns contained object. | |
ObjectType * | operator-> () const |
Returns contained object. | |
ObjectType & | operator* () const |
Returns reference to the contained object. | |
operator const UnknownObject * () const | |
Helper operator, allows for testing and comparing object pointers. | |
bool | operator! () const |
Tests whether object pointer is empty. | |
ObjectPointer< ObjectType > & | operator= (const ObjectPointer< ObjectType > &other) |
Assignment operator. | |
template<typename OtherObjectType > | |
ObjectPointer< ObjectType > & | operator= (const ObjectPointer< OtherObjectType > &other) |
Assignment operator for types derived from ObjectType . | |
virtual jobject | GetJObject () const |
Returns Java object that is contained in this pointer's object, or NULL if the pointer is empty. | |
Static Public Member Functions | |
static ObjectPointer< ObjectType > | New (...) |
Instantiates ObjectType and wraps it into ObjectPointer. | |
static ObjectPointer< ObjectType > | Wrap (const jni::LObject &object) |
Creates object pointer from local object. | |
static ObjectPointer< ObjectType > | Wrap (jobject object) |
Creates object pointer from java object. |
Smart pointer for classes derived from Object.
ObjectPointer adds a reference (Object::Retain()) to the object in constructor and releases (Object::Release()) in destructor. You must use this class because all JNIpp library is build around it (for example java::Cast() returns it).
ObjectPointer is derived from jni::AbstractObject, so you can (and in fact should) pass it to jni functions by value.
The next most useful thing is ObjectPointer::Wrap() method which wraps jni::LObject into ObjectType
. That method works for both wrapper and live classes:
ObjectType
is a wrapper class (Object::IsLiveType=false) new instance of ObjectType
is created using wrapping constructor (Object::Object(const jni::LObject&).ObjectType
is a live class (Object::IsLiveType=true) instance pointer is extracted from Java object using Object::GetLiveInstance() and wrapped into ObjectPointer. Object::GetInstanceFieldID() is used to get id of an instance field.ObjectPointer also features ObjectPointer::New() method which creates ObjectType
object and wraps it into ObjectPointer in one call. Compare:
Func(java::PString::New("Hello!"))
Func(java::PString(new java::String("Hello!")))
ObjectPointer supports the following usages:
if (objectPtr)
if (!objectPtr)
if (objectPtr1==objectPtr2)
if (objectPtr1!=objectPtr2)
EmailValidator.cpp, EmailValidator.h, LiveThread.cpp, LiveThread.h, NativeSound.cpp, and NativeSound.h.
java::ObjectPointer< ObjectType >::ObjectPointer | ( | ObjectType * | object = 0 | ) |
Constructs pointer with object
; by default constructs empty pointer.
Method calls Object::Retain()
on object
.
java::ObjectPointer< ObjectType >::ObjectPointer | ( | OtherObjectType * | object | ) |
Constructs pointer with object
derived from to ObjectType
.
Method calls Object::Retain()
on object
.
ObjectType* java::ObjectPointer< ObjectType >::Detach | ( | ) |
Detaches contained object.
Nulls and returns contained object. NOTE: don't forget to call Object::Release()
on returned object.
ObjectType& java::ObjectPointer< ObjectType >::operator* | ( | ) | const |
Returns reference to the contained object.
NOTE: make sure that object pointer contains non-NULL object before calling this method.
static ObjectPointer<ObjectType> java::ObjectPointer< ObjectType >::Wrap | ( | const jni::LObject & | object | ) | [static] |
Creates object pointer from local object.
No type checks are performed, you should make sure you are wrapping correct object.
static ObjectPointer<ObjectType> java::ObjectPointer< ObjectType >::Wrap | ( | jobject | object | ) | [static] |
Creates object pointer from java object.
No type checks are performed, you should make sure you are wrapping correct object.