aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/macroexpander.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-10-22 16:22:39 +0200
committerTobias Hunger <tobias.hunger@theqtcompany.com>2014-10-23 12:43:57 +0200
commitcd53defc5d4b5206c9be234ea31f1c23d4975d15 (patch)
treecdfba9e39022dedcfb108ac0961c93ab73e65ef2 /src/libs/utils/macroexpander.cpp
parentacf79d7fc61bdaefd2b108902b85f4ab48653bbe (diff)
Restore JsonWizard expander functionality
Task-number: QTCREATORBUG-13229 Change-Id: I91fd996cdbf5f3e71bdf817e9c5beebbb007681b Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/libs/utils/macroexpander.cpp')
-rw-r--r--src/libs/utils/macroexpander.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libs/utils/macroexpander.cpp b/src/libs/utils/macroexpander.cpp
index fb365242ab9..8b65275b2df 100644
--- a/src/libs/utils/macroexpander.cpp
+++ b/src/libs/utils/macroexpander.cpp
@@ -66,6 +66,13 @@ public:
if (found)
return true;
+ found = Utils::anyOf(m_extraResolvers, [name, ret] (const MacroExpander::ResolverFunction &resolver) {
+ return resolver(name, ret);
+ });
+
+ if (found)
+ return true;
+
return this == globalMacroExpander()->d ? false : globalMacroExpander()->d->resolveMacro(name, ret);
}
@@ -94,6 +101,7 @@ public:
QHash<QByteArray, MacroExpander::StringFunction> m_map;
QHash<QByteArray, MacroExpander::PrefixFunction> m_prefixMap;
+ QVector<MacroExpander::ResolverFunction> m_extraResolvers;
QMap<QByteArray, QString> m_descriptions;
QString m_displayName;
QVector<MacroExpanderProvider> m_subProviders;
@@ -343,6 +351,11 @@ void MacroExpander::registerFileVariables(const QByteArray &prefix,
[base]() -> QString { QString tmp = base(); return tmp.isEmpty() ? QString() : QFileInfo(tmp).baseName(); });
}
+void MacroExpander::registerExtraResolver(const MacroExpander::ResolverFunction &value)
+{
+ d->m_extraResolvers.append(value);
+}
+
/*!
* Returns all registered variable names.
*