1 | /* Command line library */ |
---|
2 | #ifndef CMDLINELIB_H |
---|
3 | #define CMDLINELIB_H |
---|
4 | |
---|
5 | #define CMDL_BUFFER_SIZE 256 |
---|
6 | //#define CMDL_OUTPUT_SIZE 256 |
---|
7 | #define CMDL_PROMPT_SIZE 8 |
---|
8 | #define CMDL_MAX_TAB_COMPLETE_RESULT 256 |
---|
9 | |
---|
10 | typedef int (*cmdl_putchar_t)(int); |
---|
11 | typedef int (*cmdl_printf_t)( const char *format, ... ); |
---|
12 | typedef int (*cmdl_getchar_t)(); |
---|
13 | |
---|
14 | #ifndef NULL |
---|
15 | #define NULL ((void *)0) |
---|
16 | #endif |
---|
17 | |
---|
18 | enum{ |
---|
19 | CMDL_LEFT, |
---|
20 | CMDL_RIGHT |
---|
21 | }; |
---|
22 | |
---|
23 | enum{ |
---|
24 | CMDLK_FW=6, |
---|
25 | CMDLK_BW=2, |
---|
26 | CMDLK_BS=8, |
---|
27 | CMDLK_HOME=2, |
---|
28 | CMDLK_END=5, |
---|
29 | CMDLK_DELTOEND=11, |
---|
30 | CMDLK_DELARG=23, |
---|
31 | CMDLK_ENTER=0x0d, |
---|
32 | CMDLK_RETURN=0x0a, |
---|
33 | CMDLK_TAB=9 |
---|
34 | }; |
---|
35 | |
---|
36 | typedef struct{ |
---|
37 | |
---|
38 | // buffers |
---|
39 | |
---|
40 | //char* output; |
---|
41 | char* buffer; |
---|
42 | char* prompt; |
---|
43 | |
---|
44 | // options and values |
---|
45 | |
---|
46 | int cursor; |
---|
47 | //int has_output; |
---|
48 | int exit; |
---|
49 | int refresh; |
---|
50 | int tabstate; |
---|
51 | int insert; |
---|
52 | |
---|
53 | // callbacks |
---|
54 | |
---|
55 | cmdl_putchar_t putchar; |
---|
56 | cmdl_getchar_t getchar; |
---|
57 | cmdl_printf_t printf; |
---|
58 | |
---|
59 | }cmd_line; |
---|
60 | |
---|
61 | typedef struct{ |
---|
62 | int argc; |
---|
63 | char **argv; |
---|
64 | }cmdl_param_list; |
---|
65 | |
---|
66 | void cmdl_setputchar(cmd_line* cmd, cmdl_putchar_t in); |
---|
67 | void cmdl_setgetchar(cmd_line* cmd, cmdl_getchar_t in); |
---|
68 | void cmdl_setprintf(cmd_line* cmd, cmdl_printf_t in); |
---|
69 | |
---|
70 | //void cmdl_builtin_help(cmd_line* cmd, char* command); |
---|
71 | |
---|
72 | void cmdl_parsechar(cmd_line* cmd, char in); |
---|
73 | |
---|
74 | void cmdl_addreplace(cmd_line* cmd, char in); |
---|
75 | void cmdl_addinsert(cmd_line* cmd, char in); |
---|
76 | void cmdl_enterloop(cmd_line* cmd); |
---|
77 | void cmdl_exec(cmd_line* cmd); |
---|
78 | void cmdl_setexit(cmd_line* cmd, int exit); |
---|
79 | int cmdl_getexit(cmd_line* cmd); |
---|
80 | void cmdl_clearoutput(cmd_line* cmd); |
---|
81 | void cmdl_clearbuffer(cmd_line* cmd); |
---|
82 | int cmdl_printf(cmd_line* cmd, const char *format, ...); |
---|
83 | char* cmdl_getoutput(cmd_line* cmd); |
---|
84 | //void cmdl_addoutput_str(cmd_line* cmd, char output[CMDL_OUTPUT_SIZE]); |
---|
85 | void cmdl_addstr(cmd_line* cmd, char* str); |
---|
86 | int cmdl_movecursor(cmd_line* cmd, int direction); |
---|
87 | char* cmdl_getbuffer(cmd_line* cmd); |
---|
88 | void cmdl_addchar(cmd_line* cmd, char in); |
---|
89 | int cmdl_check(cmd_line* cmd); |
---|
90 | void cmdl_del(cmd_line* cmd); |
---|
91 | cmd_line* cmdl_create(); |
---|
92 | void cmdl_free(cmd_line* cmd); |
---|
93 | char *cmdl_getprompt(cmd_line* cmd); |
---|
94 | void cmdl_setpropmt(cmd_line* cmd, char prompt[CMDL_PROMPT_SIZE]); |
---|
95 | cmdl_param_list* cmdl_getparams(const char* command); |
---|
96 | void cmdl_tabcomplete(cmd_line *cmd); |
---|
97 | |
---|
98 | #endif |
---|
99 | |
---|