提交 7bc325d9 编写于 作者: P Palana

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

上级 06227327
......@@ -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) {
......
......@@ -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;}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册