summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-07-01 20:49:52 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2016-07-01 20:50:37 +0200
commit715c86f1c7716f18235e9ea7e42f5ca7e581ef41 (patch)
tree3a4619f63bef71957a4fe9c9f66bef5e8cb81f6a
parentb61ed2c7a43d5e8a3797905b8cafc2d1ebb7a455 (diff)
more cleanup (nw)
-rw-r--r--src/frontend/mame/ui/miscmenu.cpp5
-rw-r--r--src/osd/modules/debugger/debugwin.cpp39
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.cpp1
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.h4
-rw-r--r--src/osd/modules/diagnostics/diagnostics_win32.cpp18
-rw-r--r--src/osd/osdnet.cpp30
-rw-r--r--src/osd/osdnet.h3
7 files changed, 44 insertions, 56 deletions
diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp
index cbaeafc258a..25f18f7aacc 100644
--- a/src/frontend/mame/ui/miscmenu.cpp
+++ b/src/frontend/mame/ui/miscmenu.cpp
@@ -162,13 +162,12 @@ void menu_network_devices::populate()
{
int curr = network.get_interface();
const char *title = nullptr;
- const osd_netdev::entry_t *entry = netdev_first();
- while(entry) {
+ for(auto &entry : get_netdev_list())
+ {
if(entry->id==curr) {
title = entry->description;
break;
}
- entry = entry->m_next;
}
item_append(network.device().tag(), (title) ? title : "------", FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, (void *)network);
diff --git a/src/osd/modules/debugger/debugwin.cpp b/src/osd/modules/debugger/debugwin.cpp
index 418e24287ef..ea93944e6c7 100644
--- a/src/osd/modules/debugger/debugwin.cpp
+++ b/src/osd/modules/debugger/debugwin.cpp
@@ -30,7 +30,7 @@
#include "../input/input_windows.h"
-class debugger_windows : public osd_module, public debug_module, protected debugger_windows_interface
+class debugger_windows : public osd_module, public debug_module, public debugger_windows_interface
{
public:
debugger_windows() :
@@ -76,7 +76,7 @@ private:
running_machine *m_machine;
std::unique_ptr<ui_metrics> m_metrics;
bool m_waiting_for_debugger;
- simple_list<debugwin_info> m_window_list;
+ std::vector<std::unique_ptr<debugwin_info>> m_window_list;
consolewin_info *m_main_console;
};
@@ -84,8 +84,8 @@ private:
void debugger_windows::exit()
{
// loop over windows and free them
- while (m_window_list.first() != nullptr)
- m_window_list.first()->destroy();
+ while (!m_window_list.empty())
+ m_window_list.front()->destroy();
m_main_console = nullptr;
m_metrics.reset();
@@ -164,8 +164,8 @@ void debugger_windows::debugger_update()
m_machine->debugger().cpu().get_visible_cpu()->debug()->halt_on_next_instruction("User-initiated break\n");
// if we were focused on some window's edit box, reset it to default
- for (debugwin_info &info : m_window_list)
- info.restore_field(focuswnd);
+ for (auto &info : m_window_list)
+ info->restore_field(focuswnd);
}
}
}
@@ -224,39 +224,40 @@ bool debugger_windows::seq_pressed() const
void debugger_windows::remove_window(debugwin_info &info)
{
- m_window_list.remove(info);
+ for (auto it = m_window_list.begin(); it != m_window_list.end(); ++it)
+ if (it->get() == &info) {
+ m_window_list.erase(it);
+ return;
+ }
}
void debugger_windows::show_all()
{
- for (debugwin_info &info : m_window_list)
- info.show();
+ for (auto &info : m_window_list)
+ info->show();
}
void debugger_windows::hide_all()
{
SetForegroundWindow(osd_common_t::s_window_list.front()->platform_window<HWND>());
- for (debugwin_info &info : m_window_list)
- info.hide();
+ for (auto &info : m_window_list)
+ info->hide();
}
template <typename T> T *debugger_windows::create_window()
{
// allocate memory
- T *info = global_alloc(T(*this));
+ std::unique_ptr<T> info = std::make_unique<T>(*this);
if (info->is_valid())
{
- m_window_list.prepend(*info);
- return info;
- }
- else
- {
- global_free(info);
- return nullptr;
+ m_window_list.push_back(std::move(info));
+ T *ptr = dynamic_cast<T*>(m_window_list.back().get());
+ return ptr;
}
+ return nullptr;
}
diff --git a/src/osd/modules/debugger/win/debugwininfo.cpp b/src/osd/modules/debugger/win/debugwininfo.cpp
index 8bb9e7592f1..61f57511d6e 100644
--- a/src/osd/modules/debugger/win/debugwininfo.cpp
+++ b/src/osd/modules/debugger/win/debugwininfo.cpp
@@ -24,7 +24,6 @@ bool debugwin_info::s_window_class_registered = false;
debugwin_info::debugwin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler) :
debugbase_info(debugger),
m_is_main_console(is_main_console),
- m_next(nullptr),
m_wnd(nullptr),
m_handler(handler),
m_minwidth(200),
diff --git a/src/osd/modules/debugger/win/debugwininfo.h b/src/osd/modules/debugger/win/debugwininfo.h
index 4bab0e2a3a3..9748a647e15 100644
--- a/src/osd/modules/debugger/win/debugwininfo.h
+++ b/src/osd/modules/debugger/win/debugwininfo.h
@@ -19,13 +19,10 @@
class debugwin_info : protected debugbase_info
{
public:
- template<class U> friend class simple_list;
-
debugwin_info(debugger_windows_interface &debugger, bool is_main_console, LPCSTR title, WNDPROC handler);
virtual ~debugwin_info();
bool is_valid() const { return m_wnd != nullptr; }
- debugwin_info *next() const { return m_next; }
void set_ignore_char_lparam(LPARAM value) { m_ignore_char_lparam = value >> 16; }
bool check_ignore_char_lparam(LPARAM value)
@@ -131,7 +128,6 @@ private:
bool const m_is_main_console;
- debugwin_info *m_next;
HWND m_wnd;
WNDPROC const m_handler;
diff --git a/src/osd/modules/diagnostics/diagnostics_win32.cpp b/src/osd/modules/diagnostics/diagnostics_win32.cpp
index 60707f2baad..b3e9d8320e0 100644
--- a/src/osd/modules/diagnostics/diagnostics_win32.cpp
+++ b/src/osd/modules/diagnostics/diagnostics_win32.cpp
@@ -88,7 +88,7 @@ public:
// force symbols to be cached
void cache_symbols() { scan_file_for_address(0, true); }
- void reset_cache() { m_cache.reset(); }
+ void reset_cache() { m_cache.clear(); }
private:
// internal helpers
bool query_system_for_address(FPTR address);
@@ -103,14 +103,12 @@ private:
struct cache_entry
{
cache_entry(FPTR address, const char *symbol) :
- m_next(nullptr), m_address(address), m_name(symbol) { }
- cache_entry *next() const { return m_next; }
+ m_address(address), m_name(symbol) { }
- cache_entry * m_next;
FPTR m_address;
std::string m_name;
};
- simple_list<cache_entry> m_cache;
+ std::vector<std::unique_ptr<cache_entry>> m_cache;
std::string m_mapfile;
std::string m_symfile;
@@ -445,7 +443,7 @@ void symbol_manager::scan_file_for_address(FPTR address, bool create_cache)
// also create a cache entry if we can
if (create_cache)
- m_cache.append(*global_alloc(cache_entry(addr, symbol.c_str())));
+ m_cache.push_back(std::make_unique<cache_entry>(addr, symbol.c_str()));
}
}
@@ -470,13 +468,13 @@ void symbol_manager::scan_cache_for_address(FPTR address)
FPTR best_addr = 0;
// walk the cache, looking for valid entries
- for (cache_entry &entry : m_cache)
+ for (auto &entry : m_cache)
// if this is the best one so far, remember it
- if (entry.m_address <= address && entry.m_address > best_addr)
+ if (entry->m_address <= address && entry->m_address > best_addr)
{
- best_addr = entry.m_address;
- best_symbol = entry.m_name;
+ best_addr = entry->m_address;
+ best_symbol = entry->m_name;
}
// format the symbol and remember the last base
diff --git a/src/osd/osdnet.cpp b/src/osd/osdnet.cpp
index 7acfbd57f88..18328f2eed5 100644
--- a/src/osd/osdnet.cpp
+++ b/src/osd/osdnet.cpp
@@ -3,38 +3,35 @@
#include "emu.h"
#include "osdnet.h"
-static class simple_list<osd_netdev::entry_t> netdev_list;
+static class std::vector<std::unique_ptr<osd_netdev::entry_t>> netdev_list;
void add_netdev(const char *name, const char *description, create_netdev func)
{
- auto entry = global_alloc_clear<osd_netdev::entry_t>();
- entry->id = netdev_list.count();
+ auto entry = make_unique_clear<osd_netdev::entry_t>();
+ entry->id = netdev_list.size();
strncpy(entry->name, name, 255);
entry->name[255] = '\0';
strncpy(entry->description, (description != nullptr) ? description : "(no name)", 255);
entry->description[255] = '\0';
entry->func = func;
- netdev_list.append(*entry);
+ netdev_list.push_back(std::move(entry));
}
void clear_netdev()
{
- netdev_list.reset();
+ netdev_list.clear();
}
-const osd_netdev::entry_t *netdev_first() {
- return netdev_list.first();
+const std::vector<std::unique_ptr<osd_netdev::entry_t>>& get_netdev_list()
+{
+ return netdev_list;
}
class osd_netdev *open_netdev(int id, class device_network_interface *ifdev, int rate)
{
- osd_netdev::entry_t *entry = netdev_list.first();
- while(entry) {
+ for(auto &entry : netdev_list)
if(entry->id==id)
return entry->func(entry->name, ifdev, rate);
- entry = entry->m_next;
- }
-
return nullptr;
}
@@ -110,13 +107,13 @@ const char *osd_netdev::get_mac()
int netdev_count()
{
- return netdev_list.count();
+ return netdev_list.size();
}
void osd_list_network_adapters(void)
{
#ifdef USE_NETWORK
- int num_devs = netdev_list.count();
+ int num_devs = netdev_list.size();
if (num_devs == 0)
{
@@ -125,10 +122,9 @@ void osd_list_network_adapters(void)
}
printf("Available network adapters:\n");
- const osd_netdev::entry_t *entry = netdev_first();
- while(entry) {
+ for (auto &entry : netdev_list)
+ {
printf(" %s\n", entry->description);
- entry = entry->m_next;
}
#else
diff --git a/src/osd/osdnet.h b/src/osd/osdnet.h
index be8420735d7..7e848c8683a 100644
--- a/src/osd/osdnet.h
+++ b/src/osd/osdnet.h
@@ -19,7 +19,6 @@ public:
char name[256];
char description[256];
create_netdev func;
- entry_t *m_next;
};
osd_netdev(class device_network_interface *ifdev, int rate);
virtual ~osd_netdev();
@@ -45,6 +44,6 @@ private:
class osd_netdev *open_netdev(int id, class device_network_interface *ifdev, int rate);
void add_netdev(const char *name, const char *description, create_netdev func);
void clear_netdev();
-const osd_netdev::entry_t *netdev_first();
+const std::vector<std::unique_ptr<osd_netdev::entry_t>>& get_netdev_list();
int netdev_count();
#endif