/* Command line library */ #ifndef CMDLINELIB_H #define CMDLINELIB_H #define CMDL_BUFFER_SIZE 256 //#define CMDL_OUTPUT_SIZE 256 #define CMDL_PROMPT_SIZE 8 #define CMDL_MAX_TAB_COMPLETE_RESULT 256 typedef int (*cmdl_putchar_t)(int); typedef int (*cmdl_printf_t)( const char *format, ... ); typedef int (*cmdl_getchar_t)(); #ifndef NULL #define NULL ((void *)0) #endif enum{ CMDL_LEFT, CMDL_RIGHT }; enum{ CMDLK_FW=6, CMDLK_BW=2, CMDLK_BS=8, CMDLK_HOME=2, CMDLK_END=5, CMDLK_DELTOEND=11, CMDLK_DELARG=23, CMDLK_ENTER=0x0d, CMDLK_RETURN=0x0a, CMDLK_TAB=9 }; typedef struct{ // buffers //char* output; char* buffer; char* prompt; // options and values int cursor; //int has_output; int exit; int refresh; int tabstate; int insert; // callbacks cmdl_putchar_t putchar; cmdl_getchar_t getchar; cmdl_printf_t printf; }cmd_line; typedef struct{ int argc; char **argv; }cmdl_param_list; void cmdl_setputchar(cmd_line* cmd, cmdl_putchar_t in); void cmdl_setgetchar(cmd_line* cmd, cmdl_getchar_t in); void cmdl_setprintf(cmd_line* cmd, cmdl_printf_t in); //void cmdl_builtin_help(cmd_line* cmd, char* command); void cmdl_parsechar(cmd_line* cmd, char in); void cmdl_addreplace(cmd_line* cmd, char in); void cmdl_addinsert(cmd_line* cmd, char in); void cmdl_enterloop(cmd_line* cmd); void cmdl_exec(cmd_line* cmd); void cmdl_setexit(cmd_line* cmd, int exit); int cmdl_getexit(cmd_line* cmd); void cmdl_clearoutput(cmd_line* cmd); void cmdl_clearbuffer(cmd_line* cmd); int cmdl_printf(cmd_line* cmd, const char *format, ...); char* cmdl_getoutput(cmd_line* cmd); //void cmdl_addoutput_str(cmd_line* cmd, char output[CMDL_OUTPUT_SIZE]); void cmdl_addstr(cmd_line* cmd, char* str); int cmdl_movecursor(cmd_line* cmd, int direction); char* cmdl_getbuffer(cmd_line* cmd); void cmdl_addchar(cmd_line* cmd, char in); int cmdl_check(cmd_line* cmd); void cmdl_del(cmd_line* cmd); cmd_line* cmdl_create(); void cmdl_free(cmd_line* cmd); char *cmdl_getprompt(cmd_line* cmd); void cmdl_setpropmt(cmd_line* cmd, char prompt[CMDL_PROMPT_SIZE]); cmdl_param_list* cmdl_getparams(const char* command); void cmdl_tabcomplete(cmd_line *cmd); #endif