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 
15 namespace 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