1254721Semaste//===-- SBTypeFormat.h --------------------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef LLDB_SBTypeFormat_h_
11254721Semaste#define LLDB_SBTypeFormat_h_
12254721Semaste
13254721Semaste#include "lldb/API/SBDefines.h"
14254721Semaste
15254721Semastenamespace lldb {
16254721Semaste
17254721Semasteclass SBTypeFormat
18254721Semaste{
19254721Semastepublic:
20254721Semaste
21254721Semaste    SBTypeFormat();
22254721Semaste
23254721Semaste    SBTypeFormat (lldb::Format format,
24254721Semaste                  uint32_t options = 0); // see lldb::eTypeOption values
25269024Semaste
26269024Semaste    SBTypeFormat (const char* type,
27269024Semaste                  uint32_t options = 0); // see lldb::eTypeOption values
28254721Semaste
29254721Semaste    SBTypeFormat (const lldb::SBTypeFormat &rhs);
30254721Semaste
31254721Semaste    ~SBTypeFormat ();
32254721Semaste
33254721Semaste    bool
34254721Semaste    IsValid() const;
35254721Semaste
36254721Semaste    lldb::Format
37254721Semaste    GetFormat ();
38254721Semaste
39269024Semaste    const char*
40269024Semaste    GetTypeName ();
41269024Semaste
42254721Semaste    uint32_t
43254721Semaste    GetOptions();
44254721Semaste
45254721Semaste    void
46254721Semaste    SetFormat (lldb::Format);
47254721Semaste
48254721Semaste    void
49269024Semaste    SetTypeName (const char*);
50269024Semaste
51269024Semaste    void
52254721Semaste    SetOptions (uint32_t);
53254721Semaste
54254721Semaste    bool
55254721Semaste    GetDescription (lldb::SBStream &description,
56254721Semaste                    lldb::DescriptionLevel description_level);
57254721Semaste
58254721Semaste    lldb::SBTypeFormat &
59254721Semaste    operator = (const lldb::SBTypeFormat &rhs);
60254721Semaste
61254721Semaste    bool
62254721Semaste    IsEqualTo (lldb::SBTypeFormat &rhs);
63254721Semaste
64254721Semaste    bool
65254721Semaste    operator == (lldb::SBTypeFormat &rhs);
66254721Semaste
67254721Semaste    bool
68254721Semaste    operator != (lldb::SBTypeFormat &rhs);
69254721Semaste
70254721Semasteprotected:
71254721Semaste    friend class SBDebugger;
72254721Semaste    friend class SBTypeCategory;
73254721Semaste    friend class SBValue;
74254721Semaste
75254721Semaste    lldb::TypeFormatImplSP
76254721Semaste    GetSP ();
77254721Semaste
78254721Semaste    void
79254721Semaste    SetSP (const lldb::TypeFormatImplSP &typeformat_impl_sp);
80254721Semaste
81254721Semaste    lldb::TypeFormatImplSP m_opaque_sp;
82254721Semaste
83254721Semaste    SBTypeFormat (const lldb::TypeFormatImplSP &);
84254721Semaste
85269024Semaste    enum class Type
86269024Semaste    {
87269024Semaste        eTypeKeepSame,
88269024Semaste        eTypeFormat,
89269024Semaste        eTypeEnum
90269024Semaste    };
91269024Semaste
92254721Semaste    bool
93269024Semaste    CopyOnWrite_Impl(Type);
94254721Semaste
95254721Semaste};
96254721Semaste
97254721Semaste
98254721Semaste} // namespace lldb
99254721Semaste
100254721Semaste#endif // LLDB_SBTypeFormat_h_
101