Face Engine SDK  5.25.0
A face detection, recognition and tracking engine.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fsdk::Ref< T > Struct Template Reference

Smart pointer for reference counted objects. More...

#include <Ref.h>

Inheritance diagram for fsdk::Ref< T >:
fsdk::RefBase< T >

Public Member Functions

 Ref () noexcept=default
 Constructor. Initializes object pointer to nullptr.
 
 Ref (std::nullptr_t) noexcept
 Initializes object pointer to nullptr.
 
 Ref (T *ptr) noexcept
 Initializes object pointer with ptr and retains a reference. More...
 
 Ref (const Ref &other)
 Initializes object pointer with other and retains a reference. More...
 
template<class D , typename = typename std::enable_if<std::is_convertible<D*, T*>::value>::type>
 Ref (const Ref< D > &other)
 Initializes object pointer with other and retains a reference. More...
 
 ~Ref () noexcept
 Releases reference being held (if any).
 
T * operator-> () const noexcept
 Access pointer. More...
 
T ** getInitReference () noexcept
 Access pointer for initialization. More...
 
bool operator== (const Ref &other) const noexcept
 Check if two refs are the same. More...
 
bool operator!= (const Ref &other) const noexcept
 Check if two refs are not the same. More...
 
Refoperator= (const Ref &other) noexcept
 Assign a strong reference. More...
 
template<class D , typename = typename std::enable_if<std::is_convertible<D*, T*>::value>::type>
Refoperator= (const Ref< D > &other) noexcept
 Assign a strong reference. More...
 
Refoperator= (T *ptr) noexcept
 Assign a raw pointer. More...
 
Refoperator= (std::nullptr_t) noexcept
 Assign a nullptr_t. More...
 
Refassign (T *ptr) noexcept
 Assign an object. Presumes shared ownership, increases reference count. More...
 
Refacquire (T *ptr) noexcept
 Acquire ownership of the object. More...
 
Refmake_ref (T *ptr) noexcept
 Create ref without acquiring ownership. More...
 
T * reset () noexcept
 Reset reference counted object and assign nullptr to the pointer.
 
template<typename S >
Ref< S > as () const noexcept
 Make smart reference with relative type. More...
 
- Public Member Functions inherited from fsdk::RefBase< T >
 RefBase () noexcept=default
 Initializes object pointer to nullptr.
 
 RefBase (T *ptr) noexcept
 Initializes object pointer with ptr. More...
 
 operator T * () const noexcept
 Get raw object pointer. More...
 
T & operator* () const noexcept
 Dereference operator. More...
 
 operator bool () const noexcept
 Implicit cast to bool. More...
 
bool operator== (const RefBase &other) const noexcept
 Check if two refs are the same. More...
 
bool operator!= (const RefBase &other) const noexcept
 Check if two refs are not the same. More...
 
bool isNull () const noexcept
 Check for nullptr. More...
 
bool isExpired () const noexcept
 Check is object is dead. More...
 
bool isUnique () const noexcept
 Check if object has only one strong reference. More...
 
T * get () const noexcept
 Get current raw object pointer. More...
 
void set (T *ptr) noexcept
 Replace object pointer without any checks or reference management. More...
 

Additional Inherited Members

- Protected Attributes inherited from fsdk::RefBase< T >
T * m_ptr {nullptr}
 Raw pointer.
 

Detailed Description

template<typename T>
struct fsdk::Ref< T >

Smart pointer for reference counted objects.

Automatically calls retain/release and provides safety assertions.

Template Parameters
Tobject interface (must be derived from IRefCounted)

Constructor & Destructor Documentation

template<typename T>
fsdk::Ref< T >::Ref ( T *  ptr)
inlineexplicitnoexcept

Initializes object pointer with ptr and retains a reference.

Note
this shares ownership.
Parameters
[in]ptrraw pointer to initialize with.
template<typename T>
fsdk::Ref< T >::Ref ( const Ref< T > &  other)
inline

Initializes object pointer with other and retains a reference.

Note
this shares ownership.
Parameters
[in]otherpointer to initialize with.
template<typename T>
template<class D , typename = typename std::enable_if<std::is_convertible<D*, T*>::value>::type>
fsdk::Ref< T >::Ref ( const Ref< D > &  other)
inlineexplicit

Initializes object pointer with other and retains a reference.

Note
this shares ownership.
Parameters
[in]otherpointer of derived template class to initialize with.

Member Function Documentation

template<typename T>
Ref& fsdk::Ref< T >::acquire ( T *  ptr)
inlinenoexcept

Acquire ownership of the object.

Parameters
[in]ptrraw object pointer to acquire.
template<typename T>
template<typename S >
Ref<S> fsdk::Ref< T >::as ( ) const
inlinenoexcept

Make smart reference with relative type.

Template Parameters
Starget interface (must be relative to T)
template<typename T>
Ref& fsdk::Ref< T >::assign ( T *  ptr)
inlinenoexcept

Assign an object. Presumes shared ownership, increases reference count.

Parameters
[in]ptrraw object pointer to assign.
template<typename T>
T** fsdk::Ref< T >::getInitReference ( )
inlinenoexcept

Access pointer for initialization.

Note
previously held pointer is released.
Returns
pointer to pointer to object.
template<typename T>
Ref& fsdk::Ref< T >::make_ref ( T *  ptr)
inlinenoexcept

Create ref without acquiring ownership.

Parameters
[in]ptrraw object pointer.
template<typename T>
bool fsdk::Ref< T >::operator!= ( const Ref< T > &  other) const
inlinenoexcept

Check if two refs are not the same.

Returns
true if two refs are not the same.
Parameters
[in]otherref to check against.
template<typename T>
T* fsdk::Ref< T >::operator-> ( ) const
inlinenoexcept

Access pointer.

Note
pointer is checked for null in runtime.
Returns
pointer to object.
template<typename T>
Ref& fsdk::Ref< T >::operator= ( const Ref< T > &  other)
inlinenoexcept

Assign a strong reference.

Parameters
[in]otherstrong reference.
Returns
reference.
template<typename T>
template<class D , typename = typename std::enable_if<std::is_convertible<D*, T*>::value>::type>
Ref& fsdk::Ref< T >::operator= ( const Ref< D > &  other)
inlinenoexcept

Assign a strong reference.

Parameters
[in]otherstrong reference of derived template class.
Returns
reference.
template<typename T>
Ref& fsdk::Ref< T >::operator= ( T *  ptr)
inlinenoexcept

Assign a raw pointer.

Note
this shares ownership.
Parameters
[in]ptrraw pointer.
Returns
reference.
template<typename T>
Ref& fsdk::Ref< T >::operator= ( std::nullptr_t  )
inlinenoexcept

Assign a nullptr_t.

Note
this releases previously held reference (if any).
Returns
reference.
template<typename T>
bool fsdk::Ref< T >::operator== ( const Ref< T > &  other) const
inlinenoexcept

Check if two refs are the same.

Returns
true if two refs are the same.
Parameters
[in]otherref to check against.

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