SummaryManager.h revision a64e89bbfa756816d1e4a48e5d6c03edf1d7f23b
1a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek//== SummaryManager.h - Generic handling of function summaries --*- C++ -*--==// 2a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// 3a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// The LLVM Compiler Infrastructure 4a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// 5a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// This file is distributed under the University of Illinois Open Source 6a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// License. See LICENSE.TXT for details. 7a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// 8a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek//===----------------------------------------------------------------------===// 9a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// 10a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// This file defines SummaryManager and related classes, which provides 11a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// a generic mechanism for managing function summaries. 12a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek// 13a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek//===----------------------------------------------------------------------===// 14a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 15a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#ifndef LLVM_CLANG_CHECKER_SUMMARY 16a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#define LLVM_CLANG_CHECKER_SUMMARY 17a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 18a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#include "llvm/ADT/FoldingSet.h" 19a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#include "llvm/Support/Allocator.h" 20a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 21a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremeneknamespace clang { 22a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 23a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremeneknamespace summMgr { 24a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 25a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 26a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek/* Key kinds: 27a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 28a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C functions 29a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C++ functions (name + parameter types) 30a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - ObjC methods: 31a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, selector (class method) 32a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, selector (instance method) 33a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Category, selector (instance method) 34a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Protocol, selector (instance method) 35a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C++ methods 36a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, function name + parameter types + const 37a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek */ 38a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 39a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryKey { 40a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 41a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 42a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 43a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek} // end namespace clang::summMgr 44a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 45a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryManagerImpl { 46a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 47a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 48a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 49a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 50a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenektemplate <typename T> 51a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryManager : SummaryManagerImpl { 52a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 53a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 54a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 55a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek} // end clang namespace 56a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 57a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#endif 58