]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatCache.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / DataFormatters / FormatCache.h
1 //===-- FormatCache.h ---------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef lldb_FormatCache_h_
11 #define lldb_FormatCache_h_
12
13 // C Includes
14 // C++ Includes
15 #include <map>
16
17 // Other libraries and framework includes
18 // Project includes
19 #include "lldb/lldb-public.h"
20 #include "lldb/Core/ConstString.h"
21 #include "lldb/DataFormatters/FormatClasses.h"
22
23 namespace lldb_private {
24 class FormatCache
25 {
26 private:
27     struct Entry
28     {
29     private:
30         bool m_summary_cached : 1;
31         bool m_synthetic_cached : 1;
32         
33         lldb::TypeSummaryImplSP m_summary_sp;
34         lldb::SyntheticChildrenSP m_synthetic_sp;
35     public:
36         Entry ();
37         Entry (lldb::TypeSummaryImplSP);
38         Entry (lldb::SyntheticChildrenSP);
39         Entry (lldb::TypeSummaryImplSP,lldb::SyntheticChildrenSP);
40
41         bool
42         IsSummaryCached ();
43         
44         bool
45         IsSyntheticCached ();
46         
47         lldb::TypeSummaryImplSP
48         GetSummary ();
49         
50         lldb::SyntheticChildrenSP
51         GetSynthetic ();
52         
53         void
54         SetSummary (lldb::TypeSummaryImplSP);
55         
56         void
57         SetSynthetic (lldb::SyntheticChildrenSP);
58     };
59     typedef std::map<ConstString,Entry> CacheMap;
60     CacheMap m_map;
61     Mutex m_mutex;
62     
63     uint64_t m_cache_hits;
64     uint64_t m_cache_misses;
65     
66     Entry&
67     GetEntry (const ConstString& type);
68     
69 public:
70     FormatCache ();
71     
72     bool
73     GetSummary (const ConstString& type,lldb::TypeSummaryImplSP& summary_sp);
74
75     bool
76     GetSynthetic (const ConstString& type,lldb::SyntheticChildrenSP& synthetic_sp);
77     
78     void
79     SetSummary (const ConstString& type,lldb::TypeSummaryImplSP& summary_sp);
80     
81     void
82     SetSynthetic (const ConstString& type,lldb::SyntheticChildrenSP& synthetic_sp);
83     
84     void
85     Clear ();
86     
87     uint64_t
88     GetCacheHits ()
89     {
90         return m_cache_hits;
91     }
92     
93     uint64_t
94     GetCacheMisses ()
95     {
96         return m_cache_misses;
97     }
98 };
99 } // namespace lldb_private
100
101 #endif  // lldb_FormatCache_h_