aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/API/SBTypeSummary.h
blob: 9b367ba5f982be66849330f5fc7baab7554581fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
//===-- 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"

#ifndef LLDB_DISABLE_PYTHON

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<lldb_private::TypeSummaryOptions> m_opaque_ap;
    };
    
    class SBTypeSummary
    {
    public:
        
        SBTypeSummary();
        
        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
        
        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
        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_DISABLE_PYTHON

#endif // LLDB_SBTypeSummary_h_