summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/selsoft.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/selsoft.h')
-rw-r--r--src/frontend/mame/ui/selsoft.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/frontend/mame/ui/selsoft.h b/src/frontend/mame/ui/selsoft.h
index 1becf695841..1bfdd9c1e48 100644
--- a/src/frontend/mame/ui/selsoft.h
+++ b/src/frontend/mame/ui/selsoft.h
@@ -15,6 +15,10 @@
#include "ui/selmenu.h"
#include "ui/utils.h"
+#include <map>
+#include <string>
+#include <vector>
+
namespace ui {
@@ -29,6 +33,21 @@ private:
using filter_map = std::map<software_filter::type, software_filter::ptr>;
using icon_cache = texture_lru<ui_software_info const *>;
+ struct search_item
+ {
+ search_item(ui_software_info const &s);
+ search_item(search_item const &) = default;
+ search_item(search_item &&) = default;
+ search_item &operator=(search_item const &) = default;
+ search_item &operator=(search_item &&) = default;
+ void set_penalty(std::u32string const &search);
+
+ std::reference_wrapper<ui_software_info const> software;
+ std::u32string ucs_shortname;
+ std::u32string ucs_longname;
+ double penalty;
+ };
+
virtual void populate(float &customtop, float &custombottom) override;
virtual void handle() override;
@@ -51,7 +70,7 @@ private:
virtual void inkey_export() override { throw false; }
void build_software_list();
- void find_matches(const char *str, int count);
+ void find_matches();
void load_sw_custom_filters();
// handlers
@@ -68,7 +87,7 @@ private:
software_filter::type m_filter_type;
std::vector<ui_software_info> m_swinfo;
- ui_software_info const *m_searchlist[MAX_VISIBLE_SEARCH + 1];
+ std::vector<search_item> m_searchlist;
std::vector<std::reference_wrapper<ui_software_info const> > m_displaylist;
};