De-opaque file_list.

This commit is contained in:
Themaister 2014-06-17 16:46:30 +02:00
parent 76292f873a
commit 57dffba9ba
3 changed files with 27 additions and 40 deletions

View File

@ -31,6 +31,7 @@
#include "audio/dsp_filter.h" #include "audio/dsp_filter.h"
#include "input/overlay.h" #include "input/overlay.h"
#include "frontend/frontend_context.h" #include "frontend/frontend_context.h"
#include "frontend/menu/file_list.h"
#ifndef _WIN32 #ifndef _WIN32
#include "miscellaneous.h" #include "miscellaneous.h"
#endif #endif
@ -503,8 +504,8 @@ typedef struct
size_t frame_buf_pitch; size_t frame_buf_pitch;
bool frame_buf_show; bool frame_buf_show;
void *menu_stack; file_list_t *menu_stack;
void *selection_buf; file_list_t *selection_buf;
size_t selection_ptr; size_t selection_ptr;
unsigned info_selection; unsigned info_selection;
bool need_refresh; bool need_refresh;

View File

@ -29,10 +29,9 @@ struct item_file
size_t directory_ptr; size_t directory_ptr;
}; };
void file_list_push(void *data, void file_list_push(file_list_t *list,
const char *path, unsigned type, size_t directory_ptr) const char *path, unsigned type, size_t directory_ptr)
{ {
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
@ -54,19 +53,17 @@ void file_list_push(void *data,
} }
size_t file_list_get_size(const void *data) size_t file_list_get_size(const file_list_t *list)
{ {
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return 0; return 0;
return list->size; return list->size;
} }
size_t file_list_get_directory_ptr(const void *data) size_t file_list_get_directory_ptr(const file_list_t *list)
{ {
size_t size; size_t size;
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return 0; return 0;
@ -74,9 +71,8 @@ size_t file_list_get_directory_ptr(const void *data)
return list->list[size].directory_ptr; return list->list[size].directory_ptr;
} }
void file_list_pop(void *data, size_t *directory_ptr) void file_list_pop(file_list_t *list, size_t *directory_ptr)
{ {
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
@ -88,18 +84,15 @@ void file_list_pop(void *data, size_t *directory_ptr)
} }
if (directory_ptr) if (directory_ptr)
{
*directory_ptr = list->list[list->size].directory_ptr; *directory_ptr = list->list[list->size].directory_ptr;
}
if (driver.menu_ctx && driver.menu_ctx->list_set_selection) if (driver.menu_ctx && driver.menu_ctx->list_set_selection)
driver.menu_ctx->list_set_selection(list); driver.menu_ctx->list_set_selection(list);
} }
void file_list_free(void *data) void file_list_free(file_list_t *list)
{ {
size_t i; size_t i;
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
@ -110,10 +103,9 @@ void file_list_free(void *data)
free(list); free(list);
} }
void file_list_clear(void *data) void file_list_clear(file_list_t *list)
{ {
size_t i; size_t i;
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
@ -129,10 +121,9 @@ void file_list_clear(void *data)
list->size = 0; list->size = 0;
} }
void file_list_set_alt_at_offset(void *data, size_t index, void file_list_set_alt_at_offset(file_list_t *list, size_t index,
const char *alt) const char *alt)
{ {
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
@ -140,10 +131,9 @@ void file_list_set_alt_at_offset(void *data, size_t index,
list->list[index].alt = strdup(alt); list->list[index].alt = strdup(alt);
} }
void file_list_get_alt_at_offset(const void *data, size_t index, void file_list_get_alt_at_offset(const file_list_t *list, size_t index,
const char **alt) const char **alt)
{ {
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return; return;
@ -160,19 +150,17 @@ static int file_list_alt_cmp(const void *a_, const void *b_)
return strcasecmp(cmp_a, cmp_b); return strcasecmp(cmp_a, cmp_b);
} }
void file_list_sort_on_alt(void *data) void file_list_sort_on_alt(file_list_t *list)
{ {
file_list_t *list = (file_list_t*)data;
if (!list) if (!list)
return; return;
qsort(list->list, list->size, sizeof(list->list[0]), file_list_alt_cmp); qsort(list->list, list->size, sizeof(list->list[0]), file_list_alt_cmp);
} }
void file_list_get_at_offset(const void *data, size_t index, void file_list_get_at_offset(const file_list_t *list, size_t index,
const char **path, unsigned *file_type) const char **path, unsigned *file_type)
{ {
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return; return;
if (!list->list) if (!list->list)
@ -184,10 +172,9 @@ void file_list_get_at_offset(const void *data, size_t index,
*file_type = list->list[index].type; *file_type = list->list[index].type;
} }
void file_list_get_last(const void *data, void file_list_get_last(const file_list_t *list,
const char **path, unsigned *file_type) const char **path, unsigned *file_type)
{ {
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return; return;
@ -195,12 +182,11 @@ void file_list_get_last(const void *data,
file_list_get_at_offset(list, list->size - 1, path, file_type); file_list_get_at_offset(list, list->size - 1, path, file_type);
} }
bool file_list_search(const void *data, const char *needle, size_t *index) bool file_list_search(const file_list_t *list, const char *needle, size_t *index)
{ {
size_t i; size_t i;
const char *alt; const char *alt;
bool ret = false; bool ret = false;
const file_list_t *list = (const file_list_t*)data;
if (!list) if (!list)
return false; return false;

View File

@ -32,30 +32,30 @@ typedef struct file_list
size_t size; size_t size;
} file_list_t; } file_list_t;
void file_list_free(void *list); void file_list_free(file_list_t *list);
void file_list_push(void *userdata, const char *path, void file_list_push(file_list_t *userdata, const char *path,
unsigned type, size_t current_directory_ptr); unsigned type, size_t current_directory_ptr);
void file_list_pop(void *list, size_t *directory_ptr); void file_list_pop(file_list_t *list, size_t *directory_ptr);
void file_list_clear(void *list); void file_list_clear(file_list_t *list);
void file_list_get_last(const void *list, void file_list_get_last(const file_list_t *list,
const char **path, unsigned *type); const char **path, unsigned *type);
size_t file_list_get_size(const void *list); size_t file_list_get_size(const file_list_t *list);
size_t file_list_get_directory_ptr(const void *list); size_t file_list_get_directory_ptr(const file_list_t *list);
void file_list_get_at_offset(const void *list, size_t index, void file_list_get_at_offset(const file_list_t *list, size_t index,
const char **path, unsigned *type); const char **path, unsigned *type);
void file_list_set_alt_at_offset(void *list, size_t index, void file_list_set_alt_at_offset(file_list_t *list, size_t index,
const char *alt); const char *alt);
void file_list_get_alt_at_offset(const void *list, size_t index, void file_list_get_alt_at_offset(const file_list_t *list, size_t index,
const char **alt); const char **alt);
void file_list_sort_on_alt(void *list); void file_list_sort_on_alt(file_list_t *list);
bool file_list_search(const void *list, const char *needle, size_t *index); bool file_list_search(const file_list_t *list, const char *needle, size_t *index);
#ifdef __cplusplus #ifdef __cplusplus
} }