|
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.