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