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 (LocalPointer< T > &&src) U_NOEXCEPT
 Move constructor, leaves src with isNull().
 LocalPointer (std::unique_ptr< T > &&p)
 Constructs a LocalPointer from a C++11 std::unique_ptr.
 ~LocalPointer ()
 Destructor deletes the object it owns.
LocalPointer< T > & operator= (LocalPointer< T > &&src) U_NOEXCEPT
 Move assignment operator, leaves src with isNull().
LocalPointer< T > & operator= (std::unique_ptr< T > &&p) U_NOEXCEPT
 Move-assign from an std::unique_ptr to this LocalPointer.
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.
 operator std::unique_ptr< T > ()&&
 Conversion operator to a C++11 std::unique_ptr.

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
 char16_t lead=s->charAt(0);  // 0xd900
 if(some condition) { return; }  // no need to explicitly delete the pointer
 s.adoptInstead(new UnicodeString((char16_t)0xfffc));
 length=s->length();  // 1
 // no need to explicitly delete the pointer
See also:
LocalPointerBase
Stable:
ICU 4.4

Definition at line 191 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 200 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 214 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

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

Move constructor, leaves src with isNull().

Parameters:
src source smart pointer
Stable:
ICU 56

Definition at line 224 of file localpointer.h.

References NULL.

template<typename T>
icu::LocalPointer< T >::LocalPointer ( std::unique_ptr< T > &&  p  )  [inline, explicit]

Constructs a LocalPointer from a C++11 std::unique_ptr.

The LocalPointer steals the object owned by the std::unique_ptr.

This constructor works via move semantics. If your std::unique_ptr is in a local variable, you must use std::move.

Parameters:
p The std::unique_ptr from which the pointer will be stolen.
Draft:
This API may be changed in the future versions and was introduced in ICU 64

Definition at line 239 of file localpointer.h.

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

Destructor deletes the object it owns.

Stable:
ICU 4.4

Definition at line 247 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 304 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 323 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

template<typename T>
icu::LocalPointer< T >::operator std::unique_ptr< T > (  )  [inline]

Conversion operator to a C++11 std::unique_ptr.

Disowns the object and gives it to the returned std::unique_ptr.

This operator works via move semantics. If your LocalPointer is in a local variable, you must use std::move.

Returns:
An std::unique_ptr owning the pointer previously owned by this icu::LocalPointer.
Draft:
This API may be changed in the future versions and was introduced in ICU 64

Definition at line 347 of file localpointer.h.

template<typename T>
LocalPointer<T>& icu::LocalPointer< T >::operator= ( std::unique_ptr< T > &&  p  )  [inline]

Move-assign from an std::unique_ptr to this LocalPointer.

Steals the pointer from the std::unique_ptr.

Parameters:
p The std::unique_ptr from which the pointer will be stolen.
Returns:
*this
Draft:
This API may be changed in the future versions and was introduced in ICU 64

Definition at line 273 of file localpointer.h.

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

Move assignment operator, leaves src with isNull().

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

Parameters:
src source smart pointer
Returns:
*this
Stable:
ICU 56

Definition at line 257 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
Stable:
ICU 56

Definition at line 284 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
Stable:
ICU 56

Definition at line 295 of file localpointer.h.


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

Generated on 8 Feb 2022 for ICU 65.1 by  doxygen 1.6.1