BodyFarm.h revision 243791
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 18243791Sdim#include "llvm/ADT/Optional.h" 19243791Sdim#include "llvm/ADT/DenseMap.h" 20243791Sdim 21243791Sdimnamespace clang { 22243791Sdim 23243791Sdimclass ASTContext; 24243791Sdimclass Decl; 25243791Sdimclass FunctionDecl; 26243791Sdimclass Stmt; 27243791Sdim 28243791Sdimclass BodyFarm { 29243791Sdimpublic: 30243791Sdim BodyFarm(ASTContext &C) : C(C) {} 31243791Sdim 32243791Sdim /// Factory method for creating bodies for ordinary functions. 33243791Sdim Stmt *getBody(const FunctionDecl *D); 34243791Sdim 35243791Sdimprivate: 36243791Sdim typedef llvm::DenseMap<const Decl *, llvm::Optional<Stmt *> > BodyMap; 37243791Sdim 38243791Sdim ASTContext &C; 39243791Sdim BodyMap Bodies; 40243791Sdim}; 41243791Sdim} 42243791Sdim 43243791Sdim#endif 44