1 /* 2 * view.h 3 */ 4 /** 5 \ingroup clish 6 \defgroup clish_view view 7 @{ 8 9 \brief This class is a container of commands. 10 11 A particular CLI session may contain a number of different views. Each 12 view may contain its own specific commands as well as those available at 13 a global scope. 14 15 */ 16 #ifndef _clish_view_h 17 #define _clish_view_h 18 19 typedef struct clish_view_s clish_view_t; 20 21 typedef enum { 22 CLISH_RESTORE_NONE, 23 CLISH_RESTORE_DEPTH, 24 CLISH_RESTORE_VIEW 25 } clish_view_restore_e; 26 27 #include "lub/list.h" 28 #include "clish/command.h" 29 #include "clish/nspace.h" 30 #include "clish/var.h" 31 32 /*===================================== 33 * VIEW INTERFACE 34 *===================================== */ 35 /*----------------- 36 * meta functions 37 *----------------- */ 38 clish_view_t *clish_view_new(const char *name, const char *prompt); 39 int clish_view_bt_compare(const void *clientnode, const void *clientkey); 40 void clish_view_bt_getkey(const void *clientnode, lub_bintree_key_t * key); 41 size_t clish_view_bt_offset(void); 42 43 /*----------------- 44 * methods 45 *----------------- */ 46 lub_bintree_t * clish_view__get_command_tree(clish_view_t *instance); 47 lub_list_t * clish_view__get_nspace_tree(clish_view_t *instance); 48 void clish_view_delete(clish_view_t * instance); 49 clish_command_t *clish_view_new_command(clish_view_t * instance, 50 const char *name, const char *text); 51 clish_command_t *clish_view_find_command(clish_view_t * instance, 52 const char *name, bool_t inherit); 53 const clish_command_t *clish_view_find_next_completion(clish_view_t * instance, 54 const char *iter_cmd, const char *line, 55 clish_nspace_visibility_e field, bool_t inherit); 56 clish_command_t *clish_view_resolve_command(clish_view_t * instance, 57 const char *line, bool_t inherit); 58 clish_command_t *clish_view_resolve_prefix(clish_view_t * instance, 59 const char *line, bool_t inherit); 60 void clish_view_dump(clish_view_t * instance); 61 void clish_view_insert_nspace(clish_view_t * instance, clish_nspace_t * nspace); 62 void clish_view_clean_proxy(clish_view_t * instance); 63 64 /*----------------- 65 * attributes 66 *----------------- */ 67 const char *clish_view__get_name(const clish_view_t * instance); 68 void clish_view__set_prompt(clish_view_t * instance, const char *prompt); 69 char *clish_view__get_prompt(const clish_view_t *instance); 70 void clish_view__set_depth(clish_view_t * instance, unsigned depth); 71 unsigned clish_view__get_depth(const clish_view_t * instance); 72 void clish_view__set_restore(clish_view_t * instance, 73 clish_view_restore_e restore); 74 clish_view_restore_e clish_view__get_restore(const clish_view_t * instance); 75 int clish_view_insert_hotkey(const clish_view_t *instance, const char *key, const char *cmd); 76 const char *clish_view_find_hotkey(const clish_view_t *instance, int code); 77 void clish_view__set_access(clish_view_t *instance, const char *access); 78 char *clish_view__get_access(const clish_view_t *instance); 79 80 #endif /* _clish_view_h */ 81 /** @} clish_view */ 82