46 lines
1021 B
C
46 lines
1021 B
C
|
#include <3ds.h>
|
||
|
#include "textmenu.h"
|
||
|
|
||
|
s32 menu_get_element_count (struct menu_t *menu) {
|
||
|
s32 i = 0;
|
||
|
|
||
|
if (menu) {
|
||
|
i = menu->element_count;
|
||
|
}
|
||
|
return i;
|
||
|
}
|
||
|
|
||
|
s32 menu_is_valid_index (s32 idx, struct menu_t *menu) {
|
||
|
return (menu != 0 && (idx >= 0 && idx < menu_get_element_count(menu)));
|
||
|
}
|
||
|
|
||
|
s32 menu_update_index (s32 idx, struct menu_t *menu) {
|
||
|
s32 newidx = 0;
|
||
|
s32 count = menu_get_element_count(menu);
|
||
|
|
||
|
newidx = idx < 0 ? count - 1 : idx >= count ? 0 : idx;
|
||
|
|
||
|
return newidx;
|
||
|
}
|
||
|
|
||
|
const char *menu_get_element_name (s32 idx, struct menu_t *menu) {
|
||
|
return menu_is_valid_index(idx, menu) ? menu->element[idx].name : 0;
|
||
|
}
|
||
|
|
||
|
menu_func_t *menu_get_element_function (s32 idx, struct menu_t *menu) {
|
||
|
return menu_is_valid_index(idx, menu) ? menu->element[idx].func : 0;
|
||
|
}
|
||
|
|
||
|
s32 menu_execute_function (s32 idx, struct menu_t *menu, void *param) {
|
||
|
s32 result = 0;
|
||
|
menu_func_t *f;
|
||
|
|
||
|
if (menu_is_valid_index(idx, menu)) {
|
||
|
f = menu_get_element_function(idx, menu);
|
||
|
if (f)
|
||
|
result = f(idx, param);
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|