aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/stringutils.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <[email protected]>2010-11-08 21:09:19 +0100
committerOswald Buddenhagen <[email protected]>2010-11-17 13:19:06 +0100
commit9bd95ade0853ff7fb3295c8e119232820be7139b (patch)
treea7e58c6dbbd76b824b46573d7dc9c7fb38a8c5a4 /src/libs/utils/stringutils.h
parenta2b6391b313bc4e53e5cdf767ab4697cf9775e81 (diff)
add generic macro expansion classes & functions to Utils
AbstractMacroExpander (any macros), AbstractQtcMacroExpander (%{var} style macros, which is a hybrid of printf format specifiers and unix environment expansions) and expandMacros() for the actual string manipulation.
Diffstat (limited to 'src/libs/utils/stringutils.h')
-rw-r--r--src/libs/utils/stringutils.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libs/utils/stringutils.h b/src/libs/utils/stringutils.h
index a863a617719..16ebdcae733 100644
--- a/src/libs/utils/stringutils.h
+++ b/src/libs/utils/stringutils.h
@@ -55,6 +55,30 @@ QTCREATOR_UTILS_EXPORT QString commonPath(const QStringList &files);
// If path is not sub of home path, or when running on Windows, returns the input
QTCREATOR_UTILS_EXPORT QString withTildeHomePath(const QString &path);
+class QTCREATOR_UTILS_EXPORT AbstractMacroExpander {
+public:
+ // Not const, as it may change the state of the expander.
+ //! Find an expando to replace and provide a replacement string.
+ //! \param str The string to scan
+ //! \param pos Position to start scan on input, found position on output
+ //! \param ret Replacement string on output
+ //! \return Length of string part to replace, zero if no (further) matches found
+ virtual int findMacro(const QString &str, int *pos, QString *ret) = 0;
+};
+
+class QTCREATOR_UTILS_EXPORT AbstractQtcMacroExpander : public AbstractMacroExpander {
+public:
+ virtual int findMacro(const QString &str, int *pos, QString *ret);
+ //! Provide a replacement string for an expando
+ //! \param name The name of the expando
+ //! \param ret Replacement string on output
+ //! \return True if the expando was found
+ virtual bool resolveMacro(const QString &name, QString *ret) = 0;
+};
+
+QTCREATOR_UTILS_EXPORT void expandMacros(QString *str, AbstractMacroExpander *mx);
+QTCREATOR_UTILS_EXPORT QString expandMacros(const QString &str, AbstractMacroExpander *mx);
+
} // namespace Utils
#endif // SETTINGSTUTILS_H