summaryrefslogtreecommitdiffstats
path: root/sigscript/ValueMap.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-17 19:36:35 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-17 19:36:35 -0400
commit99c87ee39e32117ce5a9652ef5b50a1d5760bdf7 (patch)
tree203e64058ccd55a8a8b0d1211855cf0197ddf23a /sigscript/ValueMap.cpp
parentd40b7586c3d1f1020a9fefd52bec75161edc63e8 (diff)
downloadsigen-99c87ee39e32117ce5a9652ef5b50a1d5760bdf7.tar.gz
sigen-99c87ee39e32117ce5a9652ef5b50a1d5760bdf7.tar.xz
sigen-99c87ee39e32117ce5a9652ef5b50a1d5760bdf7.zip
Move the map for the values into its own thread-safe class
Diffstat (limited to 'sigscript/ValueMap.cpp')
-rw-r--r--sigscript/ValueMap.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/sigscript/ValueMap.cpp b/sigscript/ValueMap.cpp
new file mode 100644
index 00000000..1b10462d
--- /dev/null
+++ b/sigscript/ValueMap.cpp
@@ -0,0 +1,77 @@
+/*
+* Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com>
+*
+* 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 3 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 <http://www.gnu.org/licenses/>.
+*/
+
+// Header include
+#include "ValueMap.h"
+
+// Qt includes
+#include <QtCore/QReadLocker>
+#include <QtCore/QWriteLocker>
+
+using namespace Sigscript;
+
+bool ValueMap::contains(const QString& name) const
+{
+ QReadLocker locker(&m_mutex);
+ return m_map.contains(name);
+}
+
+QStringList ValueMap::keys() const
+{
+ QReadLocker locker(&m_mutex);
+ return m_map.keys();
+}
+
+QVariant ValueMap::value(const QString& name) const
+{
+ QReadLocker locker(&m_mutex);
+ if (m_map.contains(name))
+ return m_map[name].first;
+ return QVariant();
+}
+
+void ValueMap::setValue(const QString& name, const QVariant& value)
+{
+ QWriteLocker locker(&m_mutex);
+ m_map[name].first = value;
+}
+
+void ValueMap::unsetValue(const QString& name)
+{
+ QWriteLocker locker(&m_mutex);
+ m_map.remove(name);
+}
+
+ConfigOptions ValueMap::options(const QString& name) const
+{
+ QReadLocker locker(&m_mutex);
+ if (m_map.contains(name))
+ return m_map[name].second;
+ return 0;
+}
+
+void ValueMap::setOptions(const QString& name, const ConfigOptions options)
+{
+ QWriteLocker locker(&m_mutex);
+ m_map[name].second |= options;
+}
+
+void ValueMap::unsetOptions(const QString& name, const ConfigOptions options)
+{
+ QWriteLocker locker(&m_mutex);
+ m_map[name].second &= ~options;
+}