ICU 54.1 54.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Data Structure Index
- Class Hierarchy
- Data Fields

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 >:

## Public Member Functions
| LocalPointerBase (T *p=NULL)
| Constructor takes ownership.
| ~LocalPointerBase ()
| Destructor deletes the object it owns.
UBool | isNull () const
| NULL check.
UBool | isValid () const
| NULL check.
bool | operator== (const T *other) const
| Comparison with a simple pointer, so that existing code with ==NULL need not be changed.
bool | operator!= (const T *other) const
| Comparison with a simple pointer, so that existing code with !=NULL 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 NULL.
void | adoptInstead (T *p)
| Deletes the object it owns, and adopts (takes ownership of) the one passed in.

## 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 orpan() (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 64 of file localpointer.h.

## Constructor & Destructor Documentation

template<typename T >

icu::LocalPointerBase< T >::LocalPointerBase | ( | T * | p = `NULL` | ) |
| inline explicit

Constructor takes ownership.

Parameters

  p | simple pointer to an object that is adopted

Stable:
  ICU 4.4

Definition at line 71 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 77 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

  p | simple pointer to an object that is adopted

Stable:
  ICU 4.4

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

Definition at line 142 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 111 of file localpointer.h.

template<typename T >

UBool icu::LocalPointerBase< T >::isNull | ( |  | ) | const
| inline

NULL check.

Returns
  TRUE if ==NULL

Stable:
  ICU 4.4

Definition at line 83 of file localpointer.h.

References NULL.

template<typename T >

UBool icu::LocalPointerBase< T >::isValid | ( |  | ) | const
| inline

NULL check.

Returns
  TRUE if !=NULL

Stable:
  ICU 4.4

Definition at line 89 of file localpointer.h.

References NULL.

template<typename T >

bool icu::LocalPointerBase< T >::operator!= | ( | const T * | other | ) | const
| inline

Comparison with a simple pointer, so that existing code with !=NULL 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 105 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 117 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 123 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 ==NULL 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 97 of file localpointer.h.

template<typename T >

T* icu::LocalPointerBase< T >::orphan | ( |  | ) |
| inline

Gives up ownership; the internal pointer becomes NULL.

Returns
  the pointer value; caller becomes responsible for deleting the object

Stable:
  ICU 4.4

Definition at line 130 of file localpointer.h.

References NULL.

## Field Documentation

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 151 of file localpointer.h.

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

- localpointer.h