summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-12-28 10:09:29 -0500
committer AJR <ajrhacker@users.noreply.github.com>2018-12-28 10:09:29 -0500
commit5ccaad336b88900cf945d77026960ef777c676b4 (patch)
treec24ac81493f67b25b49f1e5a9055963161d840d0 /src/frontend
parent52b1da8674d64fb6948ef27db6009543cf4b75d7 (diff)
ui/inputmap.cpp: Eliminate qsort (nw)
Diffstat (limited to 'src/frontend')
-rw-r--r--src/frontend/mame/ui/inputmap.cpp27
-rw-r--r--src/frontend/mame/ui/inputmap.h2
2 files changed, 7 insertions, 22 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++)
diff --git a/src/frontend/mame/ui/inputmap.h b/src/frontend/mame/ui/inputmap.h
index ba48e7dee9f..d63ecbd3d84 100644
--- a/src/frontend/mame/ui/inputmap.h
+++ b/src/frontend/mame/ui/inputmap.h
@@ -72,8 +72,6 @@ private:
virtual void handle() override;
virtual void update_input(struct input_item_data *seqchangeditem) = 0;
-
- static int compare_items(const void *i1, const void *i2);
};
class menu_input_general : public menu_input