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

This commit is contained in:
Palana
2013-12-16 01:59:08 +01:00
parent 06227327f8
commit 7bc325d90b
2 changed files with 7 additions and 7 deletions
+2 -2
View File
@@ -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
View File
@@ -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;}