mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
ui/inputmap.cpp: Eliminate qsort (nw)
This commit is contained in:
parent
52b1da8674
commit
5ccaad336b
@ -15,6 +15,8 @@
|
|||||||
#include "ui/menu.h"
|
#include "ui/menu.h"
|
||||||
#include "ui/inputmap.h"
|
#include "ui/inputmap.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
@ -352,23 +354,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
|
menu_input_populate_and_sort - take a list
|
||||||
of input_item_data objects and build up the
|
of input_item_data objects and build up the
|
||||||
@ -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)
|
void menu_input::populate_and_sort(input_item_data *itemlist)
|
||||||
{
|
{
|
||||||
const char *nameformat[INPUT_TYPE_TOTAL] = { nullptr };
|
const char *nameformat[INPUT_TYPE_TOTAL] = { nullptr };
|
||||||
input_item_data **itemarray, *item;
|
input_item_data *item;
|
||||||
int numitems = 0, curitem;
|
int numitems = 0, curitem;
|
||||||
std::string subtext;
|
std::string subtext;
|
||||||
std::string prev_owner;
|
std::string prev_owner;
|
||||||
@ -395,12 +380,14 @@ void menu_input::populate_and_sort(input_item_data *itemlist)
|
|||||||
numitems++;
|
numitems++;
|
||||||
|
|
||||||
/* now allocate an array of items and fill it up */
|
/* 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)
|
for (item = itemlist, curitem = 0; item != nullptr; item = item->next)
|
||||||
itemarray[curitem++] = item;
|
itemarray[curitem++] = item;
|
||||||
|
|
||||||
/* sort it */
|
/* 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 */
|
/* build the menu */
|
||||||
for (curitem = 0; curitem < numitems; curitem++)
|
for (curitem = 0; curitem < numitems; curitem++)
|
||||||
|
@ -72,8 +72,6 @@ private:
|
|||||||
|
|
||||||
virtual void handle() override;
|
virtual void handle() override;
|
||||||
virtual void update_input(struct input_item_data *seqchangeditem) = 0;
|
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
|
class menu_input_general : public menu_input
|
||||||
|
Loading…
Reference in New Issue
Block a user