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