kcommand.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /** @file kcommand.h
  2. *
  3. * @brief Klish scheme's "command" entry
  4. */
  5. #ifndef _klish_kcommand_h
  6. #define _klish_kcommand_h
  7. #include <klish/icommand.h>
  8. #include <klish/kparam.h>
  9. #include <klish/kaction.h>
  10. typedef struct kcommand_s kcommand_t;
  11. typedef struct icommand_s {
  12. char *name;
  13. char *help;
  14. iparam_t * (*params)[];
  15. iaction_t * (*actions)[];
  16. } icommand_t;
  17. typedef enum {
  18. KCOMMAND_ERROR_OK,
  19. KCOMMAND_ERROR_INTERNAL,
  20. KCOMMAND_ERROR_ALLOC,
  21. KCOMMAND_ERROR_ATTR_NAME,
  22. KCOMMAND_ERROR_ATTR_HELP,
  23. } kcommand_error_e;
  24. C_DECL_BEGIN
  25. // icommand_t
  26. char *icommand_to_text(const icommand_t *icommand, int level);
  27. // kcommand_t
  28. kcommand_t *kcommand_new(const icommand_t *info, kcommand_error_e *error);
  29. void kcommand_free(kcommand_t *command);
  30. const char *kcommand_strerror(kcommand_error_e error);
  31. bool_t kcommand_parse(kcommand_t *command, const icommand_t *info,
  32. kcommand_error_e *error);
  33. const char *kcommand_name(const kcommand_t *command);
  34. bool_t kcommand_set_name(kcommand_t *command, const char *name);
  35. const char *kcommand_help(const kcommand_t *command);
  36. bool_t kcommand_set_help(kcommand_t *command, const char *help);
  37. bool_t kcommand_add_param(kcommand_t *command, kparam_t *param);
  38. kparam_t *kcommand_find_param(const kcommand_t *command, const char *name);
  39. bool_t kcommand_add_action(kcommand_t *command, kaction_t *action);
  40. bool_t kcommand_nested_from_icommand(kcommand_t *kcommand, icommand_t *icommand,
  41. faux_error_t *error_stack);
  42. kcommand_t *kcommand_from_icommand(icommand_t *icommand, faux_error_t *error_stack);
  43. C_DECL_END
  44. #endif // _klish_kcommand_h