ソースを参照

Compact/clean up OBSRef class just a bit more

Replace a NULL with nullptr and reduce code duplication with the =
operators
jp9000 11 年 前
コミット
cfa62354cd
1 ファイル変更11 行追加16 行削除
  1. 11 16
      libobs/obs.hpp

+ 11 - 16
libobs/obs.hpp

@@ -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;