//===-- SBTypeSummary.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_SBTypeSummary_h_ #define LLDB_SBTypeSummary_h_ #include "lldb/API/SBDefines.h" namespace lldb { class LLDB_API SBTypeSummaryOptions { public: SBTypeSummaryOptions(); SBTypeSummaryOptions(const lldb::SBTypeSummaryOptions &rhs); SBTypeSummaryOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr); ~SBTypeSummaryOptions(); explicit operator bool() const; bool IsValid(); lldb::LanguageType GetLanguage(); lldb::TypeSummaryCapping GetCapping(); void SetLanguage(lldb::LanguageType); void SetCapping(lldb::TypeSummaryCapping); protected: friend class SBValue; lldb_private::TypeSummaryOptions *operator->(); const lldb_private::TypeSummaryOptions *operator->() const; lldb_private::TypeSummaryOptions *get(); lldb_private::TypeSummaryOptions &ref(); const lldb_private::TypeSummaryOptions &ref() const; void SetOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr); private: std::unique_ptr m_opaque_up; }; class SBTypeSummary { public: SBTypeSummary(); // Native function summary formatter callback typedef bool (*FormatCallback)(SBValue, SBTypeSummaryOptions, SBStream &); static SBTypeSummary CreateWithSummaryString(const char *data, uint32_t options = 0); // see lldb::eTypeOption values static SBTypeSummary CreateWithFunctionName(const char *data, uint32_t options = 0); // see lldb::eTypeOption values static SBTypeSummary CreateWithScriptCode(const char *data, uint32_t options = 0); // see lldb::eTypeOption values static SBTypeSummary CreateWithCallback(FormatCallback cb, uint32_t options = 0, const char *description = nullptr); SBTypeSummary(const lldb::SBTypeSummary &rhs); ~SBTypeSummary(); explicit operator bool() const; bool IsValid() const; bool IsFunctionCode(); bool IsFunctionName(); bool IsSummaryString(); const char *GetData(); void SetSummaryString(const char *data); void SetFunctionName(const char *data); void SetFunctionCode(const char *data); uint32_t GetOptions(); void SetOptions(uint32_t); bool GetDescription(lldb::SBStream &description, lldb::DescriptionLevel description_level); lldb::SBTypeSummary &operator=(const lldb::SBTypeSummary &rhs); bool DoesPrintValue(lldb::SBValue value); bool IsEqualTo(lldb::SBTypeSummary &rhs); bool operator==(lldb::SBTypeSummary &rhs); bool operator!=(lldb::SBTypeSummary &rhs); protected: friend class SBDebugger; friend class SBTypeCategory; friend class SBValue; lldb::TypeSummaryImplSP GetSP(); void SetSP(const lldb::TypeSummaryImplSP &typefilter_impl_sp); lldb::TypeSummaryImplSP m_opaque_sp; SBTypeSummary(const lldb::TypeSummaryImplSP &); bool CopyOnWrite_Impl(); bool ChangeSummaryType(bool want_script); }; } // namespace lldb #endif // LLDB_SBTypeSummary_h_