//===-- SBTypeSummary.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_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(); 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_ap; }; 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(); 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_