107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch//===-- SBTypeSummary.h -------------------------------------------*- C++ -*-===//
207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch//
307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch//                     The LLVM Compiler Infrastructure
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//
507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// This file is distributed under the University of Illinois Open Source
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// License. See LICENSE.TXT for details.
7a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)//
8a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)//===----------------------------------------------------------------------===//
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#ifndef LLDB_SBTypeSummary_h_
11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define LLDB_SBTypeSummary_h_
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "lldb/API/SBDefines.h"
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
1510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#ifndef LLDB_DISABLE_PYTHON
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace lldb {
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    class SBTypeSummary
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    public:
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        SBTypeSummary();
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        static SBTypeSummary
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        CreateWithSummaryString (const char* data,
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                                 uint32_t options = 0); // see lldb::eTypeOption values
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
29f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        static SBTypeSummary
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        CreateWithFunctionName (const char* data,
31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)                                uint32_t options = 0); // see lldb::eTypeOption values
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        static SBTypeSummary
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        CreateWithScriptCode (const char* data,
35e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch                              uint32_t options = 0); // see lldb::eTypeOption values
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
37e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch        SBTypeSummary (const lldb::SBTypeSummary &rhs);
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        ~SBTypeSummary ();
40e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        bool
42e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch        IsValid() const;
43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        bool
45c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)        IsFunctionCode();
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        IsFunctionName();
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        bool
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        IsSummaryString();
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const char*
54a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        GetData ();
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        void
57a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        SetSummaryString (const char* data);
58a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        void
60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        SetFunctionName (const char* data);
617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        void
63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        SetFunctionCode (const char* data);
64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
65e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        uint32_t
66a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        GetOptions ();
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
68e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        void
69e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        SetOptions (uint32_t);
70e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
71e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        bool
72a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        GetDescription (lldb::SBStream &description,
73e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)                        lldb::DescriptionLevel description_level);
74f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
75e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        lldb::SBTypeSummary &
76e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        operator = (const lldb::SBTypeSummary &rhs);
77e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
78e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        bool
79a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        IsEqualTo (lldb::SBTypeSummary &rhs);
80e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
81f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch        bool
82e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        operator == (lldb::SBTypeSummary &rhs);
83e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
84e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        bool
85e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        operator != (lldb::SBTypeSummary &rhs);
86a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)
87e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    protected:
88f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)        friend class SBDebugger;
89e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        friend class SBTypeCategory;
90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        friend class SBValue;
91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
92e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch        lldb::TypeSummaryImplSP
93a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)        GetSP ();
94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
95e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        void
96e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        SetSP (const lldb::TypeSummaryImplSP &typefilter_impl_sp);
97e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
98e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        lldb::TypeSummaryImplSP m_opaque_sp;
99a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)
100e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        SBTypeSummary (const lldb::TypeSummaryImplSP &);
101e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
102e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)        bool
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        CopyOnWrite_Impl();
104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
10509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        bool
106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        ChangeSummaryType (bool want_script);
107e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    };
109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
110e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} // namespace lldb
112e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
113f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#endif // LLDB_DISABLE_PYTHON
114e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#endif // LLDB_SBTypeSummary_h_
116e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)