summaryrefslogtreecommitdiffstats
path: root/sigscript/Config.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-17 20:43:33 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-17 20:43:33 -0400
commitaf483183c11a494394a3c61c47f9c46f805806bf (patch)
tree03e0677ee576274550dbb25e893bbad34d8b87dc /sigscript/Config.cpp
parent86d3207a4fc047d62cba109be7e8f40a43cc7d65 (diff)
downloadsigen-af483183c11a494394a3c61c47f9c46f805806bf.tar.gz
sigen-af483183c11a494394a3c61c47f9c46f805806bf.tar.xz
sigen-af483183c11a494394a3c61c47f9c46f805806bf.zip
Add override capabilities for Config values
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r--sigscript/Config.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp
index f5924056..a30fa997 100644
--- a/sigscript/Config.cpp
+++ b/sigscript/Config.cpp
@@ -121,10 +121,40 @@ bool Config::unsetOptions(const QString& name, const ConfigOptions options)
ConfigOptions Config::options(const QString& name, const bool recursive) const
{
+ ConfigOptions options = 0;
if (m_values.contains(name))
- return m_values.options(name);
+ options = m_values.options(name);
if (recursive && m_parent)
- return m_parent->options(name, recursive);
+ options |= m_parent->options(name, recursive) & ~overrides(name);
+ return options;
+}
+
+bool Config::setOverrides(const QString& name, const ConfigOptions newOverrides)
+{
+ if ((~overrides(name) & newOverrides) || addValue(name, QVariant()))
+ {
+ m_values.setOverrides(name, newOverrides);
+ emit(overridesChanged(name, overrides(name)));
+ return true;
+ }
+ return false;
+}
+
+bool Config::unsetOverrides(const QString& name, const ConfigOptions oldOverrides)
+{
+ if (overrides(name) & oldOverrides)
+ {
+ m_values.unsetOverrides(name, oldOverrides);
+ emit(overridesChanged(name, overrides(name)));
+ return true;
+ }
+ return false;
+}
+
+ConfigOptions Config::overrides(const QString& name) const
+{
+ if (m_values.contains(name))
+ return m_values.overrides(name);
return 0;
}