BodyFarm.h revision 249423
1243791Sdim//== BodyFarm.h - Factory for conjuring up fake bodies -------------*- C++ -*-// 2243791Sdim// 3243791Sdim// The LLVM Compiler Infrastructure 4243791Sdim// 5243791Sdim// This file is distributed under the University of Illinois Open Source 6243791Sdim// License. See LICENSE.TXT for details. 7243791Sdim// 8243791Sdim//===----------------------------------------------------------------------===// 9243791Sdim// 10243791Sdim// BodyFarm is a factory for creating faux implementations for functions/methods 11243791Sdim// for analysis purposes. 12243791Sdim// 13243791Sdim//===----------------------------------------------------------------------===// 14243791Sdim 15243791Sdim#ifndef LLVM_CLANG_ANALYSIS_BODYFARM_H 16243791Sdim#define LLVM_CLANG_ANALYSIS_BODYFARM_H 17243791Sdim 18249423Sdim#include "clang/Basic/LLVM.h" 19249423Sdim#include "llvm/ADT/DenseMap.h" 20243791Sdim#include "llvm/ADT/Optional.h" 21243791Sdim 22243791Sdimnamespace clang { 23243791Sdim 24243791Sdimclass ASTContext; 25243791Sdimclass Decl; 26243791Sdimclass FunctionDecl; 27243791Sdimclass Stmt; 28243791Sdim 29243791Sdimclass BodyFarm { 30243791Sdimpublic: 31243791Sdim BodyFarm(ASTContext &C) : C(C) {} 32243791Sdim 33243791Sdim /// Factory method for creating bodies for ordinary functions. 34243791Sdim Stmt *getBody(const FunctionDecl *D); 35243791Sdim 36243791Sdimprivate: 37249423Sdim typedef llvm::DenseMap<const Decl *, Optional<Stmt *> > BodyMap; 38243791Sdim 39243791Sdim ASTContext &C; 40243791Sdim BodyMap Bodies; 41243791Sdim}; 42243791Sdim} 43243791Sdim 44243791Sdim#endif 45