diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 19:36:35 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 19:36:35 -0400 |
| commit | 99c87ee39e32117ce5a9652ef5b50a1d5760bdf7 (patch) | |
| tree | 203e64058ccd55a8a8b0d1211855cf0197ddf23a /sigscript/Config.h | |
| parent | d40b7586c3d1f1020a9fefd52bec75161edc63e8 (diff) | |
| download | sigen-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.h | 39 |
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 |
