/* * view.h */ /** \ingroup clish \defgroup clish_view view @{ \brief This class is a container of commands. A particular CLI session may contain a number of different views. Each view may contain its own specific commands as well as those available at a global scope. */ #ifndef _clish_view_h #define _clish_view_h typedef struct clish_view_s clish_view_t; typedef enum { CLISH_RESTORE_NONE, CLISH_RESTORE_DEPTH, CLISH_RESTORE_VIEW } clish_view_restore_t; #include "clish/command.h" #include "clish/nspace.h" #include "clish/var.h" /*===================================== * VIEW INTERFACE *===================================== */ /*----------------- * meta functions *----------------- */ clish_view_t *clish_view_new(const char *name, const char *prompt); int clish_view_bt_compare(const void *clientnode, const void *clientkey); void clish_view_bt_getkey(const void *clientnode, lub_bintree_key_t * key); size_t clish_view_bt_offset(void); /*----------------- * methods *----------------- */ void clish_view_delete(clish_view_t * instance); clish_command_t *clish_view_new_command(clish_view_t * instance, const char *name, const char *text); clish_command_t *clish_view_find_command(clish_view_t * instance, const char *name, bool_t inherit); const clish_command_t *clish_view_find_next_completion(clish_view_t * instance, const char *iter_cmd, const char *line, clish_nspace_visibility_t field, bool_t inherit); clish_command_t *clish_view_resolve_command(clish_view_t * instance, const char *line, bool_t inherit); clish_command_t *clish_view_resolve_prefix(clish_view_t * instance, const char *line, bool_t inherit); void clish_view_dump(clish_view_t * instance); void clish_view_insert_nspace(clish_view_t * instance, clish_nspace_t * nspace); void clish_view_clean_proxy(clish_view_t * instance); /*----------------- * attributes *----------------- */ const char *clish_view__get_name(const clish_view_t * instance); void clish_view__set_prompt(clish_view_t * instance, const char *prompt); char *clish_view__get_prompt(const clish_view_t *instance); unsigned int clish_view__get_nspace_count(const clish_view_t * instance); clish_nspace_t *clish_view__get_nspace(const clish_view_t * instance, unsigned index); void clish_view__set_depth(clish_view_t * instance, unsigned depth); unsigned clish_view__get_depth(const clish_view_t * instance); void clish_view__set_restore(clish_view_t * instance, clish_view_restore_t restore); clish_view_restore_t clish_view__get_restore(const clish_view_t * instance); #endif /* _clish_view_h */ /** @} clish_view */