summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger
diff options
context:
space:
mode:
author dave-br <dave-br@users.noreply.github.com>2025-05-10 06:46:55 -0700
committer GitHub <noreply@github.com>2025-05-10 15:46:55 +0200
commitc25a4b8f9ebc58b9610e9f910f75f281bf0328a4 (patch)
tree1689bbc166712c8e134695d557f61360610a6779 /src/osd/modules/debugger
parentd772a53e3cd241845a45dcdb1e1fc221b351580a (diff)
debugger cleanup: use enums for m_views indices (#13687)
For the wininfos that participate as individual panes in the main console window, their viewinfos are referenced via the m_views[] array with hard-coded indices of 0, 1, and 2. - Define & use enums for those indices (VIEW_IDX_DISASM, VIEW_IDX_STATE, VIEW_IDX_CONSOLE) - Change MAX_VIEWS from a hard-coded constant of 4 to the last enum in that list, which changes it to 3. (I don't think it should have been 4 in the first place.) - wininfos that NEVER appear as panes in the main console window (e.g., logwin_info, pointswin_info, etc.) continue to use m_views[0]
Diffstat (limited to 'src/osd/modules/debugger')
-rw-r--r--src/osd/modules/debugger/win/consolewininfo.cpp40
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.cpp5
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.h14
-rw-r--r--src/osd/modules/debugger/win/disasmbasewininfo.cpp22
-rw-r--r--src/osd/modules/debugger/win/disasmwininfo.cpp25
-rw-r--r--src/osd/modules/debugger/win/editwininfo.cpp11
-rw-r--r--src/osd/modules/debugger/win/editwininfo.h3
-rw-r--r--src/osd/modules/debugger/win/memorywininfo.cpp2
8 files changed, 75 insertions, 47 deletions
diff --git a/src/osd/modules/debugger/win/consolewininfo.cpp b/src/osd/modules/debugger/win/consolewininfo.cpp
index a5dfd04cc55..dc440c5abf8 100644
--- a/src/osd/modules/debugger/win/consolewininfo.cpp
+++ b/src/osd/modules/debugger/win/consolewininfo.cpp
@@ -214,15 +214,15 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) :
m_current_cpu(nullptr),
m_devices_menu(nullptr)
{
- if (!window() || !m_views[0])
+ if (!window() || !m_views[VIEW_IDX_DISASM])
goto cleanup;
// create the views
- m_views[1].reset(new debugview_info(debugger, *this, window(), DVT_STATE));
- if (!m_views[1]->is_valid())
+ m_views[VIEW_IDX_STATE].reset(new debugview_info(debugger, *this, window(), DVT_STATE));
+ if (!m_views[VIEW_IDX_STATE]->is_valid())
goto cleanup;
- m_views[2].reset(new debugview_info(debugger, *this, window(), DVT_CONSOLE));
- if (!m_views[2]->is_valid())
+ m_views[VIEW_IDX_CONSOLE].reset(new debugview_info(debugger, *this, window(), DVT_CONSOLE));
+ if (!m_views[VIEW_IDX_CONSOLE]->is_valid())
goto cleanup;
{
@@ -257,12 +257,20 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) :
// adjust the min/max sizes for the window style
bounds.top = bounds.left = 0;
- bounds.right = bounds.bottom = EDGE_WIDTH + m_views[1]->maxwidth() + (2 * EDGE_WIDTH) + 100 + EDGE_WIDTH;
+ bounds.right = bounds.bottom =
+ EDGE_WIDTH + m_views[VIEW_IDX_STATE]->maxwidth() +
+ (2 * EDGE_WIDTH) + 100 + EDGE_WIDTH;
AdjustWindowRectEx(&bounds, DEBUG_WINDOW_STYLE, FALSE, DEBUG_WINDOW_STYLE_EX);
set_minwidth(bounds.right - bounds.left);
bounds.top = bounds.left = 0;
- bounds.right = bounds.bottom = EDGE_WIDTH + m_views[1]->maxwidth() + (2 * EDGE_WIDTH) + std::max(m_views[0]->maxwidth(), m_views[2]->maxwidth()) + EDGE_WIDTH;
+ bounds.right = bounds.bottom =
+ EDGE_WIDTH + m_views[VIEW_IDX_STATE]->maxwidth() +
+ (2 * EDGE_WIDTH) +
+ std::max(
+ m_views[VIEW_IDX_DISASM]->maxwidth(),
+ m_views[VIEW_IDX_CONSOLE]->maxwidth()) +
+ EDGE_WIDTH;
AdjustWindowRectEx(&bounds, DEBUG_WINDOW_STYLE, FALSE, DEBUG_WINDOW_STYLE_EX);
set_maxwidth(bounds.right - bounds.left);
@@ -283,9 +291,9 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) :
return;
cleanup:
- m_views[2].reset();
- m_views[1].reset();
- m_views[0].reset();
+ m_views[VIEW_IDX_CONSOLE].reset();
+ m_views[VIEW_IDX_STATE].reset();
+ m_views[VIEW_IDX_DISASM].reset();
}
@@ -301,8 +309,8 @@ void consolewin_info::set_cpu(device_t &device)
m_current_cpu = &device;
// first set all the views to the new cpu number
- m_views[0]->set_source_for_device(device);
- m_views[1]->set_source_for_device(device);
+ m_views[VIEW_IDX_DISASM]->set_source_for_device(device);
+ m_views[VIEW_IDX_STATE]->set_source_for_device(device);
// then update the caption
std::string title = string_format("Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag());
@@ -327,7 +335,7 @@ void consolewin_info::recompute_children()
regrect.top = parent.top + EDGE_WIDTH;
regrect.bottom = parent.bottom - EDGE_WIDTH;
regrect.left = parent.left + EDGE_WIDTH;
- regrect.right = regrect.left + m_views[1]->maxwidth();
+ regrect.right = regrect.left + m_views[VIEW_IDX_STATE]->maxwidth();
// edit box goes at the bottom of the remaining area
RECT editrect;
@@ -350,9 +358,9 @@ void consolewin_info::recompute_children()
conrect.right = parent.right - EDGE_WIDTH;
// set the bounds of things
- m_views[0]->set_bounds(disrect);
- m_views[1]->set_bounds(regrect);
- m_views[2]->set_bounds(conrect);
+ m_views[VIEW_IDX_DISASM]->set_bounds(disrect);
+ m_views[VIEW_IDX_STATE]->set_bounds(regrect);
+ m_views[VIEW_IDX_CONSOLE]->set_bounds(conrect);
set_editwnd_bounds(editrect);
}
diff --git a/src/osd/modules/debugger/win/debugwininfo.cpp b/src/osd/modules/debugger/win/debugwininfo.cpp
index f27f7933f08..f697026c320 100644
--- a/src/osd/modules/debugger/win/debugwininfo.cpp
+++ b/src/osd/modules/debugger/win/debugwininfo.cpp
@@ -353,7 +353,10 @@ void debugwin_info::restore_configuration_from_node(util::xml::data_node const &
recompute_children();
}
-
+// Set the bounds for the corresponding debug_viewinfo. This implementation
+// is only intended for use with win_infos that appear solely as an
+// independent free-floating window. win_infos that can appear as a frame
+// within the main consolewin_info should override this.
void debugwin_info::recompute_children()
{
if (m_views[0] != nullptr)
diff --git a/src/osd/modules/debugger/win/debugwininfo.h b/src/osd/modules/debugger/win/debugwininfo.h
index cf3587253f6..93c0b553d3b 100644
--- a/src/osd/modules/debugger/win/debugwininfo.h
+++ b/src/osd/modules/debugger/win/debugwininfo.h
@@ -58,7 +58,6 @@ protected:
static DWORD const DEBUG_WINDOW_STYLE = (WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN) & (~WS_MINIMIZEBOX & ~WS_MAXIMIZEBOX);
static DWORD const DEBUG_WINDOW_STYLE_EX = 0;
- static int const MAX_VIEWS = 4;
static int const EDGE_WIDTH = 3;
enum
@@ -122,6 +121,19 @@ protected:
ID_DEVICE_OPTIONS // always keep this at the end
};
+ // Indices for use with m_views. Each *win_info class that can appear
+ // as a frame within the main consolewin_info should use these
+ // indices to find its *view_info class, even when it's currently
+ // shown as an independent free-floating window. All other *win_info
+ // classes (e.g., logwin_info, pointswin_info, etc.) just use m_views[0]
+ enum
+ {
+ VIEW_IDX_DISASM,
+ VIEW_IDX_STATE,
+ VIEW_IDX_CONSOLE,
+ MAX_VIEWS
+ };
+
debugwin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler);
bool is_main_console() const { return m_is_main_console; }
diff --git a/src/osd/modules/debugger/win/disasmbasewininfo.cpp b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
index 48771c4f133..15b781db2d3 100644
--- a/src/osd/modules/debugger/win/disasmbasewininfo.cpp
+++ b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
@@ -23,15 +23,15 @@
namespace osd::debugger::win {
disasmbasewin_info::disasmbasewin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler) :
- editwin_info(debugger, is_main_console, title, handler)
+ editwin_info(debugger, is_main_console, VIEW_IDX_DISASM, title, handler)
{
if (!window())
return;
- m_views[0].reset(new disasmview_info(debugger, *this, window()));
- if (!m_views[0] || !m_views[0]->is_valid())
+ m_views[VIEW_IDX_DISASM].reset(new disasmview_info(debugger, *this, window()));
+ if (!m_views[VIEW_IDX_DISASM] || !m_views[VIEW_IDX_DISASM]->is_valid())
{
- m_views[0].reset();
+ m_views[VIEW_IDX_DISASM].reset();
return;
}
@@ -47,8 +47,8 @@ disasmbasewin_info::disasmbasewin_info(debugger_windows_interface &debugger, boo
AppendMenu(GetMenu(window()), MF_ENABLED | MF_POPUP, (UINT_PTR)optionsmenu, TEXT("Options"));
// set up the view to track the initial expression
- downcast<disasmview_info *>(m_views[0].get())->set_expression("curpc");
- m_views[0]->set_source_for_visible_cpu();
+ downcast<disasmview_info *>(m_views[VIEW_IDX_DISASM].get())->set_expression("curpc");
+ m_views[VIEW_IDX_DISASM]->set_source_for_visible_cpu();
}
@@ -92,7 +92,7 @@ bool disasmbasewin_info::handle_key(WPARAM wparam, LPARAM lparam)
return true;
case VK_RETURN:
- if (m_views[0]->cursor_visible() && m_views[0]->source_is_visible_cpu())
+ if (m_views[VIEW_IDX_DISASM]->cursor_visible() && m_views[VIEW_IDX_DISASM]->source_is_visible_cpu())
{
SendMessage(window(), WM_COMMAND, ID_STEP, 0);
return true;
@@ -108,7 +108,7 @@ void disasmbasewin_info::update_menu()
{
editwin_info::update_menu();
- auto *const dasmview = downcast<disasmview_info *>(m_views[0].get());
+ auto *const dasmview = downcast<disasmview_info *>(m_views[VIEW_IDX_DISASM].get());
HMENU const menu = GetMenu(window());
bool const disasm_cursor_visible = dasmview->cursor_visible();
@@ -154,7 +154,7 @@ void disasmbasewin_info::update_menu()
bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
{
- auto *const dasmview = downcast<disasmview_info *>(m_views[0].get());
+ auto *const dasmview = downcast<disasmview_info *>(m_views[VIEW_IDX_DISASM].get());
switch (HIWORD(wparam))
{
@@ -270,14 +270,14 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
void disasmbasewin_info::restore_configuration_from_node(util::xml::data_node const &node)
{
editwin_info::restore_configuration_from_node(node);
- m_views[0]->restore_configuration_from_node(node);
+ m_views[VIEW_IDX_DISASM]->restore_configuration_from_node(node);
}
void disasmbasewin_info::save_configuration_to_node(util::xml::data_node &node)
{
editwin_info::save_configuration_to_node(node);
- m_views[0]->save_configuration_to_node(node);
+ m_views[VIEW_IDX_DISASM]->save_configuration_to_node(node);
}
} // namespace osd::debugger::win
diff --git a/src/osd/modules/debugger/win/disasmwininfo.cpp b/src/osd/modules/debugger/win/disasmwininfo.cpp
index 6b38609ace8..07995fa78f6 100644
--- a/src/osd/modules/debugger/win/disasmwininfo.cpp
+++ b/src/osd/modules/debugger/win/disasmwininfo.cpp
@@ -24,7 +24,7 @@ disasmwin_info::disasmwin_info(debugger_windows_interface &debugger) :
disasmbasewin_info(debugger, false, "Disassembly", nullptr),
m_combownd(nullptr)
{
- if ((window() == nullptr) || (m_views[0] == nullptr))
+ if ((window() == nullptr) || (m_views[VIEW_IDX_DISASM] == nullptr))
return;
// set up the view to track the initial expression
@@ -33,7 +33,7 @@ disasmwin_info::disasmwin_info(debugger_windows_interface &debugger) :
editwnd_select_all();
// create a combo box
- m_combownd = m_views[0]->create_source_combobox(window(), (LONG_PTR)this);
+ m_combownd = m_views[VIEW_IDX_DISASM]->create_source_combobox(window(), (LONG_PTR)this);
// set the caption
update_caption();
@@ -60,7 +60,7 @@ void disasmwin_info::recompute_children()
// compute a client rect
RECT bounds;
bounds.top = bounds.left = 0;
- bounds.right = m_views[0]->prefwidth() + (2 * EDGE_WIDTH);
+ bounds.right = m_views[VIEW_IDX_DISASM]->prefwidth() + (2 * EDGE_WIDTH);
bounds.bottom = 200;
AdjustWindowRectEx(&bounds, DEBUG_WINDOW_STYLE, FALSE, DEBUG_WINDOW_STYLE_EX);
@@ -93,7 +93,7 @@ void disasmwin_info::recompute_children()
dasmrect.right = parent.right - EDGE_WIDTH;
// set the bounds of things
- m_views[0]->set_bounds(dasmrect);
+ m_views[VIEW_IDX_DISASM]->set_bounds(dasmrect);
set_editwnd_bounds(editrect);
smart_set_window_bounds(m_combownd, window(), comborect);
}
@@ -109,7 +109,7 @@ bool disasmwin_info::handle_command(WPARAM wparam, LPARAM lparam)
int const sel = SendMessage((HWND)lparam, CB_GETCURSEL, 0, 0);
if (sel != CB_ERR)
{
- m_views[0]->set_source_index(sel);
+ m_views[VIEW_IDX_DISASM]->set_source_index(sel);
update_caption();
// reset the focus
@@ -134,7 +134,7 @@ void disasmwin_info::draw_contents(HDC dc)
void disasmwin_info::process_string(const std::string &string)
{
// set the string to the disasm view
- downcast<disasmview_info *>(m_views[0].get())->set_expression(string);
+ downcast<disasmview_info *>(m_views[VIEW_IDX_DISASM].get())->set_expression(string);
// select everything in the edit text box
editwnd_select_all();
@@ -146,14 +146,15 @@ void disasmwin_info::process_string(const std::string &string)
void disasmwin_info::update_caption()
{
- win_set_window_text_utf8(window(), std::string("Disassembly: ").append(m_views[0]->source_name()).c_str());
+ win_set_window_text_utf8(window(), std::string("Disassembly: ").append(m_views[VIEW_IDX_DISASM]->source_name()).c_str());
}
void disasmwin_info::restore_configuration_from_node(util::xml::data_node const &node)
{
- m_views[0]->set_source_index(node.get_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[0]->source_index()));
- int const cursource = m_views[0]->source_index();
+ m_views[VIEW_IDX_DISASM]->set_source_index(
+ node.get_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[VIEW_IDX_DISASM]->source_index()));
+ int const cursource = m_views[VIEW_IDX_DISASM]->source_index();
if (0 <= cursource)
SendMessage(m_combownd, CB_SETCURSEL, cursource, 0);
update_caption();
@@ -174,8 +175,10 @@ void disasmwin_info::save_configuration_to_node(util::xml::data_node &node)
disasmbasewin_info::save_configuration_to_node(node);
node.set_attribute_int(ATTR_WINDOW_TYPE, WINDOW_TYPE_DISASSEMBLY_VIEWER);
- node.set_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[0]->source_index());
- node.add_child(NODE_WINDOW_EXPRESSION, downcast<disasmview_info *>(m_views[0].get())->expression());
+ node.set_attribute_int(ATTR_WINDOW_DISASSEMBLY_CPU, m_views[VIEW_IDX_DISASM]->source_index());
+ node.add_child(
+ NODE_WINDOW_EXPRESSION,
+ downcast<disasmview_info *>(m_views[VIEW_IDX_DISASM].get())->expression());
}
} // namespace osd::debugger::win
diff --git a/src/osd/modules/debugger/win/editwininfo.cpp b/src/osd/modules/debugger/win/editwininfo.cpp
index c62d2b1f4f7..9b35f58ceee 100644
--- a/src/osd/modules/debugger/win/editwininfo.cpp
+++ b/src/osd/modules/debugger/win/editwininfo.cpp
@@ -32,9 +32,10 @@ constexpr int HISTORY_LENGTH = 100;
} // anonymous namespace
-editwin_info::editwin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler) :
+editwin_info::editwin_info(debugger_windows_interface &debugger, bool is_main_console, int viewidx, LPCSTR title, WNDPROC handler) :
debugwin_info(debugger, is_main_console, title, handler),
m_editwnd(nullptr),
+ m_viewidx(viewidx),
m_edit_defstr(),
m_original_editproc(nullptr),
m_history(),
@@ -185,13 +186,13 @@ LRESULT editwin_info::edit_proc(UINT message, WPARAM wparam, LPARAM lparam)
break;
case VK_PRIOR:
- if (m_views[0] != nullptr)
- m_views[0]->send_pageup();
+ if (m_views[m_viewidx] != nullptr)
+ m_views[m_viewidx]->send_pageup();
break;
case VK_NEXT:
- if (m_views[0] != nullptr)
- m_views[0]->send_pagedown();
+ if (m_views[m_viewidx] != nullptr)
+ m_views[m_viewidx]->send_pagedown();
break;
case VK_TAB:
diff --git a/src/osd/modules/debugger/win/editwininfo.h b/src/osd/modules/debugger/win/editwininfo.h
index e2c0ce3c4b8..c12d6844d7b 100644
--- a/src/osd/modules/debugger/win/editwininfo.h
+++ b/src/osd/modules/debugger/win/editwininfo.h
@@ -23,7 +23,7 @@ namespace osd::debugger::win {
class editwin_info : public debugwin_info
{
public:
- editwin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler);
+ editwin_info(debugger_windows_interface &debugger, bool is_main_console, int viewidx, LPCSTR title, WNDPROC handler);
virtual ~editwin_info();
virtual bool restore_field(HWND wnd) override;
@@ -55,6 +55,7 @@ private:
static LRESULT CALLBACK static_edit_proc(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam);
HWND m_editwnd;
+ int m_viewidx;
std::string m_edit_defstr;
WNDPROC m_original_editproc;
history_deque m_history;
diff --git a/src/osd/modules/debugger/win/memorywininfo.cpp b/src/osd/modules/debugger/win/memorywininfo.cpp
index 92078854e2e..1fbc673f1d8 100644
--- a/src/osd/modules/debugger/win/memorywininfo.cpp
+++ b/src/osd/modules/debugger/win/memorywininfo.cpp
@@ -21,7 +21,7 @@
namespace osd::debugger::win {
memorywin_info::memorywin_info(debugger_windows_interface &debugger) :
- editwin_info(debugger, false, "Memory", nullptr),
+ editwin_info(debugger, false, 0 /* view index */, "Memory", nullptr),
m_combownd(nullptr)
{
if (!window())