0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

Compact/clean up OBSRef class just a bit more

Replace a NULL with nullptr and reduce code duplication with the =
operators
This commit is contained in:
jp9000 2014-02-02 15:34:02 -07:00
parent 933549ca76
commit cfa62354cd

View File

@ -27,6 +27,14 @@ template<class RefClass> class OBSRef {
typedef typename RefClass::type T;
T val;
inline OBSRef &Replace(T valIn)
{
RefClass::AddRef(valIn);
RefClass::Release(val);
val = valIn;
return *this;
}
public:
inline OBSRef() : val(nullptr) {}
inline OBSRef(T val_) : val(val_) {RefClass::AddRef(val);}
@ -35,27 +43,14 @@ public:
inline ~OBSRef() {RefClass::Release(val);}
inline OBSRef &operator=(T valIn)
{
RefClass::AddRef(valIn);
RefClass::Release(val);
val = valIn;
return *this;
}
inline OBSRef &operator=(const OBSRef &ref)
{
RefClass::AddRef(ref.val);
RefClass::Release(val);
val = ref.val;
return *this;
}
inline OBSRef &operator=(T valIn) {return Replace(valIn);}
inline OBSRef &operator=(const OBSRef &ref) {return Replace(ref.val);}
inline OBSRef &operator=(OBSRef &&ref)
{
if (this != &ref) {
val = ref.val;
ref.val = NULL;
ref.val = nullptr;
}
return *this;