kaction.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /** @file kaction.h
  2. *
  3. * @brief Klish scheme's "action" entry
  4. */
  5. #ifndef _klish_kaction_h
  6. #define _klish_kaction_h
  7. #include <faux/error.h>
  8. #include <klish/ksym.h>
  9. #include <klish/kplugin.h>
  10. typedef struct kaction_s kaction_t;
  11. typedef enum {
  12. KACTION_COND_NONE,
  13. KACTION_COND_FAIL,
  14. KACTION_COND_SUCCESS,
  15. KACTION_COND_ALWAYS,
  16. KACTION_COND_NEVER,
  17. } kaction_cond_e;
  18. typedef enum {
  19. KACTION_IO_NONE,
  20. KACTION_IO_FALSE,
  21. KACTION_IO_TRUE,
  22. KACTION_IO_TTY,
  23. KACTION_IO_MAX,
  24. } kaction_io_e;
  25. typedef void (*kaction_udata_free_fn)(void *data);
  26. C_DECL_BEGIN
  27. kaction_t *kaction_new(void);
  28. void kaction_free(kaction_t *action);
  29. const char *kaction_sym_ref(const kaction_t *action);
  30. bool_t kaction_set_sym_ref(kaction_t *action, const char *sym_ref);
  31. const char *kaction_lock(const kaction_t *action);
  32. bool_t kaction_set_lock(kaction_t *action, const char *lock);
  33. bool_t kaction_interrupt(const kaction_t *action);
  34. bool_t kaction_set_interrupt(kaction_t *action, bool_t interrupt);
  35. kaction_io_e kaction_in(const kaction_t *action);
  36. bool_t kaction_set_in(kaction_t *action, kaction_io_e in);
  37. kaction_io_e kaction_out(const kaction_t *action);
  38. bool_t kaction_set_out(kaction_t *action, kaction_io_e out);
  39. kaction_cond_e kaction_exec_on(const kaction_t *action);
  40. bool_t kaction_set_exec_on(kaction_t *action, kaction_cond_e exec_on);
  41. bool_t kaction_meet_exec_conditions(const kaction_t *action, int current_retcode);
  42. bool_t kaction_update_retcode(const kaction_t *action);
  43. bool_t kaction_set_update_retcode(kaction_t *action, bool_t update_retcode);
  44. const char *kaction_script(const kaction_t *action);
  45. bool_t kaction_set_script(kaction_t *action, const char *script);
  46. ksym_t *kaction_sym(const kaction_t *action);
  47. bool_t kaction_set_sym(kaction_t *action, ksym_t *sym);
  48. kplugin_t *kaction_plugin(const kaction_t *action);
  49. bool_t kaction_set_plugin(kaction_t *action, kplugin_t *plugin);
  50. tri_t kaction_permanent(const kaction_t *action);
  51. bool_t kaction_set_permanent(kaction_t *action, tri_t permanent);
  52. bool_t kaction_is_permanent(const kaction_t *action);
  53. tri_t kaction_sync(const kaction_t *action);
  54. bool_t kaction_set_sync(kaction_t *action, tri_t sync);
  55. bool_t kaction_is_sync(const kaction_t *action);
  56. void *kaction_udata(const kaction_t *action);
  57. bool_t kaction_set_udata(kaction_t *action, void *data,
  58. kaction_udata_free_fn udata_free_fn);
  59. C_DECL_END
  60. #endif // _klish_kaction_h