diff options
author | 2018-12-28 10:09:29 -0500 | |
---|---|---|
committer | 2018-12-28 10:09:29 -0500 | |
commit | 5ccaad336b88900cf945d77026960ef777c676b4 (patch) | |
tree | c24ac81493f67b25b49f1e5a9055963161d840d0 /src/frontend/mame/ui/inputmap.cpp | |
parent | 52b1da8674d64fb6948ef27db6009543cf4b75d7 (diff) |
ui/inputmap.cpp: Eliminate qsort (nw)
Diffstat (limited to 'src/frontend/mame/ui/inputmap.cpp')
-rw-r--r-- | src/frontend/mame/ui/inputmap.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp index ed51a903b9d..2259abc0a03 100644 --- a/src/frontend/mame/ui/inputmap.cpp +++ b/src/frontend/mame/ui/inputmap.cpp @@ -15,6 +15,8 @@ #include "ui/menu.h" #include "ui/inputmap.h" +#include <algorithm> + namespace ui { /*************************************************************************** @@ -353,23 +355,6 @@ void menu_input_specific::update_input(struct input_item_data *seqchangeditem) /*------------------------------------------------- - menu_input_compare_items - compare two - items for quicksort --------------------------------------------------*/ - -int menu_input::compare_items(const void *i1, const void *i2) -{ - const input_item_data * const *data1 = (const input_item_data * const *)i1; - const input_item_data * const *data2 = (const input_item_data * const *)i2; - if ((*data1)->sortorder < (*data2)->sortorder) - return -1; - if ((*data1)->sortorder > (*data2)->sortorder) - return 1; - return 0; -} - - -/*------------------------------------------------- menu_input_populate_and_sort - take a list of input_item_data objects and build up the menu from them @@ -378,7 +363,7 @@ int menu_input::compare_items(const void *i1, const void *i2) void menu_input::populate_and_sort(input_item_data *itemlist) { const char *nameformat[INPUT_TYPE_TOTAL] = { nullptr }; - input_item_data **itemarray, *item; + input_item_data *item; int numitems = 0, curitem; std::string subtext; std::string prev_owner; @@ -395,12 +380,14 @@ void menu_input::populate_and_sort(input_item_data *itemlist) numitems++; /* now allocate an array of items and fill it up */ - itemarray = (input_item_data **)m_pool_alloc(sizeof(*itemarray) * numitems); + std::vector<input_item_data *> itemarray(numitems); for (item = itemlist, curitem = 0; item != nullptr; item = item->next) itemarray[curitem++] = item; /* sort it */ - qsort(itemarray, numitems, sizeof(*itemarray), compare_items); + std::sort(itemarray.begin(), itemarray.end(), [](const input_item_data *i1, const input_item_data *i2) { + return i1->sortorder < i2->sortorder; + }); /* build the menu */ for (curitem = 0; curitem < numitems; curitem++) |