ICU 76.1 76.1
Loading...
Searching...
No Matches
Public Member Functions | Friends
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=nullptr)
 Constructor takes ownership.
 
 LocalPointer (T *p, UErrorCode &errorCode)
 Constructor takes ownership and reports an error if nullptr.
 
 LocalPointer (LocalPointer< T > &&src) 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) noexcept
 Move assignment operator, leaves src with isNull().
 
LocalPointer< T > & operator= (std::unique_ptr< T > &&p) noexcept
 Move-assign from an std::unique_ptr to this LocalPointer.
 
void swap (LocalPointer< T > &other) 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.
 
- Public Member Functions inherited from icu::LocalPointerBase< T >
 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.
 
TgetAlias () const
 Access without ownership change.
 
Toperator* () const
 Access without ownership change.
 
Toperator-> () const
 Access without ownership change.
 
Torphan ()
 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.
 

Friends

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

Additional Inherited Members

- Static Public Member Functions inherited from icu::LocalPointerBase< T >
static voidoperator new (size_t)=delete
 
static voidoperator new[] (size_t)=delete
 
- Protected Attributes inherited from icu::LocalPointerBase< T >
Tptr
 Actual pointer.
 

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:

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
"Smart pointer" base class; do not use directly: use LocalPointer etc.
void adoptInstead(T *p)
Deletes the object it owns, and adopts (takes ownership of) the one passed in.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:296
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition umachine.h:427
See also
LocalPointerBase
Stable:
ICU 4.4

Definition at line 191 of file localpointer.h.

Constructor & Destructor Documentation

◆ LocalPointer() [1/4]

template<typename T >
icu::LocalPointer< T >::LocalPointer ( T p = nullptr)
inlineexplicit

Constructor takes ownership.

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

Definition at line 200 of file localpointer.h.

◆ LocalPointer() [2/4]

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

Constructor takes ownership and reports an error if nullptr.

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
psimple pointer to an object that is adopted
errorCodein/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR if p==nullptr and no other failure code had been set
Stable:
ICU 55

Definition at line 214 of file localpointer.h.

References U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

◆ LocalPointer() [3/4]

template<typename T >
icu::LocalPointer< T >::LocalPointer ( LocalPointer< T > &&  src)
inlinenoexcept

Move constructor, leaves src with isNull().

Parameters
srcsource smart pointer
Stable:
ICU 56

Definition at line 224 of file localpointer.h.

References icu::LocalPointerBase< T >::ptr.

◆ LocalPointer() [4/4]

template<typename T >
icu::LocalPointer< T >::LocalPointer ( std::unique_ptr< T > &&  p)
inlineexplicit

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
pThe std::unique_ptr from which the pointer will be stolen.
Stable:
ICU 64

Definition at line 238 of file localpointer.h.

◆ ~LocalPointer()

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

Destructor deletes the object it owns.

Stable:
ICU 4.4

Definition at line 245 of file localpointer.h.

Member Function Documentation

◆ adoptInstead()

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
psimple pointer to an object that is adopted
Stable:
ICU 4.4

Definition at line 300 of file localpointer.h.

◆ adoptInsteadAndCheckErrorCode()

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 nullptr, then U_MEMORY_ALLOCATION_ERROR is set, the current object is deleted, and nullptr is set.

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

Definition at line 319 of file localpointer.h.

References U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

◆ operator std::unique_ptr< T >()

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.
Stable:
ICU 64

Definition at line 342 of file localpointer.h.

◆ operator=() [1/2]

template<typename T >
LocalPointer< T > & icu::LocalPointer< T >::operator= ( LocalPointer< T > &&  src)
inlinenoexcept

Move assignment operator, leaves src with isNull().

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

Parameters
srcsource smart pointer
Returns
*this
Stable:
ICU 56

Definition at line 255 of file localpointer.h.

References icu::LocalPointerBase< T >::ptr.

◆ operator=() [2/2]

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

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

Steals the pointer from the std::unique_ptr.

Parameters
pThe std::unique_ptr from which the pointer will be stolen.
Returns
*this
Stable:
ICU 64

Definition at line 270 of file localpointer.h.

◆ swap()

template<typename T >
void icu::LocalPointer< T >::swap ( LocalPointer< T > &  other)
inlinenoexcept

Swap pointers.

Parameters
otherother smart pointer
Stable:
ICU 56

Definition at line 280 of file localpointer.h.

References icu::LocalPointerBase< T >::ptr.

Friends And Related Symbol Documentation

◆ swap

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

Non-member LocalPointer swap function.

Parameters
p1will get p2's pointer
p2will get p1's pointer
Stable:
ICU 56

Definition at line 291 of file localpointer.h.


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