Face Engine SDK  4.7.0
A face detection, recognition and tracking engine.
RefBase.h
1 #pragma once
2 
3 namespace fsdk
4 {
14  template<typename T>
15  struct RefBase {
16 
19  RefBase() noexcept : m_ptr(nullptr) {}
20 
24  explicit RefBase(T* ptr) noexcept : m_ptr(ptr) {}
25 
30  operator T* () const noexcept {
31  return get();
32  }
33 
37  T& operator * () const noexcept {
38  assert(!isNull());
39  return *get();
40  }
41 
45  operator bool () const noexcept {
46  return !isNull();
47  }
48 
53  bool operator == (const RefBase& other) const noexcept {
54  return get() == other.get();
55  }
56 
61  bool operator != (const RefBase& other) const noexcept {
62  return !(*this == other);
63  }
64 
68  bool isNull() const noexcept {
69  return get() == nullptr;
70  }
71 
75  bool isExpired() const noexcept {
76  assert(!isNull());
77  return get()->getRefCount() == 0;
78  }
79 
83  bool isUnique() const noexcept {
84  assert(!isNull());
85  return get()->getRefCount() == 1;
86  }
87 
91  T* get() const noexcept {
92  return m_ptr;
93  }
94 
99  void set(T* ptr) noexcept {
100  m_ptr = ptr;
101  }
102 
103  protected:
104  T* m_ptr;
105  };
106 }
fsdk::RefBase::RefBase
RefBase(T *ptr) noexcept
Initializes object pointer with ptr.
Definition: RefBase.h:24
fsdk::RefBase::operator*
T & operator*() const noexcept
Dereference operator.
Definition: RefBase.h:37
fsdk::RefBase::set
void set(T *ptr) noexcept
Replace object pointer without any checks or reference management.
Definition: RefBase.h:99
fsdk::RefBase::operator==
bool operator==(const RefBase &other) const noexcept
Check if two refs are the same.
Definition: RefBase.h:53
fsdk
SDK namespace.
Definition: IAGSEstimator.h:8
fsdk::RefBase::RefBase
RefBase() noexcept
Initializes object pointer to nullptr.
Definition: RefBase.h:19
fsdk::RefBase::operator!=
bool operator!=(const RefBase &other) const noexcept
Check if two refs are not the same.
Definition: RefBase.h:61
fsdk::RefBase::isUnique
bool isUnique() const noexcept
Check if object has only one strong reference.
Definition: RefBase.h:83
fsdk::RefBase::isNull
bool isNull() const noexcept
Check for nullptr.
Definition: RefBase.h:68
fsdk::RefBase
Generic base class of a pointer for reference counted objects.
Definition: RefBase.h:15
fsdk::RefBase::m_ptr
T * m_ptr
Raw pointer.
Definition: RefBase.h:104
fsdk::RefBase::isExpired
bool isExpired() const noexcept
Check is object is dead.
Definition: RefBase.h:75
fsdk::RefBase::get
T * get() const noexcept
Get current raw object pointer.
Definition: RefBase.h:91