SBTypeSummary.h revision c48ca82920bd333c7ccb6ec0e579207add130296
133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//===-- SBTypeSummary.h -------------------------------------------*- C++ -*-===//
233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//
333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//                     The LLVM Compiler Infrastructure
433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//
533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// This file is distributed under the University of Illinois Open Source
633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org// License. See LICENSE.TXT for details.
733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//
833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org//===----------------------------------------------------------------------===//
933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
1033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org#ifndef LLDB_SBTypeSummary_h_
1133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org#define LLDB_SBTypeSummary_h_
1233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
1333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org#include "lldb/API/SBDefines.h"
1433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
1533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org#ifndef LLDB_DISABLE_PYTHON
1633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
1733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.orgnamespace lldb {
1833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
1933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org    class SBTypeSummary
2033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org    {
2133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org    public:
2233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
2333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SBTypeSummary();
2433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
2533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        static SBTypeSummary
2633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        CreateWithSummaryString (const char* data,
2733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org                                 uint32_t options = 0); // see lldb::eTypeOption values
2833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
2933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        static SBTypeSummary
3033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        CreateWithFunctionName (const char* data,
3133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org                                uint32_t options = 0); // see lldb::eTypeOption values
3233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
3333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        static SBTypeSummary
3433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        CreateWithScriptCode (const char* data,
3533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org                              uint32_t options = 0); // see lldb::eTypeOption values
3633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
3733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SBTypeSummary (const lldb::SBTypeSummary &rhs);
3833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
3933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        ~SBTypeSummary ();
4033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
41d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org        bool
4233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        IsValid() const;
4333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
4433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
4533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        IsFunctionCode();
4633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
4733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
4833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        IsFunctionName();
4933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
5033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
5133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        IsSummaryString();
5233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
5333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        const char*
5433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        GetData ();
5533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
5633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        void
5733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SetSummaryString (const char* data);
5833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
5933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        void
6033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SetFunctionName (const char* data);
6133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
6233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        void
6333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SetFunctionCode (const char* data);
64d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org
6533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        uint32_t
6633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        GetOptions ();
6733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
6833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        void
6933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        SetOptions (uint32_t);
7033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
7133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
7233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        GetDescription (lldb::SBStream &description,
7333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org                        lldb::DescriptionLevel description_level);
7433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
7533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        lldb::SBTypeSummary &
7633e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        operator = (const lldb::SBTypeSummary &rhs);
7733e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
7833e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
7933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        IsEqualTo (lldb::SBTypeSummary &rhs);
8033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
8133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
8233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        operator == (lldb::SBTypeSummary &rhs);
8333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org
8433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        bool
8533e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org        operator != (lldb::SBTypeSummary &rhs);
86
87    protected:
88        friend class SBDebugger;
89        friend class SBTypeCategory;
90        friend class SBValue;
91
92        lldb::TypeSummaryImplSP
93        GetSP ();
94
95        void
96        SetSP (const lldb::TypeSummaryImplSP &typefilter_impl_sp);
97
98        lldb::TypeSummaryImplSP m_opaque_sp;
99
100        SBTypeSummary (const lldb::TypeSummaryImplSP &);
101
102        bool
103        CopyOnWrite_Impl();
104
105        bool
106        ChangeSummaryType (bool want_script);
107
108    };
109
110
111} // namespace lldb
112
113#endif // LLDB_DISABLE_PYTHON
114
115#endif // LLDB_SBTypeSummary_h_
116