diff options
Diffstat (limited to 'src/emu/debug/debugvw.cpp')
-rw-r--r-- | src/emu/debug/debugvw.cpp | 69 |
1 files changed, 42 insertions, 27 deletions
diff --git a/src/emu/debug/debugvw.cpp b/src/emu/debug/debugvw.cpp index f351896480e..7412ddd2f60 100644 --- a/src/emu/debug/debugvw.cpp +++ b/src/emu/debug/debugvw.cpp @@ -2,24 +2,29 @@ // copyright-holders:Aaron Giles /********************************************************************* - debugvw.c + debugvw.cpp Debugger view engine. ***************************************************************************/ #include "emu.h" -#include "express.h" #include "debugvw.h" -#include "dvtext.h" -#include "dvstate.h" + +#include "debugcpu.h" +#include "dvbpoints.h" #include "dvdisasm.h" +#include "dvepoints.h" #include "dvmemory.h" -#include "dvbpoints.h" +#include "dvrpoints.h" +#include "dvstate.h" +#include "dvtext.h" #include "dvwpoints.h" -#include "debugcpu.h" +#include "express.h" + #include "debugger.h" -#include <ctype.h> + +#include <cctype> @@ -31,9 +36,8 @@ // debug_view_source - constructor //------------------------------------------------- -debug_view_source::debug_view_source(const char *name, device_t *device) - : m_next(nullptr), - m_name(name), +debug_view_source::debug_view_source(std::string &&name, device_t *device) + : m_name(std::move(name)), m_device(device) { } @@ -232,10 +236,10 @@ void debug_view::set_source(const debug_view_source &source) const debug_view_source *debug_view::source_for_device(device_t *device) const { - for (debug_view_source &source : m_source_list) - if (device == source.device()) - return &source; - return m_source_list.first(); + for (auto &source : m_source_list) + if (device == source->device()) + return source.get(); + return first_source(); } @@ -251,6 +255,7 @@ void debug_view::adjust_visible_x_for_cursor() m_topleft.x = m_cursor.x; else if (m_cursor.x >= m_topleft.x + m_visible.x - 1) m_topleft.x = m_cursor.x - m_visible.x + 2; + m_topleft.x = (std::max)((std::min)(m_topleft.x, m_total.x - m_visible.x), 0); } @@ -266,6 +271,7 @@ void debug_view::adjust_visible_y_for_cursor() m_topleft.y = m_cursor.y; else if (m_cursor.y >= m_topleft.y + m_visible.y - 1) m_topleft.y = m_cursor.y - m_visible.y + 2; + m_topleft.y = (std::max)((std::min)(m_topleft.y, m_total.y - m_visible.y), 0); } @@ -327,7 +333,7 @@ debug_view_manager::~debug_view_manager() { debug_view *oldhead = m_viewlist; m_viewlist = oldhead->m_next; - global_free(oldhead); + delete oldhead; } } @@ -341,25 +347,31 @@ debug_view *debug_view_manager::alloc_view(debug_view_type type, debug_view_osd_ switch (type) { case DVT_CONSOLE: - return append(global_alloc(debug_view_console(machine(), osdupdate, osdprivate))); + return append(new debug_view_console(machine(), osdupdate, osdprivate)); case DVT_STATE: - return append(global_alloc(debug_view_state(machine(), osdupdate, osdprivate))); + return append(new debug_view_state(machine(), osdupdate, osdprivate)); case DVT_DISASSEMBLY: - return append(global_alloc(debug_view_disasm(machine(), osdupdate, osdprivate))); + return append(new debug_view_disasm(machine(), osdupdate, osdprivate)); case DVT_MEMORY: - return append(global_alloc(debug_view_memory(machine(), osdupdate, osdprivate))); + return append(new debug_view_memory(machine(), osdupdate, osdprivate)); case DVT_LOG: - return append(global_alloc(debug_view_log(machine(), osdupdate, osdprivate))); + return append(new debug_view_log(machine(), osdupdate, osdprivate)); case DVT_BREAK_POINTS: - return append(global_alloc(debug_view_breakpoints(machine(), osdupdate, osdprivate))); + return append(new debug_view_breakpoints(machine(), osdupdate, osdprivate)); case DVT_WATCH_POINTS: - return append(global_alloc(debug_view_watchpoints(machine(), osdupdate, osdprivate))); + return append(new debug_view_watchpoints(machine(), osdupdate, osdprivate)); + + case DVT_REGISTER_POINTS: + return append(new debug_view_registerpoints(machine(), osdupdate, osdprivate)); + + case DVT_EXCEPTION_POINTS: + return append(new debug_view_exceptionpoints(machine(), osdupdate, osdprivate)); default: fatalerror("Attempt to create invalid debug view type %d\n", type); @@ -379,7 +391,7 @@ void debug_view_manager::free_view(debug_view &view) if (*viewptr == &view) { *viewptr = view.m_next; - global_free(&view); + delete &view; break; } } @@ -450,7 +462,7 @@ debug_view_expression::debug_view_expression(running_machine &machine) : m_machine(machine) , m_dirty(true) , m_result(0) - , m_parsed(machine.debugger().cpu().get_global_symtable()) + , m_parsed(machine.debugger().cpu().global_symtable()) , m_string("0") { } @@ -472,7 +484,10 @@ debug_view_expression::~debug_view_expression() void debug_view_expression::set_context(symbol_table *context) { - m_parsed.set_symbols((context != nullptr) ? context : m_machine.debugger().cpu().get_global_symtable()); + if (context != nullptr) + m_parsed.set_symbols(*context); + else + m_parsed.set_symbols(m_machine.debugger().cpu().global_symtable()); m_dirty = true; } @@ -492,11 +507,11 @@ bool debug_view_expression::recompute() std::string oldstring(m_parsed.original_string()); try { - m_parsed.parse(m_string.c_str()); + m_parsed.parse(m_string); } catch (expression_error &) { - m_parsed.parse(oldstring.c_str()); + m_parsed.parse(oldstring); } } |