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

## 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)=delete
static void * | operator new[] (size_t)=delete

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

## LocalPointerBase()

template<typename T >

icu::LocalPointerBase< T >::LocalPointerBase | ( | T * | p = `nullptr` | ) |

inline explicit

Constructor takes ownership.

Parameters

  p | simple pointer to an object that is adopted

Stable:
  ICU 4.4

Definition at line 82 of file localpointer.h.

## ~LocalPointerBase()

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

## adoptInstead()

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

  p | simple pointer to an object that is adopted

Stable:
  ICU 4.4

Definition at line 153 of file localpointer.h.

## getAlias()

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.

## isNull()

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

## isValid()

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.

## operator!=()

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

  other | simple pointer for comparison

Returns
  true if this pointer value differs from other

Stable:
  ICU 4.4

Definition at line 116 of file localpointer.h.

## operator*()

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.

## operator->()

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.

## operator==()

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

  other | simple pointer for comparison

Returns
  true if this pointer value equals other

Stable:
  ICU 4.4

Definition at line 108 of file localpointer.h.

## orphan()

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

## ptr

template<typename T >

T* icu::LocalPointerBase< T >::ptr

protected

Actual pointer.

Internal:
  Do not use. This API is for internal use only.

Definition at line 162 of file localpointer.h.

Referenced by icu::LocalArray< T >::LocalArray(), icu::LocalPointer< T >::LocalPointer(), icu::LocalArray< T >::operator=(), icu::LocalPointer< T >::operator=(), icu::LocalArray< T >::swap(), and icu::LocalPointer< T >::swap().

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

- common/unicode/localpointer.h