//===-- DataVisualization.h -------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef lldb_DataVisualization_h_ #define lldb_DataVisualization_h_ // C Includes // C++ Includes // Other libraries and framework includes // Project includes #include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/FormatManager.h" #include "lldb/Utility/ConstString.h" namespace lldb_private { // this class is the high-level front-end of LLDB Data Visualization // code in FormatManager.h/cpp is the low-level implementation of this feature // clients should refer to this class as the entry-point into the data // formatters // unless they have a good reason to bypass this and go to the backend class DataVisualization { public: // use this call to force the FM to consider itself updated even when there is // no apparent reason for that static void ForceUpdate(); static uint32_t GetCurrentRevision(); static bool ShouldPrintAsOneLiner(ValueObject &valobj); static lldb::TypeFormatImplSP GetFormat(ValueObject &valobj, lldb::DynamicValueType use_dynamic); static lldb::TypeFormatImplSP GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp); static lldb::TypeSummaryImplSP GetSummaryFormat(ValueObject &valobj, lldb::DynamicValueType use_dynamic); static lldb::TypeSummaryImplSP GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp); #ifndef LLDB_DISABLE_PYTHON static lldb::SyntheticChildrenSP GetSyntheticChildrenForType(lldb::TypeNameSpecifierImplSP type_sp); #endif static lldb::TypeFilterImplSP GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp); #ifndef LLDB_DISABLE_PYTHON static lldb::ScriptedSyntheticChildrenSP GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp); #endif #ifndef LLDB_DISABLE_PYTHON static lldb::SyntheticChildrenSP GetSyntheticChildren(ValueObject &valobj, lldb::DynamicValueType use_dynamic); #endif static lldb::TypeValidatorImplSP GetValidator(ValueObject &valobj, lldb::DynamicValueType use_dynamic); static lldb::TypeValidatorImplSP GetValidatorForType(lldb::TypeNameSpecifierImplSP type_sp); static bool AnyMatches(ConstString type_name, TypeCategoryImpl::FormatCategoryItems items = TypeCategoryImpl::ALL_ITEM_TYPES, bool only_enabled = true, const char **matching_category = nullptr, TypeCategoryImpl::FormatCategoryItems *matching_type = nullptr); class NamedSummaryFormats { public: static bool GetSummaryFormat(const ConstString &type, lldb::TypeSummaryImplSP &entry); static void Add(const ConstString &type, const lldb::TypeSummaryImplSP &entry); static bool Delete(const ConstString &type); static void Clear(); static void ForEach(std::function callback); static uint32_t GetCount(); }; class Categories { public: static bool GetCategory(const ConstString &category, lldb::TypeCategoryImplSP &entry, bool allow_create = true); static bool GetCategory(lldb::LanguageType language, lldb::TypeCategoryImplSP &entry); static void Add(const ConstString &category); static bool Delete(const ConstString &category); static void Clear(); static void Clear(const ConstString &category); static void Enable(const ConstString &category, TypeCategoryMap::Position = TypeCategoryMap::Default); static void Enable(lldb::LanguageType lang_type); static void Disable(const ConstString &category); static void Disable(lldb::LanguageType lang_type); static void Enable(const lldb::TypeCategoryImplSP &category, TypeCategoryMap::Position = TypeCategoryMap::Default); static void Disable(const lldb::TypeCategoryImplSP &category); static void EnableStar(); static void DisableStar(); static void ForEach(TypeCategoryMap::ForEachCallback callback); static uint32_t GetCount(); static lldb::TypeCategoryImplSP GetCategoryAtIndex(size_t); }; }; } // namespace lldb_private #endif // lldb_DataVisualization_h_