ICU 73.2  73.2
Public Member Functions | Static Public Member Functions | Protected Attributes
icu::LocalPointerBase< T > Class Template Reference

"Smart pointer" base class; do not use directly: use LocalPointer etc. More...

#include <localpointer.h>

Inheritance diagram for icu::LocalPointerBase< T >:
icu::LocalArray< T > icu::LocalPointer< T >

Public Member Functions

 LocalPointerBase (T *p=nullptr)
 Constructor takes ownership.
 ~LocalPointerBase ()
 Destructor deletes the object it owns.
UBool isNull () const
 nullptr check.
UBool isValid () const
 nullptr check.
bool operator== (const T *other) const
 Comparison with a simple pointer, so that existing code with ==nullptr need not be changed.
bool operator!= (const T *other) const
 Comparison with a simple pointer, so that existing code with !=nullptr need not be changed.
T * getAlias () const
 Access without ownership change.
T & operator* () const
 Access without ownership change.
T * operator-> () const
 Access without ownership change.
T * orphan ()
 Gives up ownership; the internal pointer becomes nullptr.
void adoptInstead (T *p)
 Deletes the object it owns, and adopts (takes ownership of) the one passed in.

Static Public Member Functions

static void * operator new (size_t)
static void * operator new[] (size_t)

Protected Attributes

T * ptr
 Actual pointer.

Detailed Description

template<typename T>
class icu::LocalPointerBase< T >

"Smart pointer" base class; do not use directly: use LocalPointer etc.

Base class for smart pointer classes that do not throw exceptions.

Do not use this base class directly, since it does not delete its pointer. A subclass must implement methods that delete the pointer: Destructor and adoptInstead().

There is no operator T *() provided because the programmer must decide whether to use getAlias() (without transfer of ownership) or orphan() (with transfer of ownership and NULLing of the pointer).

See also:
LocalPointer
LocalArray
U_DEFINE_LOCAL_OPEN_POINTER
Stable:
ICU 4.4

Definition at line 68 of file localpointer.h.


Constructor & Destructor Documentation

template<typename T>
icu::LocalPointerBase< T >::LocalPointerBase ( T *  p = nullptr) [inline, explicit]

Constructor takes ownership.

Parameters:
psimple pointer to an object that is adopted
Stable:
ICU 4.4

Definition at line 82 of file localpointer.h.

template<typename T>
icu::LocalPointerBase< T >::~LocalPointerBase ( ) [inline]

Destructor deletes the object it owns.

Subclass must override: Base class does nothing.

Stable:
ICU 4.4

Definition at line 88 of file localpointer.h.


Member Function Documentation

template<typename T>
void icu::LocalPointerBase< T >::adoptInstead ( T *  p) [inline]

Deletes the object it owns, and adopts (takes ownership of) the one passed in.

Subclass must override: Base class does not delete the object.

Parameters:
psimple pointer to an object that is adopted
Stable:
ICU 4.4

Reimplemented in icu::LocalArray< T >, and icu::LocalPointer< T >.

Definition at line 153 of file localpointer.h.

template<typename T>
T* icu::LocalPointerBase< T >::getAlias ( ) const [inline]

Access without ownership change.

Returns:
the pointer value
Stable:
ICU 4.4

Definition at line 122 of file localpointer.h.

template<typename T>
UBool icu::LocalPointerBase< T >::isNull ( ) const [inline]

nullptr check.

Returns:
true if ==nullptr
Stable:
ICU 4.4

Definition at line 94 of file localpointer.h.

Referenced by icu::Locale::getKeywords(), and icu::Locale::getUnicodeKeywords().

template<typename T>
UBool icu::LocalPointerBase< T >::isValid ( ) const [inline]

nullptr check.

Returns:
true if !=nullptr
Stable:
ICU 4.4

Definition at line 100 of file localpointer.h.

template<typename T>
bool icu::LocalPointerBase< T >::operator!= ( const T *  other) const [inline]

Comparison with a simple pointer, so that existing code with !=nullptr need not be changed.

Parameters:
othersimple pointer for comparison
Returns:
true if this pointer value differs from other
Stable:
ICU 4.4

Definition at line 116 of file localpointer.h.

template<typename T>
T& icu::LocalPointerBase< T >::operator* ( ) const [inline]

Access without ownership change.

Returns:
the pointer value as a reference
Stable:
ICU 4.4

Definition at line 128 of file localpointer.h.

template<typename T>
T* icu::LocalPointerBase< T >::operator-> ( ) const [inline]

Access without ownership change.

Returns:
the pointer value
Stable:
ICU 4.4

Definition at line 134 of file localpointer.h.

template<typename T>
bool icu::LocalPointerBase< T >::operator== ( const T *  other) const [inline]

Comparison with a simple pointer, so that existing code with ==nullptr need not be changed.

Parameters:
othersimple pointer for comparison
Returns:
true if this pointer value equals other
Stable:
ICU 4.4

Definition at line 108 of file localpointer.h.

template<typename T>
T* icu::LocalPointerBase< T >::orphan ( ) [inline]

Gives up ownership; the internal pointer becomes nullptr.

Returns:
the pointer value; caller becomes responsible for deleting the object
Stable:
ICU 4.4

Definition at line 141 of file localpointer.h.


Field Documentation

template<typename T>
T* icu::LocalPointerBase< T >::ptr [protected]

The documentation for this class was generated from the following file: