From dce0855fc67ee1d2512f4994c818600908e23848 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <qtc-committer@nokia.com> Date: Tue, 6 Jan 2009 15:23:59 +0100 Subject: [PATCH] Show how to replace AST nodes. --- tests/manual/cplusplus/main.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp index 019683f0615..b8a8e328708 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[]) -- GitLab