diff options
author | 2016-07-04 23:13:07 -0400 | |
---|---|---|
committer | 2016-07-04 23:13:07 -0400 | |
commit | 0d4151e3663e610a48faae575a85e932b7a50e5e (patch) | |
tree | e4132743c1588472233a3d6236f10f6945cfbe2e | |
parent | 411880ac67df7786241a774387a122dda127f42b (diff) |
Changed a number of file manager related menus to have their outputs be by reference than pointer, and tightened up typecasts in menu_select_rw
-rw-r--r-- | src/frontend/mame/ui/filesel.cpp | 51 | ||||
-rw-r--r-- | src/frontend/mame/ui/filesel.h | 11 | ||||
-rw-r--r-- | src/frontend/mame/ui/floppycntrl.cpp | 2 | ||||
-rw-r--r-- | src/frontend/mame/ui/imgcntrl.cpp | 6 | ||||
-rw-r--r-- | src/frontend/mame/ui/swlist.cpp | 8 | ||||
-rw-r--r-- | src/frontend/mame/ui/swlist.h | 4 |
6 files changed, 53 insertions, 29 deletions
diff --git a/src/frontend/mame/ui/filesel.cpp b/src/frontend/mame/ui/filesel.cpp index 4f4e1b98c57..fdefe84715d 100644 --- a/src/frontend/mame/ui/filesel.cpp +++ b/src/frontend/mame/ui/filesel.cpp @@ -44,16 +44,16 @@ namespace ui { // ctor //------------------------------------------------- -menu_file_selector::menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, menu_file_selector::result *result) +menu_file_selector::menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, menu_file_selector::result &result) : menu(mui, container) , m_current_directory(current_directory) , m_current_file(current_file) + , m_result(result) { m_image = image; m_has_empty = has_empty; m_has_softlist = has_softlist; m_has_create = has_create; - m_result = result; } @@ -391,18 +391,18 @@ void menu_file_selector::handle() { case SELECTOR_ENTRY_TYPE_EMPTY: // empty slot - unload - *m_result = result::EMPTY; + m_result = result::EMPTY; menu::stack_pop(machine()); break; case SELECTOR_ENTRY_TYPE_CREATE: // create - *m_result = result::CREATE; + m_result = result::CREATE; menu::stack_pop(machine()); break; case SELECTOR_ENTRY_TYPE_SOFTWARE_LIST: - *m_result = result::SOFTLIST; + m_result = result::SOFTLIST; menu::stack_pop(machine()); break; @@ -423,7 +423,7 @@ void menu_file_selector::handle() case SELECTOR_ENTRY_TYPE_FILE: // file m_current_file.assign(entry->fullpath); - *m_result = result::FILE; + m_result = result::FILE; menu::stack_pop(machine()); break; } @@ -508,11 +508,11 @@ void menu_file_selector::handle() //------------------------------------------------- menu_select_rw::menu_select_rw(mame_ui_manager &mui, render_container *container, - bool can_in_place, result *result) - : menu(mui, container) + bool can_in_place, result &result) + : menu(mui, container), + m_can_in_place(can_in_place), + m_result(result) { - m_can_in_place = can_in_place; - m_result = result; } @@ -532,11 +532,11 @@ menu_select_rw::~menu_select_rw() void menu_select_rw::populate() { item_append(_("Select access mode"), "", FLAG_DISABLE, nullptr); - item_append(_("Read-only"), "", 0, (void *) result::READONLY); + item_append(_("Read-only"), "", 0, itemref_from_result(result::READONLY)); if (m_can_in_place) - item_append(_("Read-write"), "", 0, (void *)result::READWRITE); - item_append(_("Read this image, write to another image"), "", 0, (void *)result::WRITE_OTHER); - item_append(_("Read this image, write to diff"), "", 0, (void *)result::WRITE_DIFF); + item_append(_("Read-write"), "", 0, itemref_from_result(result::READWRITE)); + item_append(_("Read this image, write to another image"), "", 0, itemref_from_result(result::WRITE_OTHER)); + item_append(_("Read this image, write to diff"), "", 0, itemref_from_result(result::WRITE_DIFF)); } @@ -550,9 +550,30 @@ void menu_select_rw::handle() const event *event = process(0); if (event != nullptr && event->iptkey == IPT_UI_SELECT) { - *m_result = result(FPTR(event->itemref)); + m_result = result_from_itemref(event->itemref); menu::stack_pop(machine()); } } + +//------------------------------------------------- +// itemref_from_result +//------------------------------------------------- + +void *menu_select_rw::itemref_from_result(menu_select_rw::result result) +{ + return (void *)(FPTR)(unsigned int)result; +} + + +//------------------------------------------------- +// result_from_itemref +//------------------------------------------------- + +menu_select_rw::result menu_select_rw::result_from_itemref(void *itemref) +{ + return (menu_select_rw::result) (unsigned int) (FPTR)itemref; +} + + } // namespace ui diff --git a/src/frontend/mame/ui/filesel.h b/src/frontend/mame/ui/filesel.h index 6cef6aa0ade..9daa539ae28 100644 --- a/src/frontend/mame/ui/filesel.h +++ b/src/frontend/mame/ui/filesel.h @@ -30,7 +30,7 @@ public: FILE }; - menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, result *result); + menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, result &result); virtual ~menu_file_selector() override; virtual void populate() override; virtual void handle() override; @@ -64,7 +64,7 @@ private: bool m_has_empty; bool m_has_softlist; bool m_has_create; - result * m_result; + result & m_result; std::vector<file_selector_entry> m_entrylist; std::string m_hover_directory; std::string m_filename; @@ -92,15 +92,18 @@ public: WRITE_DIFF }; menu_select_rw(mame_ui_manager &mui, render_container *container, - bool can_in_place, result *result); + bool can_in_place, result &result); virtual ~menu_select_rw() override; virtual void populate() override; virtual void handle() override; + static void *itemref_from_result(result result); + static result result_from_itemref(void *itemref); + private: // internal state bool m_can_in_place; - result * m_result; + result & m_result; }; } // namespace ui diff --git a/src/frontend/mame/ui/floppycntrl.cpp b/src/frontend/mame/ui/floppycntrl.cpp index c36e3eac4d4..d09609dca9b 100644 --- a/src/frontend/mame/ui/floppycntrl.cpp +++ b/src/frontend/mame/ui/floppycntrl.cpp @@ -94,7 +94,7 @@ void menu_control_floppy_image::hook_load(std::string filename, bool softlist) can_in_place = false; } submenu_result.rw = menu_select_rw::result::INVALID; - menu::stack_push<menu_select_rw>(ui(), container, can_in_place, &submenu_result.rw); + menu::stack_push<menu_select_rw>(ui(), container, can_in_place, submenu_result.rw); state = SELECT_RW; } diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index c2e72495614..3fae7859c4c 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -178,7 +178,7 @@ void menu_control_device_image::handle() switch(state) { case START_FILE: { submenu_result.filesel = menu_file_selector::result::INVALID; - menu::stack_push<menu_file_selector>(ui(), container, image, m_current_directory, m_current_file, true, image->image_interface()!=nullptr, image->is_creatable(), &submenu_result.filesel); + menu::stack_push<menu_file_selector>(ui(), container, image, m_current_directory, m_current_file, true, image->image_interface()!=nullptr, image->is_creatable(), submenu_result.filesel); state = SELECT_FILE; break; } @@ -191,7 +191,7 @@ void menu_control_device_image::handle() case START_OTHER_PART: { submenu_result.swparts = menu_software_parts::result::INVALID; - menu::stack_push<menu_software_parts>(ui(), container, swi, swp->interface(), &swp, true, &submenu_result.swparts); + menu::stack_push<menu_software_parts>(ui(), container, swi, swp->interface(), &swp, true, submenu_result.swparts); state = SELECT_OTHER_PART; break; } @@ -214,7 +214,7 @@ void menu_control_device_image::handle() { submenu_result.swparts = menu_software_parts::result::INVALID; swp = nullptr; - menu::stack_push<menu_software_parts>(ui(), container, swi, image->image_interface(), &swp, false, &submenu_result.swparts); + menu::stack_push<menu_software_parts>(ui(), container, swi, image->image_interface(), &swp, false, submenu_result.swparts); state = SELECT_ONE_PART; } else diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index bf1e34df10f..e26fc754687 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -33,14 +33,14 @@ namespace ui { // ctor //------------------------------------------------- -menu_software_parts::menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result *result) - : menu(mui, container) +menu_software_parts::menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result &result) + : menu(mui, container), + m_result(result) { m_info = info; m_interface = interface; m_selected_part = part; m_other_opt = other_opt; - m_result = result; } @@ -108,7 +108,7 @@ void menu_software_parts::handle() if (event != nullptr && event->iptkey == IPT_UI_SELECT && event->itemref != nullptr) { software_part_menu_entry *entry = (software_part_menu_entry *) event->itemref; - *m_result = entry->type; + m_result = entry->type; *m_selected_part = entry->part; menu::stack_pop(machine()); } diff --git a/src/frontend/mame/ui/swlist.h b/src/frontend/mame/ui/swlist.h index 3c0317575fa..1145f984d78 100644 --- a/src/frontend/mame/ui/swlist.h +++ b/src/frontend/mame/ui/swlist.h @@ -29,7 +29,7 @@ public: ENTRY }; - menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result *result); + menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, result &result); virtual ~menu_software_parts() override; virtual void populate() override; virtual void handle() override; @@ -45,7 +45,7 @@ private: const char * m_interface; const software_part ** m_selected_part; bool m_other_opt; - result * m_result; + result & m_result; }; |