Pass std::ranges::subrange to menu selection functions

This commit is contained in:
Kp 2022-10-09 23:15:21 +00:00
parent 57de180a2e
commit 052dff6dae
1 changed files with 8 additions and 8 deletions

View File

@ -251,7 +251,7 @@ enum class select_dir_flag : uint8_t
};
__attribute_nonnull()
static int select_file_recursive(const menu_title title, const std::array<char, PATH_MAX> &orig_path, const partial_range_t<const file_extension_t *> &ext_list, select_dir_flag select_dir, ntstring<PATH_MAX - 1> &userdata);
static int select_file_recursive(const menu_title title, const std::array<char, PATH_MAX> &orig_path, const std::ranges::subrange<const file_extension_t *> &ext_list, select_dir_flag select_dir, ntstring<PATH_MAX - 1> &userdata);
static window_event_result get_absolute_path(ntstring<PATH_MAX - 1> &full_path, const char *rel_path)
{
@ -2216,23 +2216,23 @@ struct browser_storage
{
struct target_path_not_mounted {};
// List of file extensions we're looking for (if looking for a music file many types are possible)
const partial_range_t<const file_extension_t *> ext_range;
const std::ranges::subrange<const file_extension_t *> ext_range;
const select_dir_flag select_dir; // Allow selecting the current directory (e.g. for Jukebox level song directory)
physfsx_mounted_path view_path; // The absolute path we're currently looking at
string_array_t list;
browser_storage(const char *orig_path, const partial_range_t<const file_extension_t *> &ext_range, const select_dir_flag select_dir, const char *const sep) :
browser_storage(const char *orig_path, const std::ranges::subrange<const file_extension_t *> &ext_range, const select_dir_flag select_dir, const char *const sep) :
ext_range(ext_range), select_dir(select_dir),
/* view_path is trivially constructed, then properly initialized as
* a side effect of preparing the string list */
list(construct_string_list(orig_path, view_path, ext_range, select_dir, sep))
{
}
static string_array_t construct_string_list(const char *orig_path, physfsx_mounted_path &view_path, const partial_range_t<const file_extension_t *> &r, const select_dir_flag select_dir, const char *const sep);
static string_array_t construct_string_list(const char *orig_path, physfsx_mounted_path &view_path, const std::ranges::subrange<const file_extension_t *> &r, const select_dir_flag select_dir, const char *const sep);
};
struct browser : browser_storage, listbox
{
browser(const char *orig_path, menu_title title, const partial_range_t<const file_extension_t *> &r, const select_dir_flag select_dir, const char *const sep, ntstring<PATH_MAX - 1> &userdata) :
browser(const char *orig_path, menu_title title, const std::ranges::subrange<const file_extension_t *> &r, const select_dir_flag select_dir, const char *const sep, ntstring<PATH_MAX - 1> &userdata) :
browser_storage(orig_path, r, select_dir, sep),
listbox(0, list.pointer().size(), &list.pointer().front(), title, grd_curscreen->sc_canvas, 1),
userdata(userdata)
@ -2245,7 +2245,7 @@ struct browser : browser_storage, listbox
struct list_directory_context
{
string_array_t &string_list;
const partial_range_t<const file_extension_t *> ext_range;
const std::ranges::subrange<const file_extension_t *> ext_range;
const std::array<char, PATH_MAX> &path;
};
@ -2364,7 +2364,7 @@ window_event_result browser::callback_handler(const d_event &event, window_event
return window_event_result::ignored;
}
static int select_file_recursive(const menu_title title, const std::array<char, PATH_MAX> &orig_path_storage, const partial_range_t<const file_extension_t *> &ext_range, const select_dir_flag select_dir, ntstring<PATH_MAX - 1> &userdata)
static int select_file_recursive(const menu_title title, const std::array<char, PATH_MAX> &orig_path_storage, const std::ranges::subrange<const file_extension_t *> &ext_range, const select_dir_flag select_dir, ntstring<PATH_MAX - 1> &userdata)
{
const auto sep = PHYSFS_getDirSeparator();
auto orig_path = orig_path_storage.data();
@ -2383,7 +2383,7 @@ static int select_file_recursive(const menu_title title, const std::array<char,
}
}
string_array_t browser_storage::construct_string_list(const char *orig_path, physfsx_mounted_path &view_path, const partial_range_t<const file_extension_t *> &ext_range, const select_dir_flag select_dir, const char *const sep)
string_array_t browser_storage::construct_string_list(const char *orig_path, physfsx_mounted_path &view_path, const std::ranges::subrange<const file_extension_t *> &ext_range, const select_dir_flag select_dir, const char *const sep)
{
view_path.path.front() = 0;
// Set the viewing directory to orig_path, or some parent of it