summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/debug/debugvw.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/debug/debugvw.h')
-rw-r--r--src/emu/debug/debugvw.h36
1 files changed, 24 insertions, 12 deletions
diff --git a/src/emu/debug/debugvw.h b/src/emu/debug/debugvw.h
index 374af7f384e..64bd5dac10a 100644
--- a/src/emu/debug/debugvw.h
+++ b/src/emu/debug/debugvw.h
@@ -13,6 +13,12 @@
#include "express.h"
+#include <algorithm>
+#include <iterator>
+#include <memory>
+#include <string>
+#include <vector>
+
//**************************************************************************
// CONSTANTS
@@ -28,7 +34,9 @@ enum debug_view_type
DVT_MEMORY,
DVT_LOG,
DVT_BREAK_POINTS,
- DVT_WATCH_POINTS
+ DVT_WATCH_POINTS,
+ DVT_REGISTER_POINTS,
+ DVT_EXCEPTION_POINTS
};
@@ -107,23 +115,19 @@ class debug_view_source
{
DISABLE_COPYING(debug_view_source);
- friend class simple_list<debug_view_source>;
-
public:
// construction/destruction
- debug_view_source(const char *name, device_t *device = nullptr);
+ debug_view_source(std::string &&name, device_t *device = nullptr);
virtual ~debug_view_source();
// getters
const char *name() const { return m_name.c_str(); }
- debug_view_source *next() const { return m_next; }
device_t *device() const { return m_device; }
private:
// internal state
- debug_view_source * m_next; // link to next item
- std::string m_name; // name of the source item
- device_t * m_device; // associated device (if applicable)
+ std::string const m_name; // name of the source item
+ device_t *const m_device; // associated device (if applicable)
};
@@ -149,9 +153,16 @@ public:
debug_view_xy cursor_position() { flush_updates(); return m_cursor; }
bool cursor_supported() { flush_updates(); return m_supports_cursor; }
bool cursor_visible() { flush_updates(); return m_cursor_visible; }
+ size_t source_count() const { return m_source_list.size(); }
const debug_view_source *source() const { return m_source; }
- const debug_view_source *first_source() const { return m_source_list.first(); }
- const simple_list<debug_view_source> &source_list() const { return m_source_list; }
+ const debug_view_source *source(unsigned i) const { return (m_source_list.size() > i) ? m_source_list[i].get() : nullptr; }
+ const debug_view_source *first_source() const { return m_source_list.empty() ? nullptr : m_source_list[0].get(); }
+ auto source_index(const debug_view_source &source) const
+ {
+ const auto it(std::find_if(m_source_list.begin(), m_source_list.end(), [&source] (const auto &x) { return x.get() == &source; }));
+ return (m_source_list.end() != it) ? std::distance(m_source_list.begin(), it) : -1;
+ }
+ const std::vector<std::unique_ptr<const debug_view_source> > &source_list() const { return m_source_list; }
// setters
void set_visible_size(debug_view_xy size);
@@ -188,7 +199,7 @@ protected:
debug_view * m_next; // link to the next view
debug_view_type m_type; // type of view
const debug_view_source *m_source; // currently selected data source
- simple_list<debug_view_source> m_source_list; // list of available data sources
+ std::vector<std::unique_ptr<const debug_view_source> > m_source_list; // list of available data sources
// OSD data
debug_view_osd_update_func m_osdupdate; // callback for the update
@@ -258,12 +269,13 @@ public:
u64 last_value() const { return m_result; }
u64 value() { recompute(); return m_result; }
const char *string() const { return m_string.c_str(); }
- symbol_table *context() const { return m_parsed.symbols(); }
+ symbol_table &context() const { return m_parsed.symbols(); }
// setters
void mark_dirty() { m_dirty = true; }
template <typename... Params> void set_string(Params &&... args) { m_string.assign(std::forward<Params>(args)...); m_dirty = true; }
void set_context(symbol_table *context);
+ void set_default_base(int base) { m_parsed.set_default_base(base); }
private:
// internal helpers