kparam.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /** @file kparam.h
  2. *
  3. * @brief Klish scheme's "param" entry
  4. */
  5. #ifndef _klish_kparam_h
  6. #define _klish_kparam_h
  7. #include <faux/error.h>
  8. typedef struct kparam_s kparam_t;
  9. typedef struct iparam_s iparam_t;
  10. struct iparam_s {
  11. char *name;
  12. char *help;
  13. char *ptype;
  14. iparam_t * (*params)[]; // Nested PARAMs
  15. };
  16. typedef enum {
  17. KPARAM_ERROR_OK,
  18. KPARAM_ERROR_INTERNAL,
  19. KPARAM_ERROR_ALLOC,
  20. KPARAM_ERROR_ATTR_NAME,
  21. KPARAM_ERROR_ATTR_HELP,
  22. KPARAM_ERROR_ATTR_PTYPE,
  23. } kparam_error_e;
  24. C_DECL_BEGIN
  25. // iparam_t
  26. char *iparam_to_text(const iparam_t *iparam, int level);
  27. // kparam_t
  28. kparam_t *kparam_new(const iparam_t *info, kparam_error_e *error);
  29. void kparam_free(kparam_t *param);
  30. const char *kparam_strerror(kparam_error_e error);
  31. bool_t kparam_parse(kparam_t *param, const iparam_t *info, kparam_error_e *error);
  32. const char *kparam_name(const kparam_t *param);
  33. bool_t kparam_set_name(kparam_t *param, const char *name);
  34. const char *kparam_help(const kparam_t *param);
  35. bool_t kparam_set_help(kparam_t *param, const char *help);
  36. const char *kparam_ptype_ref(const kparam_t *param);
  37. bool_t kparam_set_ptype_ref(kparam_t *param, const char *ptype_ref);
  38. bool_t kparam_add_param(kparam_t *param, kparam_t *nested_param);
  39. kparam_t *kparam_find_param(const kparam_t *param, const char *name);
  40. bool_t kparam_nested_from_iparam(kparam_t *kparam, iparam_t *iparam,
  41. faux_error_t *error_stack);
  42. kparam_t *kparam_from_iparam(iparam_t *iparam, faux_error_t *error_stack);
  43. C_DECL_END
  44. #endif // _klish_kparam_h