SBTypeFormat.h revision 269024
1//===-- SBTypeFormat.h --------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBTypeFormat_h_
11#define LLDB_SBTypeFormat_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17class SBTypeFormat
18{
19public:
20
21    SBTypeFormat();
22
23    SBTypeFormat (lldb::Format format,
24                  uint32_t options = 0); // see lldb::eTypeOption values
25
26    SBTypeFormat (const char* type,
27                  uint32_t options = 0); // see lldb::eTypeOption values
28
29    SBTypeFormat (const lldb::SBTypeFormat &rhs);
30
31    ~SBTypeFormat ();
32
33    bool
34    IsValid() const;
35
36    lldb::Format
37    GetFormat ();
38
39    const char*
40    GetTypeName ();
41
42    uint32_t
43    GetOptions();
44
45    void
46    SetFormat (lldb::Format);
47
48    void
49    SetTypeName (const char*);
50
51    void
52    SetOptions (uint32_t);
53
54    bool
55    GetDescription (lldb::SBStream &description,
56                    lldb::DescriptionLevel description_level);
57
58    lldb::SBTypeFormat &
59    operator = (const lldb::SBTypeFormat &rhs);
60
61    bool
62    IsEqualTo (lldb::SBTypeFormat &rhs);
63
64    bool
65    operator == (lldb::SBTypeFormat &rhs);
66
67    bool
68    operator != (lldb::SBTypeFormat &rhs);
69
70protected:
71    friend class SBDebugger;
72    friend class SBTypeCategory;
73    friend class SBValue;
74
75    lldb::TypeFormatImplSP
76    GetSP ();
77
78    void
79    SetSP (const lldb::TypeFormatImplSP &typeformat_impl_sp);
80
81    lldb::TypeFormatImplSP m_opaque_sp;
82
83    SBTypeFormat (const lldb::TypeFormatImplSP &);
84
85    enum class Type
86    {
87        eTypeKeepSame,
88        eTypeFormat,
89        eTypeEnum
90    };
91
92    bool
93    CopyOnWrite_Impl(Type);
94
95};
96
97
98} // namespace lldb
99
100#endif // LLDB_SBTypeFormat_h_
101