diff options
author | Oswald Buddenhagen <[email protected]> | 2010-11-08 21:09:19 +0100 |
---|---|---|
committer | Oswald Buddenhagen <[email protected]> | 2010-11-17 13:19:06 +0100 |
commit | 9bd95ade0853ff7fb3295c8e119232820be7139b (patch) | |
tree | a7e58c6dbbd76b824b46573d7dc9c7fb38a8c5a4 /src/libs/utils/stringutils.h | |
parent | a2b6391b313bc4e53e5cdf767ab4697cf9775e81 (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.h | 24 |
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 |