//===-- TypeCategory.h ------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_DATAFORMATTERS_TYPECATEGORY_H #define LLDB_DATAFORMATTERS_TYPECATEGORY_H #include <array> #include <initializer_list> #include <memory> #include <mutex> #include <string> #include <vector> #include "lldb/lldb-enumerations.h" #include "lldb/lldb-public.h" #include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/FormattersContainer.h" namespace lldb_private { // A formatter container with sub-containers for different priority tiers, that // also exposes a flat view of all formatters in it. // // Formatters have different priority during matching, depending on the type of // matching specified at registration. Exact matchers are processed first, then // regex, and finally callback matchers. However, the scripting API presents a // flat view of formatters in a category, with methods like `GetNumFormats()` // and `GetFormatAtIndex(i)`. So we need something that can behave like both // representations. template <typename FormatterImpl> class TieredFormatterContainer { … }; class TypeCategoryImpl { … }; } // namespace lldb_private #endif // LLDB_DATAFORMATTERS_TYPECATEGORY_H