1 //===-- SBTypeNameSpecifier.h --------------------------------------*- C++
2 //-*-===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
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 LLDB_API SBTypeNameSpecifier {
18 public:
19   SBTypeNameSpecifier();
20 
21   SBTypeNameSpecifier(const char *name, bool is_regex = false);
22 
23   SBTypeNameSpecifier(SBType type);
24 
25   SBTypeNameSpecifier(const lldb::SBTypeNameSpecifier &rhs);
26 
27   ~SBTypeNameSpecifier();
28 
29   explicit operator bool() const;
30 
31   bool IsValid() const;
32 
33   const char *GetName();
34 
35   SBType GetType();
36 
37   bool IsRegex();
38 
39   bool GetDescription(lldb::SBStream &description,
40                       lldb::DescriptionLevel description_level);
41 
42   lldb::SBTypeNameSpecifier &operator=(const lldb::SBTypeNameSpecifier &rhs);
43 
44   bool IsEqualTo(lldb::SBTypeNameSpecifier &rhs);
45 
46   bool operator==(lldb::SBTypeNameSpecifier &rhs);
47 
48   bool operator!=(lldb::SBTypeNameSpecifier &rhs);
49 
50 protected:
51   friend class SBDebugger;
52   friend class SBTypeCategory;
53 
54   lldb::TypeNameSpecifierImplSP GetSP();
55 
56   void SetSP(const lldb::TypeNameSpecifierImplSP &type_namespec_sp);
57 
58   lldb::TypeNameSpecifierImplSP m_opaque_sp;
59 
60   SBTypeNameSpecifier(const lldb::TypeNameSpecifierImplSP &);
61 };
62 
63 } // namespace lldb
64 
65 #endif // LLDB_SBTypeNameSpecifier_h_
66