| /* 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 |
| |