1 //===-- LoadedModuleInfoList.h ----------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_LoadedModuleInfoList_h_
11 #define liblldb_LoadedModuleInfoList_h_
18 // Other libraries and framework includes
19 #include "lldb/lldb-private-forward.h"
21 namespace lldb_private {
22 class LoadedModuleInfoList
26 class LoadedModuleInfo
41 for (uint32_t i = 0; i < e_num; ++i)
45 void set_name (const std::string & name)
48 m_has[e_has_name] = true;
50 bool get_name (std::string & out) const
53 return m_has[e_has_name];
56 void set_base (const lldb::addr_t base)
59 m_has[e_has_base] = true;
61 bool get_base (lldb::addr_t & out) const
64 return m_has[e_has_base];
67 void set_base_is_offset (bool is_offset)
69 m_base_is_offset = is_offset;
71 bool get_base_is_offset(bool & out) const
73 out = m_base_is_offset;
74 return m_has[e_has_base];
77 void set_link_map (const lldb::addr_t addr)
80 m_has[e_has_link_map] = true;
82 bool get_link_map (lldb::addr_t & out) const
85 return m_has[e_has_link_map];
88 void set_dynamic (const lldb::addr_t addr)
91 m_has[e_has_dynamic] = true;
93 bool get_dynamic (lldb::addr_t & out) const
96 return m_has[e_has_dynamic];
99 bool has_info (e_data_point datum) const
101 assert (datum < e_num);
106 operator == (LoadedModuleInfo const &rhs) const
108 if (e_num != rhs.e_num)
111 for (size_t i = 0; i < e_num; ++i)
113 if (m_has[i] != rhs.m_has[i])
117 return (m_base == rhs.m_base) &&
118 (m_link_map == rhs.m_link_map) &&
119 (m_dynamic == rhs.m_dynamic) &&
120 (m_name == rhs.m_name);
126 lldb::addr_t m_link_map;
128 bool m_base_is_offset;
129 lldb::addr_t m_dynamic;
132 LoadedModuleInfoList ()
134 , m_link_map (LLDB_INVALID_ADDRESS)
137 void add (const LoadedModuleInfo & mod)
139 m_list.push_back (mod);
147 std::vector<LoadedModuleInfo> m_list;
148 lldb::addr_t m_link_map;
150 } // namespace lldb_private
152 #endif // liblldb_LoadedModuleInfoList_h_