1314564Sdim//===-- SBTypeSummary.h -------------------------------------------*- C++ 2314564Sdim//-*-===// 3254721Semaste// 4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5353358Sdim// See https://llvm.org/LICENSE.txt for license information. 6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef LLDB_SBTypeSummary_h_ 11254721Semaste#define LLDB_SBTypeSummary_h_ 12254721Semaste 13254721Semaste#include "lldb/API/SBDefines.h" 14254721Semaste 15254721Semastenamespace lldb { 16314564Sdimclass LLDB_API SBTypeSummaryOptions { 17314564Sdimpublic: 18314564Sdim SBTypeSummaryOptions(); 19280031Sdim 20314564Sdim SBTypeSummaryOptions(const lldb::SBTypeSummaryOptions &rhs); 21296417Sdim 22314564Sdim SBTypeSummaryOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr); 23296417Sdim 24314564Sdim ~SBTypeSummaryOptions(); 25254721Semaste 26353358Sdim explicit operator bool() const; 27353358Sdim 28314564Sdim bool IsValid(); 29314564Sdim 30314564Sdim lldb::LanguageType GetLanguage(); 31314564Sdim 32314564Sdim lldb::TypeSummaryCapping GetCapping(); 33314564Sdim 34314564Sdim void SetLanguage(lldb::LanguageType); 35314564Sdim 36314564Sdim void SetCapping(lldb::TypeSummaryCapping); 37314564Sdim 38314564Sdimprotected: 39314564Sdim friend class SBValue; 40314564Sdim 41314564Sdim lldb_private::TypeSummaryOptions *operator->(); 42314564Sdim 43314564Sdim const lldb_private::TypeSummaryOptions *operator->() const; 44314564Sdim 45314564Sdim lldb_private::TypeSummaryOptions *get(); 46314564Sdim 47314564Sdim lldb_private::TypeSummaryOptions &ref(); 48314564Sdim 49314564Sdim const lldb_private::TypeSummaryOptions &ref() const; 50314564Sdim 51314564Sdim void SetOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr); 52314564Sdim 53314564Sdimprivate: 54353358Sdim std::unique_ptr<lldb_private::TypeSummaryOptions> m_opaque_up; 55314564Sdim}; 56314564Sdim 57314564Sdimclass SBTypeSummary { 58314564Sdimpublic: 59314564Sdim SBTypeSummary(); 60314564Sdim 61314564Sdim // Native function summary formatter callback 62314564Sdim typedef bool (*FormatCallback)(SBValue, SBTypeSummaryOptions, SBStream &); 63314564Sdim 64314564Sdim static SBTypeSummary 65314564Sdim CreateWithSummaryString(const char *data, 66314564Sdim uint32_t options = 0); // see lldb::eTypeOption values 67314564Sdim 68314564Sdim static SBTypeSummary 69314564Sdim CreateWithFunctionName(const char *data, 70314564Sdim uint32_t options = 0); // see lldb::eTypeOption values 71314564Sdim 72314564Sdim static SBTypeSummary 73314564Sdim CreateWithScriptCode(const char *data, 74314564Sdim uint32_t options = 0); // see lldb::eTypeOption values 75314564Sdim 76314564Sdim static SBTypeSummary CreateWithCallback(FormatCallback cb, 77314564Sdim uint32_t options = 0, 78314564Sdim const char *description = nullptr); 79314564Sdim 80314564Sdim SBTypeSummary(const lldb::SBTypeSummary &rhs); 81314564Sdim 82314564Sdim ~SBTypeSummary(); 83314564Sdim 84353358Sdim explicit operator bool() const; 85353358Sdim 86314564Sdim bool IsValid() const; 87314564Sdim 88314564Sdim bool IsFunctionCode(); 89314564Sdim 90314564Sdim bool IsFunctionName(); 91314564Sdim 92314564Sdim bool IsSummaryString(); 93314564Sdim 94314564Sdim const char *GetData(); 95314564Sdim 96314564Sdim void SetSummaryString(const char *data); 97314564Sdim 98314564Sdim void SetFunctionName(const char *data); 99314564Sdim 100314564Sdim void SetFunctionCode(const char *data); 101314564Sdim 102314564Sdim uint32_t GetOptions(); 103314564Sdim 104314564Sdim void SetOptions(uint32_t); 105314564Sdim 106314564Sdim bool GetDescription(lldb::SBStream &description, 107314564Sdim lldb::DescriptionLevel description_level); 108314564Sdim 109314564Sdim lldb::SBTypeSummary &operator=(const lldb::SBTypeSummary &rhs); 110314564Sdim 111314564Sdim bool DoesPrintValue(lldb::SBValue value); 112314564Sdim 113314564Sdim bool IsEqualTo(lldb::SBTypeSummary &rhs); 114314564Sdim 115314564Sdim bool operator==(lldb::SBTypeSummary &rhs); 116314564Sdim 117314564Sdim bool operator!=(lldb::SBTypeSummary &rhs); 118314564Sdim 119314564Sdimprotected: 120314564Sdim friend class SBDebugger; 121314564Sdim friend class SBTypeCategory; 122314564Sdim friend class SBValue; 123314564Sdim 124314564Sdim lldb::TypeSummaryImplSP GetSP(); 125314564Sdim 126314564Sdim void SetSP(const lldb::TypeSummaryImplSP &typefilter_impl_sp); 127314564Sdim 128314564Sdim lldb::TypeSummaryImplSP m_opaque_sp; 129314564Sdim 130314564Sdim SBTypeSummary(const lldb::TypeSummaryImplSP &); 131314564Sdim 132314564Sdim bool CopyOnWrite_Impl(); 133314564Sdim 134314564Sdim bool ChangeSummaryType(bool want_script); 135314564Sdim}; 136314564Sdim 137254721Semaste} // namespace lldb 138254721Semaste 139254721Semaste#endif // LLDB_SBTypeSummary_h_ 140