CheckerHelpers.h revision 218887
190075Sobrien//== CheckerHelpers.h - Helper functions for checkers ------------*- C++ -*--=// 290075Sobrien// 390075Sobrien// The LLVM Compiler Infrastructure 490075Sobrien// 590075Sobrien// This file is distributed under the University of Illinois Open Source 690075Sobrien// License. See LICENSE.TXT for details. 790075Sobrien// 890075Sobrien//===----------------------------------------------------------------------===// 990075Sobrien// 1090075Sobrien// This file defines CheckerVisitor. 1190075Sobrien// 1290075Sobrien//===----------------------------------------------------------------------===// 1390075Sobrien 1490075Sobrien#ifndef LLVM_CLANG_GR_PATHSENSITIVE_CHECKERHELPERS 1590075Sobrien#define LLVM_CLANG_GR_PATHSENSITIVE_CHECKERHELPERS 1690075Sobrien 1790075Sobrien#include "clang/AST/Stmt.h" 1890075Sobrien 1990075Sobriennamespace clang { 2090075Sobrien 2190075Sobriennamespace ento { 2290075Sobrien 2390075Sobrienbool containsMacro(const Stmt *S); 2490075Sobrienbool containsEnum(const Stmt *S); 2590075Sobrienbool containsStaticLocal(const Stmt *S); 2690075Sobrienbool containsBuiltinOffsetOf(const Stmt *S); 2790075Sobrientemplate <class T> bool containsStmt(const Stmt *S) { 2890075Sobrien if (isa<T>(S)) 2990075Sobrien return true; 3090075Sobrien 3190075Sobrien for (Stmt::const_child_range I = S->children(); I; ++I) 3290075Sobrien if (const Stmt *child = *I) 3390075Sobrien if (containsStmt<T>(child)) 3490075Sobrien return true; 3590075Sobrien 3690075Sobrien return false; 3790075Sobrien} 3890075Sobrien 3990075Sobrien} // end GR namespace 4090075Sobrien 4190075Sobrien} // end clang namespace 4290075Sobrien 4390075Sobrien#endif 44117395Skan