NCBI C++ ToolKit
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
CRef< C, Locker > Class Template Reference

Search Toolkit Book for CRef

CRef –. More...

#include <corelib/ncbiobj.hpp>

Inherited by CBlockingQueue< TRequest >::CCompletingHandle, and CBlockingQueue_ForServer::CCompletingHandle.

+ Collaboration diagram for CRef< C, Locker >:

Public Types

typedef C element_type
 Define alias element_type. More...
 
typedef element_type TObjectType
 Define alias TObjectType. More...
 
typedef Locker locker_type
 Define alias for locking type. More...
 
typedef CRef< C, Locker > TThisType
 Alias for this template type. More...
 
template<class T >
using enable_if_derived = typename std::enable_if< std::is_convertible< T *, TObjectType * >::value >
 Helper template to template enable methods only for derived types. More...
 

Public Member Functions

 CRef (void) THROWS_NONE
 Constructor for null pointer. More...
 
 CRef (ENull) THROWS_NONE
 Constructor for ENull pointer. More...
 
 CRef (TObjectType *ptr)
 Constructor for explicit type conversion from pointer to object. More...
 
 CRef (TObjectType *ptr, const locker_type &locker_value)
 Constructor for explicit type conversion from pointer to object. More...
 
 CRef (const TThisType &ref)
 Copy constructor from an existing CRef object. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CRef (const CRef< TDerived, Locker > &ref)
 Copy constructor from an existing CRef object of derived type. More...
 
 CRef (TThisType &&ref)
 Move constructor from an existing CRef object. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CRef (CRef< TDerived, Locker > &&ref)
 Move constructor from an existing CRef object of derived type. More...
 
 ~CRef (void)
 Destructor. More...
 
const locker_typeGetLocker (void) const
 Get reference to locker object. More...
 
bool operator! (void) const THROWS_NONE
 Check if CRef is empty – not pointing to any object, which means having a null value. More...
 
bool Empty (void) const THROWS_NONE
 Check if CRef is empty – not pointing to any object, which means having a null value. More...
 
bool NotEmpty (void) const THROWS_NONE
 Check if CRef is not empty – pointing to an object and has a non-null value. More...
 
bool IsNull (void) const THROWS_NONE
 Check if pointer is null – same effect as Empty(). More...
 
bool NotNull (void) const THROWS_NONE
 Check if pointer is not null – same effect as NotEmpty(). More...
 
void Swap (TThisType &ref)
 Swaps the pointer with another reference. More...
 
void Reset (void)
 Reset reference object. More...
 
void Reset (TObjectType *newPtr)
 Reset reference object to new pointer. More...
 
TObjectTypeReleaseOrNull (void)
 Release a reference to the object and return a pointer to the object. More...
 
TObjectTypeRelease (void)
 Release a reference to the object and return a pointer to the object. More...
 
void AtomicResetFrom (const TThisType &ref)
 Reset reference object to new pointer. More...
 
void AtomicReleaseTo (TThisType &ref)
 Release referenced object to another CRef<> object. More...
 
TThisTypeoperator= (const TThisType &ref)
 Assignment operator for references. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (const CRef< TDerived, Locker > &ref)
 Assignment operator for references of derived types. More...
 
TThisTypeoperator= (TThisType &&ref)
 Move assignment operator for references. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (CRef< TDerived, Locker > &&ref)
 Move assignment operator for references of derived types. More...
 
TThisTypeoperator= (TObjectType *ptr)
 Assignment operator for references with right hand side set to a pointer. More...
 
TThisTypeoperator= (ENull)
 Assignment operator with right hand side set to ENull. More...
 
TObjectTypeGetNonNullPointer (void)
 Get pointer value and throw a null pointer exception if pointer is null. More...
 
TObjectTypeGetPointerOrNull (void) THROWS_NONE
 Get pointer value. More...
 
TObjectTypeGetPointer (void) THROWS_NONE
 Get pointer,. More...
 
TObjectTypeGetObject (void)
 Get object. More...
 
TObjectTypeoperator* (void)
 Dereference operator returning object. More...
 
TObjectTypeoperator-> (void)
 Reference operator. More...
 
const TObjectTypeGetNonNullPointer (void) const
 Get pointer value and throw a null pointer exception if pointer is null – constant version. More...
 
const TObjectTypeGetPointerOrNull (void) const THROWS_NONE
 Get pointer value – constant version. More...
 
const TObjectTypeGetPointer (void) const THROWS_NONE
 Get pointer – constant version,. More...
 
const TObjectTypeGetObject (void) const
 Get object – constant version. More...
 
const TObjectTypeoperator* (void) const
 Dereference operator returning object – constant version. More...
 
const TObjectTypeoperator-> (void) const
 Reference operator – constant version. More...
 
 operator TObjectType * (void)
 Dereference operator returning pointer. More...
 
 operator const TObjectType * (void) const
 Dereference operator returning pointer – constant version. More...
 
TObjectTypeGetNonNullNCPointer (void) const
 Get pointer value and throw a null pointer exception if pointer is null. More...
 
TObjectTypeGetNCPointerOrNull (void) const THROWS_NONE
 Get pointer value. More...
 
TObjectTypeGetNCPointer (void) const THROWS_NONE
 Get pointer,. More...
 
TObjectTypeGetNCObject (void) const
 Get object. More...
 

Static Public Member Functions

static void ThrowNullPointerException (void)
 

Private Member Functions

void x_LockFromPtr ()
 
void x_LockFromRef ()
 
void x_LockFromMoveConstructor (const Locker &src_locker)
 
void x_AssignFromRef (TObjectType *newPtr)
 
void x_MoveAssign (const Locker &src_locker, TObjectType *newPtr)
 
TObjectTypeAtomicSwap (TObjectType *ptr)
 
void operator- (TObjectType *) const
 
void operator- (int) const
 
void operator+ (int) const
 

Private Attributes

pair_base_member< locker_type, TObjectType * > m_Data
 Pointer to object. More...
 

Friends

template<class TDerived , class TLocker >
class CRef
 
template<class TDerived , class TLocker >
class CConstRef
 

Detailed Description

template<class C, class Locker>
class CRef< C, Locker >

CRef –.

Define a template class that stores a pointer to an object and defines methods for referencing that object.

Definition at line 618 of file ncbiobj.hpp.


The documentation for this class was generated from the following file:
Modified on Wed Feb 28 07:12:24 2024 by modify_doxy.py rev. 669887