From 06227327f8db65144465a727515ea370ad025a9d Mon Sep 17 00:00:00 2001 From: Palana Date: Mon, 16 Dec 2013 01:43:19 +0100 Subject: [PATCH] updated c++11 compatibility for raii wrappers --- obs/obs-wrappers.hpp | 37 ++++++++++++++++++++++++++++++------- obs/wx-wrappers.hpp | 7 +++++-- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/obs/obs-wrappers.hpp b/obs/obs-wrappers.hpp index e3dd9b76a..705e185be 100644 --- a/obs/obs-wrappers.hpp +++ b/obs/obs-wrappers.hpp @@ -29,12 +29,16 @@ template class BPtr { T ptr; -public: - inline BPtr() : ptr(NULL) {} - inline BPtr(T p) : ptr(p) {} - inline ~BPtr() {bfree(ptr);} + BPtr(BPtr const&) = delete; - inline T operator=(T p) {bfree(ptr); ptr = p;} + BPtr &operator=(BPtr const&) = delete; + +public: + 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;} @@ -46,8 +50,15 @@ public: class ConfigFile { config_t config; + ConfigFile(ConfigFile const&) = delete; + ConfigFile &operator=(ConfigFile const&) = delete; + public: inline ConfigFile() : config(NULL) {} + inline ConfigFile(ConfigFile &&other) : config(other.config) + { + other.config = nullptr; + } inline ~ConfigFile() { config_close(config); @@ -83,9 +94,16 @@ public: class TextLookup { lookup_t lookup; + TextLookup(TextLookup const&) = delete; + + TextLookup &operator=(TextLookup const&) = delete; + public: - inline TextLookup() : lookup(NULL) {} - inline TextLookup(lookup_t lookup) : lookup(lookup) {} + inline TextLookup(lookup_t lookup=nullptr) : lookup(lookup) {} + inline TextLookup(TextLookup &&other) : lookup(other.lookup) + { + other.lookup = nullptr; + } inline ~TextLookup() {text_lookup_destroy(lookup);} inline TextLookup& operator=(lookup_t val) @@ -110,6 +128,11 @@ public: class OBSSource { obs_source_t source; + OBSSource(OBSSource &&) = delete; + OBSSource(OBSSource const&) = delete; + + OBSSource &operator=(OBSSource const&) = delete; + public: inline OBSSource(obs_source_t source) : source(source) {} inline ~OBSSource() {obs_source_release(source);} diff --git a/obs/wx-wrappers.hpp b/obs/wx-wrappers.hpp index 40b7ef5f0..b4016db8f 100644 --- a/obs/wx-wrappers.hpp +++ b/obs/wx-wrappers.hpp @@ -41,6 +41,10 @@ class WXConnector { wxObject *userData; wxEvtHandler *eventSink; + WXConnector(WXConnector const&) = delete; + + WXConnector &operator=(WXConnector const&) = delete; + public: inline WXConnector() : obj (NULL), @@ -110,7 +114,6 @@ public: wxObjectEventFunction func, wxObject *userData, wxEvtHandler *eventSink) { - WXConnector connector(obj, type, func, userData, eventSink); - connectors.push_back(std::move(connector)); + connectors.emplace_back(obj, type, func, userData, eventSink); } };