1061da546Spatrick //===-- SBTypeFilter.h --------------------------------------------*- C++
2061da546Spatrick //-*-===//
3061da546Spatrick //
4061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
6061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7061da546Spatrick //
8061da546Spatrick //===----------------------------------------------------------------------===//
9061da546Spatrick 
10*dda28197Spatrick #ifndef LLDB_API_SBTYPEFILTER_H
11*dda28197Spatrick #define LLDB_API_SBTYPEFILTER_H
12061da546Spatrick 
13061da546Spatrick #include "lldb/API/SBDefines.h"
14061da546Spatrick 
15061da546Spatrick namespace lldb {
16061da546Spatrick 
17061da546Spatrick class LLDB_API SBTypeFilter {
18061da546Spatrick public:
19061da546Spatrick   SBTypeFilter();
20061da546Spatrick 
21061da546Spatrick   SBTypeFilter(uint32_t options); // see lldb::eTypeOption values
22061da546Spatrick 
23061da546Spatrick   SBTypeFilter(const lldb::SBTypeFilter &rhs);
24061da546Spatrick 
25061da546Spatrick   ~SBTypeFilter();
26061da546Spatrick 
27061da546Spatrick   explicit operator bool() const;
28061da546Spatrick 
29061da546Spatrick   bool IsValid() const;
30061da546Spatrick 
31061da546Spatrick   uint32_t GetNumberOfExpressionPaths();
32061da546Spatrick 
33061da546Spatrick   const char *GetExpressionPathAtIndex(uint32_t i);
34061da546Spatrick 
35061da546Spatrick   bool ReplaceExpressionPathAtIndex(uint32_t i, const char *item);
36061da546Spatrick 
37061da546Spatrick   void AppendExpressionPath(const char *item);
38061da546Spatrick 
39061da546Spatrick   void Clear();
40061da546Spatrick 
41061da546Spatrick   uint32_t GetOptions();
42061da546Spatrick 
43061da546Spatrick   void SetOptions(uint32_t);
44061da546Spatrick 
45061da546Spatrick   bool GetDescription(lldb::SBStream &description,
46061da546Spatrick                       lldb::DescriptionLevel description_level);
47061da546Spatrick 
48061da546Spatrick   lldb::SBTypeFilter &operator=(const lldb::SBTypeFilter &rhs);
49061da546Spatrick 
50061da546Spatrick   bool IsEqualTo(lldb::SBTypeFilter &rhs);
51061da546Spatrick 
52061da546Spatrick   bool operator==(lldb::SBTypeFilter &rhs);
53061da546Spatrick 
54061da546Spatrick   bool operator!=(lldb::SBTypeFilter &rhs);
55061da546Spatrick 
56061da546Spatrick protected:
57061da546Spatrick   friend class SBDebugger;
58061da546Spatrick   friend class SBTypeCategory;
59061da546Spatrick   friend class SBValue;
60061da546Spatrick 
61061da546Spatrick   lldb::TypeFilterImplSP GetSP();
62061da546Spatrick 
63061da546Spatrick   void SetSP(const lldb::TypeFilterImplSP &typefilter_impl_sp);
64061da546Spatrick 
65061da546Spatrick   lldb::TypeFilterImplSP m_opaque_sp;
66061da546Spatrick 
67061da546Spatrick   SBTypeFilter(const lldb::TypeFilterImplSP &);
68061da546Spatrick 
69061da546Spatrick   bool CopyOnWrite_Impl();
70061da546Spatrick };
71061da546Spatrick 
72061da546Spatrick } // namespace lldb
73061da546Spatrick 
74*dda28197Spatrick #endif // LLDB_API_SBTYPEFILTER_H
75