icu::LocalPointer< T > Class Template Reference

"Smart pointer" class, deletes objects via the standard C++ delete operator. More...

#include <localpointer.h>

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

Public Member Functions

 LocalPointer (T *p=NULL)
 Constructor takes ownership.
 LocalPointer (T *p, UErrorCode &errorCode)
 Constructor takes ownership and reports an error if NULL.
 ~LocalPointer ()
 Destructor deletes the object it owns.
LocalPointer< T > & moveFrom (LocalPointer< T > &src) U_NOEXCEPT
 Move assignment, leaves src with isNull().
void swap (LocalPointer< T > &other) U_NOEXCEPT
 Swap pointers.
void adoptInstead (T *p)
 Deletes the object it owns, and adopts (takes ownership of) the one passed in.
void adoptInsteadAndCheckErrorCode (T *p, UErrorCode &errorCode)
 Deletes the object it owns, and adopts (takes ownership of) the one passed in.

Friends

void swap (LocalPointer< T > &p1, LocalPointer< T > &p2) U_NOEXCEPT
 Non-member LocalPointer swap function.

Detailed Description

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

"Smart pointer" class, deletes objects via the standard C++ delete operator.

For most methods see the LocalPointerBase base class.

Usage example:

 LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005));
 int32_t length=s->length();  // 2
 UChar lead=s->charAt(0);  // 0xd900
 if(some condition) { return; }  // no need to explicitly delete the pointer
 s.adoptInstead(new UnicodeString((UChar)0xfffc));
 length=s->length();  // 1
 // no need to explicitly delete the pointer
See also:
LocalPointerBase
Stable:
ICU 4.4

Definition at line 186 of file localpointer.h.


Constructor & Destructor Documentation

template<typename T>
icu::LocalPointer< T >::LocalPointer ( 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 195 of file localpointer.h.

template<typename T>
icu::LocalPointer< T >::LocalPointer ( T *  p,
UErrorCode errorCode 
) [inline]

Constructor takes ownership and reports an error if NULL.

This constructor is intended to be used with other-class constructors that may report a failure UErrorCode, so that callers need to check only for U_FAILURE(errorCode) and not also separately for isNull().

Parameters:
p simple pointer to an object that is adopted
errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR if p==NULL and no other failure code had been set
Stable:
ICU 55

Definition at line 209 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

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

Destructor deletes the object it owns.

Stable:
ICU 4.4

Definition at line 230 of file localpointer.h.


Member Function Documentation

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

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

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

Reimplemented from icu::LocalPointerBase< T >.

Definition at line 287 of file localpointer.h.

template<typename T>
void icu::LocalPointer< T >::adoptInsteadAndCheckErrorCode ( T *  p,
UErrorCode errorCode 
) [inline]

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

If U_FAILURE(errorCode), then the current object is retained and the new one deleted.

If U_SUCCESS(errorCode) but the input pointer is NULL, then U_MEMORY_ALLOCATION_ERROR is set, the current object is deleted, and NULL is set.

Parameters:
p simple pointer to an object that is adopted
errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR if p==NULL and no other failure code had been set
Stable:
ICU 55

Definition at line 306 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

template<typename T>
LocalPointer<T>& icu::LocalPointer< T >::moveFrom ( LocalPointer< T > &  src  )  [inline]

Move assignment, leaves src with isNull().

The behavior is undefined if *this and src are the same object.

Can be called explicitly, does not need C++11 support.

Parameters:
src source smart pointer
Returns:
*this
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 255 of file localpointer.h.

References NULL.

template<typename T>
void icu::LocalPointer< T >::swap ( LocalPointer< T > &  other  )  [inline]

Swap pointers.

Parameters:
other other smart pointer
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 266 of file localpointer.h.


Friends And Related Function Documentation

template<typename T>
void swap ( LocalPointer< T > &  p1,
LocalPointer< T > &  p2 
) [friend]

Non-member LocalPointer swap function.

Parameters:
p1 will get p2's pointer
p2 will get p1's pointer
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 278 of file localpointer.h.


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

Generated on 13 Dec 2017 for ICU 57.1 by  doxygen 1.6.1