SBTypeNameSpecifier.h revision 07baf83fe7ae25ac87d38cd4fc19647b020adfad
1//===-- SBTypeNameSpecifier.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_SBTypeNameSpecifier_h_
11#define LLDB_SBTypeNameSpecifier_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17    class SBTypeNameSpecifier
18    {
19    public:
20
21        SBTypeNameSpecifier();
22
23        SBTypeNameSpecifier (const char* name,
24                             bool is_regex = false);
25
26        SBTypeNameSpecifier (SBType type);
27
28        SBTypeNameSpecifier (const lldb::SBTypeNameSpecifier &rhs);
29
30        ~SBTypeNameSpecifier ();
31
32        bool
33        IsValid() const;
34
35        const char*
36        GetName();
37
38        SBType
39        GetType ();
40
41        bool
42        IsRegex();
43
44        bool
45        GetDescription (lldb::SBStream &description,
46                        lldb::DescriptionLevel description_level);
47
48        lldb::SBTypeNameSpecifier &
49        operator = (const lldb::SBTypeNameSpecifier &rhs);
50
51        bool
52        IsEqualTo (lldb::SBTypeNameSpecifier &rhs);
53
54        bool
55        operator == (lldb::SBTypeNameSpecifier &rhs);
56
57        bool
58        operator != (lldb::SBTypeNameSpecifier &rhs);
59
60    protected:
61        friend class SBDebugger;
62        friend class SBTypeCategory;
63
64        lldb::TypeNameSpecifierImplSP
65        GetSP ();
66
67        void
68        SetSP (const lldb::TypeNameSpecifierImplSP &type_namespec_sp);
69
70        lldb::TypeNameSpecifierImplSP m_opaque_sp;
71
72        SBTypeNameSpecifier (const lldb::TypeNameSpecifierImplSP &);
73    };
74
75} // namespace lldb
76
77#endif // LLDB_SBTypeNameSpecifier_h_
78