kscheme.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /** @file kscheme.h
  2. *
  3. * @brief Klish Scheme
  4. */
  5. #ifndef _klish_kscheme_h
  6. #define _klish_kscheme_h
  7. #include <faux/list.h>
  8. #include <klish/kplugin.h>
  9. #include <klish/kptype.h>
  10. #include <klish/kview.h>
  11. #include <klish/kcontext_base.h>
  12. typedef struct kscheme_s kscheme_t;
  13. typedef faux_list_node_t kscheme_views_node_t;
  14. typedef faux_list_node_t kscheme_ptypes_node_t;
  15. typedef faux_list_node_t kscheme_plugins_node_t;
  16. C_DECL_BEGIN
  17. kscheme_t *kscheme_new(void);
  18. void kscheme_free(kscheme_t *scheme);
  19. // views
  20. bool_t kscheme_add_view(kscheme_t *scheme, kview_t *view);
  21. kview_t *kscheme_find_view(const kscheme_t *scheme, const char *name);
  22. ssize_t kscheme_views_len(const kscheme_t *scheme);
  23. kscheme_views_node_t *kscheme_views_iter(const kscheme_t *scheme);
  24. kview_t *kscheme_views_each(kscheme_views_node_t **iter);
  25. // ptypes
  26. bool_t kscheme_add_ptype(kscheme_t *scheme, kptype_t *ptype);
  27. kptype_t *kscheme_find_ptype(const kscheme_t *scheme, const char *name);
  28. ssize_t kscheme_ptypes_len(const kscheme_t *scheme);
  29. kscheme_ptypes_node_t *kscheme_ptypes_iter(const kscheme_t *scheme);
  30. kptype_t *kscheme_ptypes_each(kscheme_ptypes_node_t **iter);
  31. // plugins
  32. bool_t kscheme_add_plugin(kscheme_t *scheme, kplugin_t *plugin);
  33. kplugin_t *kscheme_find_plugin(const kscheme_t *scheme, const char *name);
  34. ssize_t kscheme_plugins_len(const kscheme_t *scheme);
  35. kscheme_plugins_node_t *kscheme_plugins_iter(const kscheme_t *scheme);
  36. kplugin_t *kscheme_plugins_each(kscheme_plugins_node_t **iter);
  37. C_DECL_END
  38. #endif // _klish_kscheme_h