Lines Matching refs:m

53 static inline void *menu_items_iter(struct menu *m,  in menu_items_iter()  argument
61 list_for_each_safe(pos, n, &m->items) { in menu_items_iter()
64 ret = callback(m, item, extra); in menu_items_iter()
78 static inline void *menu_item_print(struct menu *m, in menu_item_print() argument
82 if (!m->item_data_print) { in menu_item_print()
86 m->item_data_print(item->data); in menu_item_print()
96 static inline void *menu_item_destroy(struct menu *m, in menu_item_destroy() argument
108 __weak void menu_display_statusline(struct menu *m) in menu_display_statusline() argument
116 static inline void menu_display(struct menu *m) in menu_display() argument
118 if (m->title) { in menu_display()
119 puts(m->title); in menu_display()
122 menu_display_statusline(m); in menu_display()
124 menu_items_iter(m, menu_item_print, NULL); in menu_display()
135 static inline void *menu_item_key_match(struct menu *m, in menu_item_key_match() argument
156 static inline struct menu_item *menu_item_by_key(struct menu *m, in menu_item_by_key() argument
159 return menu_items_iter(m, menu_item_key_match, item_key); in menu_item_by_key()
166 int menu_default_choice(struct menu *m, void **choice) in menu_default_choice() argument
168 if (m->default_item) { in menu_default_choice()
169 *choice = m->default_item->data; in menu_default_choice()
185 static inline int menu_interactive_choice(struct menu *m, void **choice) in menu_interactive_choice() argument
194 menu_display(m); in menu_interactive_choice()
196 if (!m->item_choice) { in menu_interactive_choice()
199 m->timeout / 10); in menu_interactive_choice()
202 choice_item = menu_item_by_key(m, cbuf); in menu_interactive_choice()
209 return menu_default_choice(m, choice); in menu_interactive_choice()
212 char *key = m->item_choice(m->item_choice_data); in menu_interactive_choice()
215 choice_item = menu_item_by_key(m, key); in menu_interactive_choice()
219 m->timeout = 0; in menu_interactive_choice()
239 int menu_default_set(struct menu *m, char *item_key) in menu_default_set() argument
243 if (!m) in menu_default_set()
246 item = menu_item_by_key(m, item_key); in menu_default_set()
251 m->default_item = item; in menu_default_set()
271 int menu_get_choice(struct menu *m, void **choice) in menu_get_choice() argument
273 if (!m || !choice) in menu_get_choice()
276 if (!m->prompt) in menu_get_choice()
277 return menu_default_choice(m, choice); in menu_get_choice()
279 return menu_interactive_choice(m, choice); in menu_get_choice()
300 int menu_item_add(struct menu *m, char *item_key, void *item_data) in menu_item_add() argument
304 if (!m) in menu_item_add()
307 item = menu_item_by_key(m, item_key); in menu_item_add()
327 list_add_tail(&item->list, &m->items); in menu_item_add()
366 struct menu *m; in menu_create() local
368 m = malloc(sizeof *m); in menu_create()
370 if (!m) in menu_create()
373 m->default_item = NULL; in menu_create()
374 m->prompt = prompt; in menu_create()
375 m->timeout = timeout; in menu_create()
376 m->item_data_print = item_data_print; in menu_create()
377 m->item_choice = item_choice; in menu_create()
378 m->item_choice_data = item_choice_data; in menu_create()
381 m->title = strdup(title); in menu_create()
382 if (!m->title) { in menu_create()
383 free(m); in menu_create()
387 m->title = NULL; in menu_create()
390 INIT_LIST_HEAD(&m->items); in menu_create()
392 return m; in menu_create()
402 int menu_destroy(struct menu *m) in menu_destroy() argument
404 if (!m) in menu_destroy()
407 menu_items_iter(m, menu_item_destroy, NULL); in menu_destroy()
409 if (m->title) in menu_destroy()
410 free(m->title); in menu_destroy()
412 free(m); in menu_destroy()