aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-09-14 22:31:38 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-13 22:41:06 +0100
commit8ec46846f6af0da23a1a42f345e40f517ba8f005 (patch)
tree5e83d115b8e0f6b490e3083c7fdc8edf37fb0ca8
parent780382ab640815e8e92c59d9147432df855359b4 (diff)
downloadusdx-8ec46846f6af0da23a1a42f345e40f517ba8f005.tar.gz
usdx-8ec46846f6af0da23a1a42f345e40f517ba8f005.tar.xz
usdx-8ec46846f6af0da23a1a42f345e40f517ba8f005.zip
utils: add activator helper
The activator should be used to encapsulate activatable objects. It calls enable on construction and disable on deconstruction. It should be used for example to enable some opengl settings, while the activator object is used in local scope. It ensures, that the opengl setting get disabled, if the scope is left even when throwing an exception.
-rw-r--r--src/utils/activatable.hpp38
-rw-r--r--src/utils/activator.hpp55
2 files changed, 93 insertions, 0 deletions
diff --git a/src/utils/activatable.hpp b/src/utils/activatable.hpp
new file mode 100644
index 00000000..0142ee0d
--- /dev/null
+++ b/src/utils/activatable.hpp
@@ -0,0 +1,38 @@
+/*
+ * UltraStar Deluxe - Karaoke Game
+ *
+ * UltraStar Deluxe is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef ACTIVATABLE_HPP
+#define ACTIVATABLE_HPP
+
+namespace usdx
+{
+ class Activatable
+ {
+ public:
+ virtual void enable(void) = 0;
+ virtual void disable(void) = 0;
+ };
+};
+
+#endif
diff --git a/src/utils/activator.hpp b/src/utils/activator.hpp
new file mode 100644
index 00000000..7384b2a8
--- /dev/null
+++ b/src/utils/activator.hpp
@@ -0,0 +1,55 @@
+/*
+ * UltraStar Deluxe - Karaoke Game
+ *
+ * UltraStar Deluxe is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef ACTIVATOR_HPP
+#define ACTIVATOR_HPP
+
+#include <boost/noncopyable.hpp>
+
+namespace usdx
+{
+ template<typename Activatable>
+ class Activator : public boost::noncopyable
+ {
+ private:
+ Activatable* activatable;
+ public:
+ Activator(Activatable* activatable)
+ : activatable(activatable)
+ {
+ if (activatable) {
+ activatable->enable();
+ }
+ }
+
+ virtual ~Activator()
+ {
+ if (activatable) {
+ activatable->disable();
+ }
+ }
+ };
+};
+
+#endif