//===-- SBMemoryRegionInfo.h ------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLDB_SBMemoryRegionInfo_h_ #define LLDB_SBMemoryRegionInfo_h_ #include "lldb/API/SBData.h" #include "lldb/API/SBDefines.h" namespace lldb { class LLDB_API SBMemoryRegionInfo { public: SBMemoryRegionInfo(); SBMemoryRegionInfo(const lldb::SBMemoryRegionInfo &rhs); ~SBMemoryRegionInfo(); const lldb::SBMemoryRegionInfo & operator=(const lldb::SBMemoryRegionInfo &rhs); void Clear(); //------------------------------------------------------------------ /// Get the base address of this memory range. /// /// @return /// The base address of this memory range. //------------------------------------------------------------------ lldb::addr_t GetRegionBase(); //------------------------------------------------------------------ /// Get the end address of this memory range. /// /// @return /// The base address of this memory range. //------------------------------------------------------------------ lldb::addr_t GetRegionEnd(); //------------------------------------------------------------------ /// Check if this memory address is marked readable to the process. /// /// @return /// true if this memory address is marked readable //------------------------------------------------------------------ bool IsReadable(); //------------------------------------------------------------------ /// Check if this memory address is marked writable to the process. /// /// @return /// true if this memory address is marked writable //------------------------------------------------------------------ bool IsWritable(); //------------------------------------------------------------------ /// Check if this memory address is marked executable to the process. /// /// @return /// true if this memory address is marked executable //------------------------------------------------------------------ bool IsExecutable(); //------------------------------------------------------------------ /// Check if this memory address is mapped into the process address /// space. /// /// @return /// true if this memory address is in the process address space. //------------------------------------------------------------------ bool IsMapped(); //------------------------------------------------------------------ /// Returns the name of the memory region mapped at the given /// address. /// /// @return /// In case of memory mapped files it is the absolute path of /// the file otherwise it is a name associated with the memory /// region. If no name can be determined the returns nullptr. //------------------------------------------------------------------ const char *GetName(); bool operator==(const lldb::SBMemoryRegionInfo &rhs) const; bool operator!=(const lldb::SBMemoryRegionInfo &rhs) const; bool GetDescription(lldb::SBStream &description); private: friend class SBProcess; friend class SBMemoryRegionInfoList; lldb_private::MemoryRegionInfo &ref(); const lldb_private::MemoryRegionInfo &ref() const; SBMemoryRegionInfo(const lldb_private::MemoryRegionInfo *lldb_object_ptr); lldb::MemoryRegionInfoUP m_opaque_ap; }; } // namespace lldb #endif // LLDB_SBMemoryRegionInfo_h_