diff --git a/libobs/obs.hpp b/libobs/obs.hpp new file mode 100644 index 000000000..06aa1aa10 --- /dev/null +++ b/libobs/obs.hpp @@ -0,0 +1,100 @@ +/****************************************************************************** + Copyright (C) 2013 by Hugh Bailey + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +******************************************************************************/ + +/* Useful C++ classes and bindings for base obs data */ + +#pragma once + +#include +#include + +#include "obs.h" + +/* RAII wrappers */ + +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);} + + inline OBSSource& operator=(obs_source_t p) {source = p; return *this;} + + inline operator obs_source_t() {return source;} + + inline bool operator==(obs_source_t p) const {return source == p;} + inline bool operator!=(obs_source_t p) const {return source != p;} +}; + +class OBSSourceRef { + obs_source_t source; + +public: + inline OBSSourceRef(obs_source_t source) : source(source) + { + obs_source_addref(source); + } + + inline OBSSourceRef(const OBSSourceRef &ref) : source(ref.source) + { + obs_source_addref(source); + } + + inline OBSSourceRef(OBSSourceRef &&ref) : source(ref.source) + { + ref.source = NULL; + } + + inline ~OBSSourceRef() {obs_source_release(source);} + + inline OBSSourceRef &operator=(obs_source_t sourceIn) + { + obs_source_addref(sourceIn); + obs_source_release(source); + source = sourceIn; + return *this; + } + + inline OBSSourceRef &operator=(const OBSSourceRef &ref) + { + obs_source_addref(ref.source); + obs_source_release(source); + source = ref.source; + return *this; + } + + inline OBSSourceRef &operator=(OBSSourceRef &&ref) + { + if (this != &ref) { + source = ref.source; + ref.source = NULL; + } + + return *this; + } + + inline operator obs_source_t() const {return source;} + + inline bool operator==(obs_source_t p) const {return source == p;} + inline bool operator!=(obs_source_t p) const {return source != p;} +}; diff --git a/obs/obs-wrappers.hpp b/libobs/util/util.hpp similarity index 62% rename from obs/obs-wrappers.hpp rename to libobs/util/util.hpp index 9671f0051..a993c4b10 100644 --- a/obs/obs-wrappers.hpp +++ b/libobs/util/util.hpp @@ -15,14 +15,15 @@ along with this program. If not, see . ******************************************************************************/ +/* Useful C++ classes/bindings for util data and pointers */ + #pragma once #include #include -#include -#include -#include +#include "config-file.h" +#include "text-lookup.h" /* RAII wrappers */ @@ -71,18 +72,18 @@ public: return config != NULL; } - int Open(const char *file, config_open_type openType) + inline int Open(const char *file, config_open_type openType) { Close(); return config_open(&config, file, openType); } - int Save() + inline int Save() { return config_save(config); } - void Close() + inline void Close() { config_close(config); config = NULL; @@ -124,76 +125,3 @@ public: return out; } }; - -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);} - - inline OBSSource& operator=(obs_source_t p) {source = p; return *this;} - - inline operator obs_source_t() {return source;} - - inline bool operator==(obs_source_t p) const {return source == p;} - inline bool operator!=(obs_source_t p) const {return source != p;} -}; - -class OBSSourceRef { - obs_source_t source; - -public: - inline OBSSourceRef(obs_source_t source) : source(source) - { - obs_source_addref(source); - } - - inline OBSSourceRef(const OBSSourceRef &ref) : source(ref.source) - { - obs_source_addref(source); - } - - inline OBSSourceRef(OBSSourceRef &&ref) : source(ref.source) - { - ref.source = NULL; - } - - inline ~OBSSourceRef() {obs_source_release(source);} - - inline OBSSourceRef &operator=(obs_source_t sourceIn) - { - obs_source_addref(sourceIn); - obs_source_release(source); - source = sourceIn; - return *this; - } - - inline OBSSourceRef &operator=(const OBSSourceRef &ref) - { - obs_source_addref(ref.source); - obs_source_release(source); - source = ref.source; - return *this; - } - - inline OBSSourceRef &operator=(OBSSourceRef &&ref) - { - if (this != &ref) { - source = ref.source; - ref.source = NULL; - } - - return *this; - } - - inline operator obs_source_t() const {return source;} - - inline bool operator==(obs_source_t p) const {return source == p;} - inline bool operator!=(obs_source_t p) const {return source != p;} -}; diff --git a/obs/obs-app.cpp b/obs/obs-app.cpp index 24a227013..670afca94 100644 --- a/obs/obs-app.cpp +++ b/obs/obs-app.cpp @@ -21,9 +21,10 @@ #include #include +#include + #include "obs-app.hpp" #include "window-main-basic.hpp" -#include "obs-wrappers.hpp" #include "wx-wrappers.hpp" #include "platform.hpp" diff --git a/obs/obs-app.hpp b/obs/obs-app.hpp index 354d695f4..9b0c60ed5 100644 --- a/obs/obs-app.hpp +++ b/obs/obs-app.hpp @@ -19,7 +19,7 @@ #include -#include "obs-wrappers.hpp" +#include class OBSAppBase : public wxApp { public: diff --git a/obs/settings-basic-general.cpp b/obs/settings-basic-general.cpp index 85b977e8f..8a70618ad 100644 --- a/obs/settings-basic-general.cpp +++ b/obs/settings-basic-general.cpp @@ -15,6 +15,8 @@ along with this program. If not, see . ******************************************************************************/ +#include + #include "obs-app.hpp" #include "settings-basic.hpp" #include "window-settings-basic.hpp" diff --git a/obs/window-main-basic.cpp b/obs/window-main-basic.cpp index f4167941b..b2eae9b90 100644 --- a/obs/window-main-basic.cpp +++ b/obs/window-main-basic.cpp @@ -15,6 +15,8 @@ along with this program. If not, see . ******************************************************************************/ +#include + #include "obs-app.hpp" #include "window-settings-basic.hpp" #include "window-main-basic.hpp" diff --git a/vs/2013/OBS/OBS.vcxproj b/vs/2013/OBS/OBS.vcxproj index b3e58815b..097b7d2d7 100644 --- a/vs/2013/OBS/OBS.vcxproj +++ b/vs/2013/OBS/OBS.vcxproj @@ -185,7 +185,6 @@ - diff --git a/vs/2013/OBS/OBS.vcxproj.filters b/vs/2013/OBS/OBS.vcxproj.filters index ded62df8a..89b88d708 100644 --- a/vs/2013/OBS/OBS.vcxproj.filters +++ b/vs/2013/OBS/OBS.vcxproj.filters @@ -53,9 +53,6 @@ Header Files - - Header Files - Header Files