You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cmdlinelib.h 2.1KB

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