1 //===-- SBTypeNameSpecifier.h --------------------------------------*- C++
2 //-*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 
11 #ifndef LLDB_SBTypeNameSpecifier_h_
12 #define LLDB_SBTypeNameSpecifier_h_
13 
14 #include "lldb/API/SBDefines.h"
15 
16 namespace lldb {
17 
18 class LLDB_API SBTypeNameSpecifier {
19 public:
20   SBTypeNameSpecifier();
21 
22   SBTypeNameSpecifier(const char *name, bool is_regex = false);
23 
24   SBTypeNameSpecifier(SBType type);
25 
26   SBTypeNameSpecifier(const lldb::SBTypeNameSpecifier &rhs);
27 
28   ~SBTypeNameSpecifier();
29 
30   bool IsValid() const;
31 
32   const char *GetName();
33 
34   SBType GetType();
35 
36   bool IsRegex();
37 
38   bool GetDescription(lldb::SBStream &description,
39                       lldb::DescriptionLevel description_level);
40 
41   lldb::SBTypeNameSpecifier &operator=(const lldb::SBTypeNameSpecifier &rhs);
42 
43   bool IsEqualTo(lldb::SBTypeNameSpecifier &rhs);
44 
45   bool operator==(lldb::SBTypeNameSpecifier &rhs);
46 
47   bool operator!=(lldb::SBTypeNameSpecifier &rhs);
48 
49 protected:
50   friend class SBDebugger;
51   friend class SBTypeCategory;
52 
53   lldb::TypeNameSpecifierImplSP GetSP();
54 
55   void SetSP(const lldb::TypeNameSpecifierImplSP &type_namespec_sp);
56 
57   lldb::TypeNameSpecifierImplSP m_opaque_sp;
58 
59   SBTypeNameSpecifier(const lldb::TypeNameSpecifierImplSP &);
60 };
61 
62 } // namespace lldb
63 
64 #endif // LLDB_SBTypeNameSpecifier_h_
65