bool WebCLVisitor::VisitDeclStmt(clang::DeclStmt *stmt) { return handleDeclStmt(stmt); }
void HtWalkDesign::walkStmt(HtStmt ** ppHtStmt) { HtStmt * pHtStmt = *ppHtStmt; if (pHtStmt == 0) return; handleStmt( ppHtStmt ); switch (pHtStmt->getStmtClass()) { case Stmt::DeclStmtClass: handleDeclStmt(ppHtStmt); if (*ppHtStmt != pHtStmt) break; for (HtDecl ** ppHtDecl = pHtStmt->getPFirstDecl(); *ppHtDecl; ppHtDecl = (*ppHtDecl)->getPNextDecl()) { walkDecl(ppHtDecl); if (*ppHtDecl == 0) break; } break; case Stmt::NullStmtClass: break; case Stmt::CompoundStmtClass: { HtStmt ** ppHtSubStmt = pHtStmt->getPFirstStmt(); while (*ppHtSubStmt) { HtStmt * pOrigStmt = *ppHtSubStmt; walkStmt(ppHtSubStmt); // stay on current statement if original statement was deleted if (*ppHtSubStmt == pOrigStmt) ppHtSubStmt = (*ppHtSubStmt)->getPNextStmt(); } } break; case Stmt::IfStmtClass: walkExpr(pHtStmt->getPCond()); walkStmt(pHtStmt->getPThen()); walkStmt(pHtStmt->getPElse()); break; case Stmt::SwitchStmtClass: handleSwitchStmt(ppHtStmt); walkExpr(pHtStmt->getPCond()); walkStmt(pHtStmt->getPBody()); break; case Stmt::CaseStmtClass: walkExpr(pHtStmt->getPLHS()); walkStmt(pHtStmt->getPSubStmt()); break; case Stmt::DefaultStmtClass: walkStmt(pHtStmt->getPSubStmt()); break; case Stmt::BreakStmtClass: break; case Stmt::ReturnStmtClass: walkExpr(pHtStmt->getPSubExpr()); break; case Stmt::CXXOperatorCallExprClass: case Stmt::CXXMemberCallExprClass: case Stmt::ImplicitCastExprClass: case Stmt::CXXStaticCastExprClass: case Stmt::CStyleCastExprClass: case Stmt::MemberExprClass: case Stmt::CXXThisExprClass: case Stmt::BinaryOperatorClass: case Stmt::CXXBoolLiteralExprClass: case Stmt::IntegerLiteralClass: case Stmt::ParenExprClass: case Stmt::CallExprClass: case Stmt::CompoundAssignOperatorClass: assert(pHtStmt->isAssignStmt()); walkExpr((HtExpr**)(ppHtStmt)); break; default: assert(0); } }