]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBMemoryRegionInfo.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / API / SBMemoryRegionInfo.h
1 //===-- SBMemoryRegionInfo.h ------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #ifndef LLDB_SBMemoryRegionInfo_h_
10 #define LLDB_SBMemoryRegionInfo_h_
11
12 #include "lldb/API/SBData.h"
13 #include "lldb/API/SBDefines.h"
14
15 namespace lldb {
16
17 class LLDB_API SBMemoryRegionInfo {
18 public:
19   SBMemoryRegionInfo();
20
21   SBMemoryRegionInfo(const lldb::SBMemoryRegionInfo &rhs);
22
23   ~SBMemoryRegionInfo();
24
25   const lldb::SBMemoryRegionInfo &
26   operator=(const lldb::SBMemoryRegionInfo &rhs);
27
28   void Clear();
29
30   /// Get the base address of this memory range.
31   ///
32   /// \return
33   ///     The base address of this memory range.
34   lldb::addr_t GetRegionBase();
35
36   /// Get the end address of this memory range.
37   ///
38   /// \return
39   ///     The base address of this memory range.
40   lldb::addr_t GetRegionEnd();
41
42   /// Check if this memory address is marked readable to the process.
43   ///
44   /// \return
45   ///     true if this memory address is marked readable
46   bool IsReadable();
47
48   /// Check if this memory address is marked writable to the process.
49   ///
50   /// \return
51   ///     true if this memory address is marked writable
52   bool IsWritable();
53
54   /// Check if this memory address is marked executable to the process.
55   ///
56   /// \return
57   ///     true if this memory address is marked executable
58   bool IsExecutable();
59
60   /// Check if this memory address is mapped into the process address
61   /// space.
62   ///
63   /// \return
64   ///     true if this memory address is in the process address space.
65   bool IsMapped();
66
67   /// Returns the name of the memory region mapped at the given
68   /// address.
69   ///
70   /// \return
71   ///     In case of memory mapped files it is the absolute path of
72   ///     the file otherwise it is a name associated with the memory
73   ///     region. If no name can be determined the returns nullptr.
74   const char *GetName();
75
76   bool operator==(const lldb::SBMemoryRegionInfo &rhs) const;
77
78   bool operator!=(const lldb::SBMemoryRegionInfo &rhs) const;
79
80   bool GetDescription(lldb::SBStream &description);
81
82 private:
83   friend class SBProcess;
84   friend class SBMemoryRegionInfoList;
85
86   lldb_private::MemoryRegionInfo &ref();
87
88   const lldb_private::MemoryRegionInfo &ref() const;
89
90   // Unused.
91   SBMemoryRegionInfo(const lldb_private::MemoryRegionInfo *lldb_object_ptr);
92
93   lldb::MemoryRegionInfoUP m_opaque_up;
94 };
95
96 } // namespace lldb
97
98 #endif // LLDB_SBMemoryRegionInfo_h_