Chris Lattner | f42cce7 | 2006-10-25 04:09:21 +0000 | [diff] [blame] | 1 | //===--- Stmt.cpp - Statement AST Node Implementation ---------------------===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file was developed by Chris Lattner and is distributed under |
| 6 | // the University of Illinois Open Source License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | // |
| 10 | // This file implements the Stmt class and statement subclasses. |
| 11 | // |
| 12 | //===----------------------------------------------------------------------===// |
| 13 | |
| 14 | #include "clang/AST/Stmt.h" |
| 15 | #include "clang/AST/Expr.h" |
Chris Lattner | 5e9a878 | 2006-11-04 06:21:51 +0000 | [diff] [blame^] | 16 | #include "clang/AST/StmtVisitor.h" |
Chris Lattner | f42cce7 | 2006-10-25 04:09:21 +0000 | [diff] [blame] | 17 | #include <iostream> |
| 18 | using namespace llvm; |
| 19 | using namespace clang; |
| 20 | |
| 21 | void Stmt::dump() const { |
| 22 | if (this == 0) { |
| 23 | std::cerr << "<null>"; |
| 24 | return; |
| 25 | } |
Chris Lattner | 6d9a685 | 2006-10-25 05:11:20 +0000 | [diff] [blame] | 26 | if (isExpr()) std::cerr << "("; |
Chris Lattner | f42cce7 | 2006-10-25 04:09:21 +0000 | [diff] [blame] | 27 | dump_impl(); |
Chris Lattner | 6d9a685 | 2006-10-25 05:11:20 +0000 | [diff] [blame] | 28 | if (isExpr()) std::cerr << ")"; |
Chris Lattner | f42cce7 | 2006-10-25 04:09:21 +0000 | [diff] [blame] | 29 | } |
Chris Lattner | e5cca06 | 2006-10-25 04:29:46 +0000 | [diff] [blame] | 30 | |
| 31 | |
Chris Lattner | 5e9a878 | 2006-11-04 06:21:51 +0000 | [diff] [blame^] | 32 | void CompoundStmt::visit(StmtVisitor *V) { return V->VisitCompoundStmt(this); } |
| 33 | void IfStmt ::visit(StmtVisitor *V) { return V->VisitIfStmt(this); } |
| 34 | void ReturnStmt ::visit(StmtVisitor *V) { return V->VisitReturnStmt(this); } |
| 35 | |
Chris Lattner | e5cca06 | 2006-10-25 04:29:46 +0000 | [diff] [blame] | 36 | |
| 37 | void CompoundStmt::dump_impl() const { |
| 38 | std::cerr << "{\n"; |
Chris Lattner | 6d9a685 | 2006-10-25 05:11:20 +0000 | [diff] [blame] | 39 | for (unsigned i = 0, e = Body.size(); i != e; ++i) { |
Chris Lattner | e5cca06 | 2006-10-25 04:29:46 +0000 | [diff] [blame] | 40 | Body[i]->dump(); |
Chris Lattner | 6d9a685 | 2006-10-25 05:11:20 +0000 | [diff] [blame] | 41 | std::cerr << "\n"; |
| 42 | } |
Chris Lattner | e5cca06 | 2006-10-25 04:29:46 +0000 | [diff] [blame] | 43 | std::cerr << "}"; |
| 44 | } |
| 45 | |
Chris Lattner | 5f84a06 | 2006-10-25 05:55:20 +0000 | [diff] [blame] | 46 | void IfStmt::dump_impl() const { |
| 47 | std::cerr << "if "; |
| 48 | Cond->dump(); |
| 49 | std::cerr << " then\n"; |
| 50 | Then->dump(); |
| 51 | std::cerr << "\n else "; |
| 52 | Else->dump(); |
| 53 | } |
Chris Lattner | e5cca06 | 2006-10-25 04:29:46 +0000 | [diff] [blame] | 54 | |
| 55 | void ReturnStmt::dump_impl() const { |
| 56 | std::cerr << "return "; |
| 57 | if (RetExpr) |
| 58 | RetExpr->dump(); |
| 59 | } |