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 155a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis#ifndef LLVM_CLANG_GR_SUMMARY 165a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis#define LLVM_CLANG_GR_SUMMARY 17a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 18a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#include "llvm/ADT/FoldingSet.h" 19a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#include "llvm/Support/Allocator.h" 20a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 21a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremeneknamespace clang { 22a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 239ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremeneknamespace ento { 245a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 25a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremeneknamespace summMgr { 26a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 27a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 28a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek/* Key kinds: 29a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 30a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C functions 31a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C++ functions (name + parameter types) 32a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - ObjC methods: 33a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, selector (class method) 34a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, selector (instance method) 35a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Category, selector (instance method) 36a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Protocol, selector (instance method) 37a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - C++ methods 38a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek - Class, function name + parameter types + const 39a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek */ 40a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 41a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryKey { 42a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 43a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 44a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 45a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek} // end namespace clang::summMgr 46a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 47a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryManagerImpl { 48a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 49a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 50a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 51a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 52a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenektemplate <typename T> 53a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenekclass SummaryManager : SummaryManagerImpl { 54a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 55a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek}; 56a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 575a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis} // end GR namespace 585a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 59a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek} // end clang namespace 60a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek 61a64e89bbfa756816d1e4a48e5d6c03edf1d7f23bTed Kremenek#endif 62