diff options
author | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-06 15:23:59 +0100 |
---|---|---|
committer | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-06 15:23:59 +0100 |
commit | dce0855fc67ee1d2512f4994c818600908e23848 (patch) | |
tree | d7cc8805529580c60232b59d3c53cbea7441930c /tests | |
parent | e43e09ee5ff43ef69c60b8a12f66c166c6f44272 (diff) | |
download | qt-creator-dce0855fc67ee1d2512f4994c818600908e23848.tar.gz |
Show how to replace AST nodes.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/manual/cplusplus/main.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp index 019683f061..b8a8e32870 100644 --- a/tests/manual/cplusplus/main.cpp +++ b/tests/manual/cplusplus/main.cpp @@ -49,6 +49,7 @@ #include <cstdio> #include <cstdlib> #include <iostream> +#include <sstream> class Rewrite { @@ -194,6 +195,19 @@ protected: return false; } + + virtual bool visit(CppCastExpressionAST *ast) { + // Replace the C++ cast expression (e.g. static_cast<foo>(a)) with + // the one generated by the pretty printer. + std::ostringstream o; + PrettyPrinter pp(control(), o); + pp(ast); + remove(ast->firstToken(), ast->lastToken()); + const std::string str = o.str(); + insertTextBefore(ast->firstToken(), str.c_str()); + insertTextBefore(ast->firstToken(), "/* #REF# beautiful cast */ "); + return false; + } }; int main(int argc, char *argv[]) |