summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/debug/debugvw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/debug/debugvw.cpp')
-rw-r--r--src/emu/debug/debugvw.cpp69
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);
}
}