ischeme.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /** @file ischeme.h
  2. *
  3. * @brief Klish Scheme
  4. */
  5. #ifndef _klish_ischeme_h
  6. #define _klish_ischeme_h
  7. #include <faux/error.h>
  8. #include <klish/iptype.h>
  9. #include <klish/iplugin.h>
  10. #include <klish/iview.h>
  11. #include <klish/inspace.h>
  12. #include <klish/kscheme.h>
  13. #define VIEW_LIST .views = &(iview_t * []) {
  14. #define END_VIEW_LIST NULL }
  15. #define VIEW &(iview_t)
  16. #define PTYPE_LIST .ptypes = &(iptype_t * []) {
  17. #define END_PTYPE_LIST NULL }
  18. #define PTYPE &(iptype_t)
  19. #define COMMAND_LIST .commands = &(icommand_t * []) {
  20. #define END_COMMAND_LIST NULL }
  21. #define COMMAND &(icommand_t)
  22. #define PARAM_LIST .params = &(iparam_t * []) {
  23. #define END_PARAM_LIST NULL }
  24. #define PARAM &(iparam_t)
  25. #define ACTION_LIST .actions = &(iaction_t * []) {
  26. #define END_ACTION_LIST NULL }
  27. #define ACTION &(iaction_t)
  28. #define PLUGIN_LIST .plugins = &(iplugin_t * []) {
  29. #define END_PLUGIN_LIST NULL }
  30. #define PLUGIN &(iplugin_t)
  31. #define NSPACE_LIST .nspaces = &(inspace_t * []) {
  32. #define END_NSPACE_LIST NULL }
  33. #define NSPACE &(inspace_t)
  34. typedef struct ischeme_s {
  35. char *name;
  36. iplugin_t * (*plugins)[];
  37. iptype_t * (*ptypes)[];
  38. iview_t * (*views)[];
  39. } ischeme_t;
  40. C_DECL_BEGIN
  41. bool_t ischeme_parse_nested(const ischeme_t *ischeme, kscheme_t *kscheme,
  42. faux_error_t *error);
  43. bool_t ischeme_load(const ischeme_t *ischeme, kscheme_t *kscheme,
  44. faux_error_t *error);
  45. char *ischeme_deploy(const kscheme_t *scheme, int level);
  46. C_DECL_END
  47. #endif // _klish_ischeme_h