Home | History | Annotate | Download | only in include
      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 
    100