CFStrongRef< REF > Class Template Reference

#include <mac_cfhelpers.h>

Inheritance diagram for CFStrongRef< REF >:

Detailed Description

template<typename REF>
class maxon::CFStrongRef< REF >

Reference for a CoreFoundation object which was created (and hence implicitely retained). The object will released when the CFStrongRef will be destructed.

Public Member Functions

 CFStrongRef ()=default
 
MAXON_IMPLICIT CFStrongRef (T *o)
 
 CFStrongRef (const CFStrongRef &src)=default
 
 CFStrongRef (CFStrongRef &&src)=default
 
CFStrongRefoperator= (T *src)
 
CFStrongRefoperator= (const CFStrongRef &src)=default
 
CFStrongRefoperator= (CFStrongRef &&src)=default
 
CFStrongRefoperator= (std::nullptr_t src)
 
REF * GetAddressOf ()
 
- Public Member Functions inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
 BaseRef ()
 
MAXON_IMPLICIT BaseRef (std::nullptr_t)=delete
 
MAXON_IMPLICIT BaseRef (std::remove_pointer< REF >::type *o)
 
 BaseRef (ForwardResultPtr< PTR > o)
 
 BaseRef (ResultPtr< std::remove_pointer< REF >::type > o, Int)
 
 BaseRef (const BaseRef &src)
 
MAXON_IMPLICIT BaseRef (const REF &src)
 
MAXON_IMPLICIT BaseRef (REF &src)
 
 BaseRef (BaseRef &&src)
 
MAXON_IMPLICIT BaseRef (REF &&src)
 
std::remove_pointer< REF >::typeGetPointer ()
 
ConstReferencedTypeGetPointer () const
 
std::remove_pointer< REF >::typeoperator-> ()
 
ConstReferencedTypeoperator-> () const
 
std::conditional< std::is_void< std::remove_pointer< REF >::type >::value, DeleteReturnType01, std::remove_pointer< REF >::type >::typeoperator* ()
 
std::conditional< std::is_void< ConstReferencedType >::value, DeleteReturnType01, std::remove_pointer< REF >::type >::typeoperator* () const
 
 operator std::remove_pointer< REF >::type * ()
 
 operator ConstReferencedType * () const
 
 operator Bool () const
 
 operator Bool ()
 
const std::conditional< std::is_void< std::remove_pointer< REF >::type >::value, DeleteReturnType01, std::remove_pointer< REF >::type >::typeoperator[] (Int) const=delete
 
ResultRef< typename std::remove_const< std::remove_pointer< REF >::type >::typeMakeWritable (Bool resetOnError=true)
 
std::conditional< std::is_void< std::remove_pointer< REF >::type >::value, DeleteReturnType01, std::remove_pointer< REF >::type >::typeGetOrNull () const
 
BaseRefoperator= (std::remove_pointer< REF >::type *src)
 
BaseRefoperator= (std::nullptr_t src)
 
BaseRefoperator= (const BaseRef &src)
 
BaseRefoperator= (const REF &src)
 
BaseRefoperator= (REF &src)
 
BaseRefoperator= (BaseRef &&src)
 
BaseRefoperator= (REF &&src)
 
 ~BaseRef ()
 
Bool operator== (const BaseRef &b) const
 
Bool operator== (const std::remove_pointer< REF >::type *b) const
 
Bool operator== (typename std::remove_const< std::remove_pointer< REF >::type >::type *b) const
 
Bool operator== (std::nullptr_t) const
 
Bool operator!= (const BaseRef &b) const
 
Bool operator!= (const std::remove_pointer< REF >::type *b) const
 
Bool operator!= (typename std::remove_const< std::remove_pointer< REF >::type >::type *b) const
 
Bool operator!= (std::nullptr_t) const
 
Bool operator< (const BaseRef &b) const
 
 MAXON_OPERATOR_INEQUALITY (BaseRef)
 
HashInt GetHashCode () const
 
UniqueHash GetUniqueHashCode () const
 
std::remove_pointer< REF >::typeDisconnect ()
 
void PrivateSetTarget (ResultPtr< std::remove_pointer< REF >::type > src)
 
void PrivateSetPointer (std::remove_pointer< REF >::type *ptr)
 

Private Types

using T = typename std::remove_pointer< REF >::type
 
using Super = BaseRef< T, CoreFoundationCreatedPointerHandler >
 

Additional Inherited Members

- Public Types inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
using ReferencedType = std::remove_pointer< REF >::type
 
using ConstReferencedType = typename ConstIf< std::remove_pointer< REF >::type, Bool(HANDLER::KIND &VALUEKIND::DEEP_CONSTNESS)>::type
 
using DirectlyReferencedType = std::remove_pointer< REF >::type
 
using SelfType = BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
 
using IsGenericBaseOf = std::true_type
 
using Handler = CoreFoundationCreatedPointerHandler
 
using RefCompareType = RefCompare< MAXON_IS_COW_KIND(HANDLER::KIND), IsInterfaceType< std::remove_pointer< REF >::type >::value >
 
- Static Public Member Functions inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
static void PrivateLookupFn ()
 
static std::false_type GenericVarianceCheck (const void *)
 
static MAXON_ATTRIBUTE_FORCE_INLINE ResultMemT< BaseRefCreate (ARGS &&... args)
 
static const BaseRefNullValueRef ()
 
static std::conditional< Bool(HANDLER::KIND &VALUEKIND::UNIQUE_REFERENCE), BaseRef, const BaseRef & >::type NullValue ()
 
- Public Attributes inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
std::remove_pointer< REF >::type_object
 
const void * _impl
 
- Static Public Attributes inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
static constexpr Bool DIRECT_REF
 
- Protected Attributes inherited from BaseRef< std::remove_pointer< REF >::type, CoreFoundationCreatedPointerHandler >
union {
   T *   _object
 
   const void *   _impl
 
}; 
 

Member Typedef Documentation

◆ T

using T = typename std::remove_pointer<REF>::type
private

◆ Super

Constructor & Destructor Documentation

◆ CFStrongRef() [1/4]

CFStrongRef ( )
default

◆ CFStrongRef() [2/4]

Assignment of an already retained object (returned by a create or copy method). Objects which are returned by other methods have to be retained before assigning them to a CFStrongRef. See https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-CJBEJBHH

◆ CFStrongRef() [3/4]

CFStrongRef ( const CFStrongRef< REF > &  src)
default

◆ CFStrongRef() [4/4]

CFStrongRef ( CFStrongRef< REF > &&  src)
default

Member Function Documentation

◆ operator=() [1/4]

CFStrongRef& operator= ( T src)

Assignment of an already retained object (returned by a create or copy method). Objects which are returned by other methods have to be retained before assigning them to a CFStrongRef. See https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-CJBEJBHH

◆ operator=() [2/4]

CFStrongRef& operator= ( const CFStrongRef< REF > &  src)
default

◆ operator=() [3/4]

CFStrongRef& operator= ( CFStrongRef< REF > &&  src)
default

◆ operator=() [4/4]

CFStrongRef& operator= ( std::nullptr_t  src)

◆ GetAddressOf()

REF* GetAddressOf ( )

Returns the address of the REF. This is often used by CF methods which return the retained reference of a copy.

Returns
Address of REF (equivalent to this).