kscheme.h 846 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /** @file kscheme.h
  2. *
  3. * @brief Klish Scheme
  4. */
  5. #ifndef _klish_kscheme_h
  6. #define _klish_kscheme_h
  7. #include <klish/kptype.h>
  8. #include <klish/kaction.h>
  9. #include <klish/kparam.h>
  10. #include <klish/kcommand.h>
  11. #include <klish/kview.h>
  12. #define VIEW_LIST .views = &(iview_t * []) {
  13. #define END_VIEW_LIST NULL }
  14. #define VIEW &(iview_t)
  15. #define COMMAND_LIST .commands = &(icommand_t * []) {
  16. #define END_COMMAND_LIST NULL }
  17. #define COMMAND &(icommand_t)
  18. typedef struct kscheme_s kscheme_t;
  19. typedef struct ischeme_s {
  20. char *name;
  21. iptype_t * (*ptypes)[];
  22. iview_t * (*views)[];
  23. } ischeme_t;
  24. C_DECL_BEGIN
  25. kscheme_t *kscheme_new(void);
  26. void kscheme_free(kscheme_t *scheme);
  27. bool_t kscheme_add_view(kscheme_t *scheme, kview_t *view);
  28. kview_t *kscheme_find_view(const kscheme_t *scheme, const char *name);
  29. C_DECL_END
  30. #endif // _klish_kscheme_h