LanguageCategory.h revision 360784
1//===-- LanguageCategory.h----------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef lldb_LanguageCategory_h_
11#define lldb_LanguageCategory_h_
12
13
14#include "lldb/DataFormatters/FormatCache.h"
15#include "lldb/DataFormatters/FormatClasses.h"
16#include "lldb/lldb-public.h"
17
18#include <memory>
19
20namespace lldb_private {
21
22class LanguageCategory {
23public:
24  typedef std::unique_ptr<LanguageCategory> UniquePointer;
25
26  LanguageCategory(lldb::LanguageType lang_type);
27
28  template <typename ImplSP>
29  bool Get(FormattersMatchData &match_data, ImplSP &format_sp);
30  template <typename ImplSP>
31  bool GetHardcoded(FormatManager &fmt_mgr, FormattersMatchData &match_data,
32                    ImplSP &format_sp);
33
34  lldb::TypeCategoryImplSP GetCategory() const;
35
36  FormatCache &GetFormatCache();
37
38  void Enable();
39
40  void Disable();
41
42  bool IsEnabled();
43
44private:
45  lldb::TypeCategoryImplSP m_category_sp;
46
47  HardcodedFormatters::HardcodedFormatFinder m_hardcoded_formats;
48  HardcodedFormatters::HardcodedSummaryFinder m_hardcoded_summaries;
49  HardcodedFormatters::HardcodedSyntheticFinder m_hardcoded_synthetics;
50
51  template <typename ImplSP>
52  auto &GetHardcodedFinder();
53
54  lldb_private::FormatCache m_format_cache;
55
56  bool m_enabled;
57};
58
59} // namespace lldb_private
60
61#endif // lldb_LanguageCategory_h_
62