/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/source/Plugins/Language/ObjC/NSDictionary.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===-- NSDictionary.h ------------------------------------------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | |
9 | | #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_NSDICTIONARY_H |
10 | | #define LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_NSDICTIONARY_H |
11 | | |
12 | | #include "lldb/Core/ValueObject.h" |
13 | | #include "lldb/DataFormatters/TypeSummary.h" |
14 | | #include "lldb/DataFormatters/TypeSynthetic.h" |
15 | | #include "lldb/Utility/ConstString.h" |
16 | | #include "lldb/Utility/Stream.h" |
17 | | |
18 | | #include <map> |
19 | | #include <memory> |
20 | | |
21 | | namespace lldb_private { |
22 | | namespace formatters { |
23 | | template <bool name_entries> |
24 | | bool NSDictionarySummaryProvider(ValueObject &valobj, Stream &stream, |
25 | | const TypeSummaryOptions &options); |
26 | | |
27 | | extern template bool |
28 | | NSDictionarySummaryProvider<true>(ValueObject &, Stream &, |
29 | | const TypeSummaryOptions &); |
30 | | |
31 | | extern template bool |
32 | | NSDictionarySummaryProvider<false>(ValueObject &, Stream &, |
33 | | const TypeSummaryOptions &); |
34 | | |
35 | | SyntheticChildrenFrontEnd * |
36 | | NSDictionarySyntheticFrontEndCreator(CXXSyntheticChildren *, |
37 | | lldb::ValueObjectSP); |
38 | | |
39 | | class NSDictionary_Additionals { |
40 | | public: |
41 | | class AdditionalFormatterMatching { |
42 | | public: |
43 | | class Matcher { |
44 | | public: |
45 | 0 | virtual ~Matcher() = default; |
46 | | virtual bool Match(ConstString class_name) = 0; |
47 | | |
48 | | typedef std::unique_ptr<Matcher> UP; |
49 | | }; |
50 | | class Prefix : public Matcher { |
51 | | public: |
52 | | Prefix(ConstString p); |
53 | 0 | ~Prefix() override = default; |
54 | | bool Match(ConstString class_name) override; |
55 | | |
56 | | private: |
57 | | ConstString m_prefix; |
58 | | }; |
59 | | class Full : public Matcher { |
60 | | public: |
61 | | Full(ConstString n); |
62 | 0 | ~Full() override = default; |
63 | | bool Match(ConstString class_name) override; |
64 | | |
65 | | private: |
66 | | ConstString m_name; |
67 | | }; |
68 | | typedef Matcher::UP MatcherUP; |
69 | | |
70 | 0 | MatcherUP GetFullMatch(ConstString n) { return std::make_unique<Full>(n); } |
71 | | |
72 | 0 | MatcherUP GetPrefixMatch(ConstString p) { |
73 | 0 | return std::make_unique<Prefix>(p); |
74 | 0 | } |
75 | | }; |
76 | | |
77 | | template <typename FormatterType> |
78 | | using AdditionalFormatter = |
79 | | std::pair<AdditionalFormatterMatching::MatcherUP, FormatterType>; |
80 | | |
81 | | template <typename FormatterType> |
82 | | using AdditionalFormatters = std::vector<AdditionalFormatter<FormatterType>>; |
83 | | |
84 | | static AdditionalFormatters<CXXFunctionSummaryFormat::Callback> & |
85 | | GetAdditionalSummaries(); |
86 | | |
87 | | static AdditionalFormatters<CXXSyntheticChildren::CreateFrontEndCallback> & |
88 | | GetAdditionalSynthetics(); |
89 | | }; |
90 | | } // namespace formatters |
91 | | } // namespace lldb_private |
92 | | |
93 | | #endif // LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_NSDICTIONARY_H |