//===-- 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/Core/ConstString.h" #include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/FormatManager.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_