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