ICU 57.1  57.1
Public Member Functions | Friends
LocalArray< T > Class Template Reference

"Smart pointer" class, deletes objects via the C++ array delete[] operator. More...

#include <localpointer.h>

Inheritance diagram for LocalArray< T >:
LocalPointerBase< T >

Public Member Functions

 LocalArray (T *p=NULL)
 Constructor takes ownership. More...
 
 LocalArray (T *p, UErrorCode &errorCode)
 Constructor takes ownership and reports an error if NULL. More...
 
 ~LocalArray ()
 Destructor deletes the array it owns. More...
 
LocalArray< T > & moveFrom (LocalArray< T > &src) U_NOEXCEPT
 Move assignment, leaves src with isNull(). More...
 
void swap (LocalArray< T > &other) U_NOEXCEPT
 Swap pointers. More...
 
void adoptInstead (T *p)
 Deletes the array it owns, and adopts (takes ownership of) the one passed in. More...
 
void adoptInsteadAndCheckErrorCode (T *p, UErrorCode &errorCode)
 Deletes the array it owns, and adopts (takes ownership of) the one passed in. More...
 
T & operator[] (ptrdiff_t i) const
 Array item access (writable). More...
 
- Public Member Functions inherited from LocalPointerBase< T >
 LocalPointerBase (T *p=NULL)
 Constructor takes ownership. More...
 
 ~LocalPointerBase ()
 Destructor deletes the object it owns. More...
 
UBool isNull () const
 NULL check. More...
 
UBool isValid () const
 NULL check. More...
 
bool operator== (const T *other) const
 Comparison with a simple pointer, so that existing code with ==NULL need not be changed. More...
 
bool operator!= (const T *other) const
 Comparison with a simple pointer, so that existing code with !=NULL need not be changed. More...
 
T * getAlias () const
 Access without ownership change. More...
 
T & operator* () const
 Access without ownership change. More...
 
T * operator-> () const
 Access without ownership change. More...
 
T * orphan ()
 Gives up ownership; the internal pointer becomes NULL. More...
 
void adoptInstead (T *p)
 Deletes the object it owns, and adopts (takes ownership of) the one passed in. More...
 

Friends

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

Additional Inherited Members

- Protected Attributes inherited from LocalPointerBase< T >
T * ptr
 Actual pointer. More...
 

Detailed Description

template<typename T>
class LocalArray< T >

"Smart pointer" class, deletes objects via the C++ array delete[] operator.

For most methods see the LocalPointerBase base class. Adds operator[] for array item access.

Usage example:

a[0].append((UChar)0x61);
if(some condition) { return; } // no need to explicitly delete the array
a.adoptInstead(new UnicodeString[4]);
a[3].append((UChar)0x62).append((UChar)0x63).reverse();
// no need to explicitly delete the array
"Smart pointer" class, deletes objects via the C++ array delete[] operator.
Definition: localpointer.h:338
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:312
See also
LocalPointerBase
Stable:
ICU 4.4

Definition at line 338 of file localpointer.h.

Constructor & Destructor Documentation

◆ LocalArray() [1/2]

template<typename T >
LocalArray< T >::LocalArray ( T *  p = NULL)
inlineexplicit

Constructor takes ownership.

Parameters
psimple pointer to an array of T objects that is adopted
Stable:
ICU 4.4

Definition at line 347 of file localpointer.h.

◆ LocalArray() [2/2]

template<typename T >
LocalArray< T >::LocalArray ( 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
psimple pointer to an array of T objects that is adopted
errorCodein/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR if p==NULL and no other failure code had been set
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 362 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

◆ ~LocalArray()

template<typename T >
LocalArray< T >::~LocalArray ( )
inline

Destructor deletes the array it owns.

Stable:
ICU 4.4

Definition at line 382 of file localpointer.h.

Member Function Documentation

◆ adoptInstead()

template<typename T >
void LocalArray< T >::adoptInstead ( T *  p)
inline

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

Parameters
psimple pointer to an array of T objects that is adopted
Stable:
ICU 4.4

Definition at line 439 of file localpointer.h.

◆ adoptInsteadAndCheckErrorCode()

template<typename T >
void LocalArray< T >::adoptInsteadAndCheckErrorCode ( T *  p,
UErrorCode errorCode 
)
inline

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

If U_FAILURE(errorCode), then the current array 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 array is deleted, and NULL is set.

Parameters
psimple pointer to an array of T objects that is adopted
errorCodein/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR if p==NULL and no other failure code had been set
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 459 of file localpointer.h.

References NULL, U_MEMORY_ALLOCATION_ERROR, and U_SUCCESS.

◆ moveFrom()

template<typename T >
LocalArray<T>& LocalArray< T >::moveFrom ( LocalArray< 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
srcsource smart pointer
Returns
*this
Draft:
This API may be changed in the future versions and was introduced in ICU 56

Definition at line 407 of file localpointer.h.

References NULL, and LocalPointerBase< T >::ptr.

◆ operator[]()

template<typename T >
T& LocalArray< T >::operator[] ( ptrdiff_t  i) const
inline

Array item access (writable).

No index bounds check.

Parameters
iarray index
Returns
reference to the array item
Stable:
ICU 4.4

Definition at line 478 of file localpointer.h.

◆ swap()

template<typename T >
void LocalArray< T >::swap ( LocalArray< T > &  other)
inline

Swap pointers.

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

Definition at line 418 of file localpointer.h.

References LocalPointerBase< T >::ptr.

Friends And Related Function Documentation

◆ swap

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

Non-member LocalArray swap function.

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

Definition at line 430 of file localpointer.h.


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