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

Search Toolkit Book for CConstRef

CConstRef –. More...

#include <corelib/ncbiobj.hpp>

+ Collaboration diagram for CConstRef< C, Locker >:

Public Types

typedef C element_type
 Define alias element_type. More...
 
typedef const element_type TObjectType
 Define alias TObjectType. More...
 
typedef Locker locker_type
 Define alias for locking type. More...
 
typedef CConstRef< 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

 CConstRef (void) THROWS_NONE
 Constructor for null pointer. More...
 
 CConstRef (ENull) THROWS_NONE
 Constructor for ENull pointer. More...
 
 CConstRef (TObjectType *ptr)
 Constructor for explicit type conversion from pointer to object. More...
 
 CConstRef (TObjectType *ptr, const locker_type &locker_value)
 Constructor for explicit type conversion from pointer to object. More...
 
 CConstRef (const TThisType &ref)
 Constructor from an existing CConstRef object. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CConstRef (const CConstRef< TDerived, Locker > &ref)
 Constructor from an existing CConstRef object of derived type. More...
 
 CConstRef (TThisType &&ref)
 Move constructor from an existing CConstRef object. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CConstRef (CConstRef< TDerived, Locker > &&ref)
 Move constructor from an existing CConstRef object of derived type. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CConstRef (const CRef< TDerived, Locker > &ref)
 Constructor from an existing CRef object of derived type. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
 CConstRef (CRef< TDerived, Locker > &&ref)
 Move constructor from an existing CRef object of derived type. More...
 
 ~CConstRef (void)
 Destructor. More...
 
const locker_typeGetLocker (void) const
 Get reference to locker object. More...
 
bool operator! (void) const THROWS_NONE
 Check if CConstRef is empty – not pointing to any object, which means having a null value. More...
 
bool Empty (void) const THROWS_NONE
 Check if CConstRef is empty – not pointing to any object which means having a null value. More...
 
bool NotEmpty (void) const THROWS_NONE
 Check if CConstRef 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 CConstRef &ref)
 Reset reference object to new pointer. More...
 
void AtomicReleaseTo (CConstRef &ref)
 Release referenced object to another CConstRef<> object. More...
 
TThisTypeoperator= (const TThisType &ref)
 Assignment operator for const references. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (const CConstRef< TDerived, Locker > &ref)
 Assignment operator for const references of derived types. More...
 
TThisTypeoperator= (TThisType &&ref)
 Move assignment operator for const references. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (CConstRef< TDerived, Locker > &&ref)
 Move assignment operator for const references of derived types. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (const CRef< TDerived, Locker > &ref)
 Assignment operator for assigning a reference of derived type. More...
 
template<class TDerived , class = typename enable_if_derived<TDerived>::type>
TThisTypeoperator= (CRef< TDerived, Locker > &&ref)
 Move assignment operator for assigning a reference of derived type. More...
 
TThisTypeoperator= (TObjectType *ptr)
 Assignment operator for const references with right hand side set to a pointer. More...
 
TThisTypeoperator= (ENull)
 Assignment operator with right hand side set to ENull. More...
 
TObjectTypeGetNonNullPointer (void) const
 Get pointer value and throw a null pointer exception if pointer is null. More...
 
TObjectTypeGetPointerOrNull (void) const THROWS_NONE
 Get pointer value. More...
 
TObjectTypeGetPointer (void) const THROWS_NONE
 Get pointer,. More...
 
TObjectTypeGetObject (void) const
 Get object. More...
 
TObjectTypeoperator* (void) const
 Dereference operator returning object. More...
 
TObjectTypeoperator-> (void) const
 Reference operator. More...
 
 operator TObjectType * (void) const
 Dereference operator returning pointer. 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 CConstRef
 

Detailed Description

template<class C, class Locker>
class CConstRef< C, Locker >

CConstRef –.

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

Definition at line 1266 of file ncbiobj.hpp.


The documentation for this class was generated from the following file:
Modified on Thu Mar 28 17:13:25 2024 by modify_doxy.py rev. 669887