Example #1
0
bool WebCLVisitor::VisitDeclStmt(clang::DeclStmt *stmt)
{
    return handleDeclStmt(stmt);
}
Example #2
0
	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);
		}
	}