summaryrefslogtreecommitdiffstats
path: root/sigscript/Config.h
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/Config.h
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/Config.h')
-rw-r--r--sigscript/Config.h39
1 files changed, 9 insertions, 30 deletions
diff --git a/sigscript/Config.h b/sigscript/Config.h
index af2aad09..812c3652 100644
--- a/sigscript/Config.h
+++ b/sigscript/Config.h
@@ -19,36 +19,20 @@
#define SIGSCRIPT_CONFIG
// Sigscript includes
+#include "ConfigOptions.h"
#include "Global.h"
+#include "ValueMap.h"
// Qt includes
-#include <QtCore/QMap>
#include <QtCore/QObject>
-#include <QtCore/QPair>
-#include <QtCore/QReadWriteLock>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QVariant>
namespace Sigscript
{
class SIGSCRIPT_EXPORT Config : public QObject
{
Q_OBJECT
- Q_ENUMS(Option)
public:
- enum Option
- {
- Temporary = 1,
- Deleted = 2,
- ReadOnly = 4,
- Hidden = 8
- };
- Q_DECLARE_FLAGS(Options, Option)
-
- typedef QPair<QVariant, Options> Value;
-
Config(Config* parent);
Q_SCRIPTABLE QVariant value(const QString& name, const bool recursive = true) const;
@@ -57,36 +41,34 @@ class SIGSCRIPT_EXPORT Config : public QObject
template<typename T> bool hasValueOfType(const QString& name, const bool recursive = true) const;
Q_SCRIPTABLE QStringList values(const bool recursive = false) const;
- Q_SCRIPTABLE Options options(const QString& name, const bool recursive = true) const;
+ Q_SCRIPTABLE ConfigOptions options(const QString& name, const bool recursive = true) const;
signals:
void valueAdded(const QString& name, const QVariant& value);
void valueChanged(const QString& name, const QVariant& newValue);
void valueRemoved(const QString& name);
- void optionsChanged(const QString& name, const Sigscript::Config::Options newOptions);
+ void optionsChanged(const QString& name, const Sigscript::ConfigOptions newOptions);
public slots:
bool addValue(const QString& name, const QVariant& value);
bool setValue(const QString& name, const QVariant& value);
bool removeValue(const QString& name, const bool shadow = false);
- bool setOptions(const QString& name, const Sigscript::Config::Options options);
- bool unsetOptions(const QString& name, const Sigscript::Config::Options options);
+ bool setOptions(const QString& name, const Sigscript::ConfigOptions options);
+ bool unsetOptions(const QString& name, const Sigscript::ConfigOptions options);
void clean();
virtual void writeBack();
private:
- mutable QReadWriteLock m_lock;
Config* m_parent;
- QMap<QString, Value> m_values;
+ ValueMap m_values;
};
template<typename T> bool Config::valueOfType(const QString& name, T* value, const bool recursive) const
{
- QReadLocker locker(&m_lock);
if (hasValueOfType<T>(name))
{
- *value = m_values[name].first.value<T>();
+ *value = m_values.value(name).value<T>();
return true;
}
if (recursive)
@@ -104,8 +86,7 @@ template<typename T> bool Config::valueOfType(const QString& name, T* value, con
template<typename T> bool Config::hasValueOfType(const QString& name, const bool recursive) const
{
- QReadLocker locker(&m_lock);
- if (hasValue(name) && m_values[name].first.canConvert<T>())
+ if (hasValue(name) && m_values.value(name).canConvert<T>())
return true;
if (recursive)
return m_parent->hasValueOfType<T>(name, true);
@@ -114,7 +95,5 @@ template<typename T> bool Config::hasValueOfType(const QString& name, const bool
}
Q_DECLARE_METATYPE(Sigscript::Config*)
-Q_DECLARE_METATYPE(Sigscript::Config::Options)
-Q_DECLARE_OPERATORS_FOR_FLAGS(Sigscript::Config::Options)
#endif