Browse Source

updated BPtr semantics to be more in line with stl smart pointers

Palana 12 years ago
parent
commit
7bc325d90b
2 changed files with 7 additions and 7 deletions
  1. 2 2
      obs/obs-app.cpp
  2. 5 5
      obs/obs-wrappers.hpp

+ 2 - 2
obs/obs-app.cpp

@@ -70,7 +70,7 @@ static bool do_mkdir(const char *path)
 
 static bool MakeUserDirs()
 {
-	BPtr<char*> homePath(os_get_home_path());
+	BPtr<char> homePath(os_get_home_path());
 	stringstream str;
 
 	str << homePath << "/obs-studio";
@@ -82,7 +82,7 @@ static bool MakeUserDirs()
 
 bool OBSApp::InitGlobalConfig()
 {
-	BPtr<char*> homePath = os_get_home_path();
+	BPtr<char> homePath(os_get_home_path());
 	stringstream str;
 
 	if (!homePath) {

+ 5 - 5
obs/obs-wrappers.hpp

@@ -27,20 +27,20 @@
 /* RAII wrappers */
 
 template<typename T> class BPtr {
-	T ptr;
+	T *ptr;
 
 	BPtr(BPtr const&) = delete;
 
 	BPtr &operator=(BPtr const&) = delete;
 
 public:
-	inline BPtr(T p=nullptr) : ptr(p)          {}
+	inline BPtr(T *p=nullptr) : ptr(p)         {}
 	inline BPtr(BPtr &&other) : ptr(other.ptr) {other.ptr = nullptr;}
 	inline ~BPtr()                             {bfree(ptr);}
 
-	inline T operator=(T p)     {bfree(ptr); ptr = p; return p;}
-	inline operator T()         {return ptr;}
-	inline T *operator&()       {bfree(ptr); ptr = NULL; return &ptr;}
+	inline T *operator=(T *p)   {bfree(ptr); ptr = p; return p;}
+	inline operator T*()        {return ptr;}
+	inline T **operator&()      {bfree(ptr); ptr = nullptr; return &ptr;}
 
 	inline bool operator!()     {return ptr == NULL;}
 	inline bool operator==(T p) {return ptr == p;}