summaryrefslogtreecommitdiff
path: root/src/libs/utils/stringutils.h
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-10-10 14:15:44 +0200
committerhjk <hjk121@nokiamail.com>2014-10-10 16:22:52 +0200
commit46c4ab7bf9b43e5088feab54039d5de9b7165c6a (patch)
treeb2382b3347f6498fc2b6e1d10061345399798cbf /src/libs/utils/stringutils.h
parent0812718905a15f1e9c6ec886faf9b051c6a3e078 (diff)
downloadqt-creator-46c4ab7bf9b43e5088feab54039d5de9b7165c6a.tar.gz
Utils: Introduce a not-so-abstract MacroExpander utility class
The current use of AbstractMacroExpander requires some boiler plate code that can be avoided. Change-Id: I753d872d824274d94d5105232a8fc05ac7bf0711 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/libs/utils/stringutils.h')
-rw-r--r--src/libs/utils/stringutils.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libs/utils/stringutils.h b/src/libs/utils/stringutils.h
index 97d47d64e4..958d56976c 100644
--- a/src/libs/utils/stringutils.h
+++ b/src/libs/utils/stringutils.h
@@ -32,6 +32,8 @@
#include "utils_global.h"
+#include <functional>
+
QT_BEGIN_NAMESPACE
class QStringList;
QT_END_NAMESPACE
@@ -75,6 +77,19 @@ private:
bool expandNestedMacros(const QString &str, int *pos, QString *ret);
};
+class QTCREATOR_UTILS_EXPORT MacroExpander : public AbstractMacroExpander
+{
+public:
+ typedef std::function<bool(const QString &name, QString *ret)> Resolver;
+
+ explicit MacroExpander(const Resolver &resolver) : m_resolver(resolver) {}
+
+ bool resolveMacro(const QString &name, QString *ret) { return m_resolver(name, ret); }
+
+private:
+ Resolver m_resolver;
+};
+
QTCREATOR_UTILS_EXPORT void expandMacros(QString *str, AbstractMacroExpander *mx);
QTCREATOR_UTILS_EXPORT QString expandMacros(const QString &str, AbstractMacroExpander *mx);