kscheme.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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/kentry.h>
  12. #include <klish/kcontext_base.h>
  13. typedef struct kscheme_s kscheme_t;
  14. typedef faux_list_node_t kscheme_views_node_t;
  15. typedef faux_list_node_t kscheme_ptypes_node_t;
  16. typedef faux_list_node_t kscheme_plugins_node_t;
  17. typedef faux_list_node_t kscheme_entrys_node_t;
  18. C_DECL_BEGIN
  19. kscheme_t *kscheme_new(void);
  20. void kscheme_free(kscheme_t *scheme);
  21. bool_t kscheme_prepare(kscheme_t *scheme, kcontext_t *context, faux_error_t *error);
  22. bool_t kscheme_fini(kscheme_t *scheme, kcontext_t *context, faux_error_t *error);
  23. // VIEWs
  24. faux_list_t *kscheme_views(const kscheme_t *scheme);
  25. bool_t kscheme_add_views(kscheme_t *scheme, kview_t *view);
  26. kview_t *kscheme_find_view(const kscheme_t *scheme, const char *name);
  27. ssize_t kscheme_views_len(const kscheme_t *scheme);
  28. kscheme_views_node_t *kscheme_views_iter(const kscheme_t *scheme);
  29. kview_t *kscheme_views_each(kscheme_views_node_t **iter);
  30. // PTYPEs
  31. faux_list_t *kscheme_ptypes(const kscheme_t *scheme);
  32. bool_t kscheme_add_ptypes(kscheme_t *scheme, kptype_t *ptype);
  33. kptype_t *kscheme_find_ptype(const kscheme_t *scheme, const char *name);
  34. ssize_t kscheme_ptypes_len(const kscheme_t *scheme);
  35. kscheme_ptypes_node_t *kscheme_ptypes_iter(const kscheme_t *scheme);
  36. kptype_t *kscheme_ptypes_each(kscheme_ptypes_node_t **iter);
  37. // PLUGINs
  38. faux_list_t *kscheme_plugins(const kscheme_t *scheme);
  39. bool_t kscheme_add_plugins(kscheme_t *scheme, kplugin_t *plugin);
  40. kplugin_t *kscheme_find_plugin(const kscheme_t *scheme, const char *name);
  41. ssize_t kscheme_plugins_len(const kscheme_t *scheme);
  42. kscheme_plugins_node_t *kscheme_plugins_iter(const kscheme_t *scheme);
  43. kplugin_t *kscheme_plugins_each(kscheme_plugins_node_t **iter);
  44. // ENTRYs
  45. kentry_t *kscheme_find_entry_by_path(const kscheme_t *scheme, const char *name);
  46. faux_list_t *kscheme_entrys(const kscheme_t *scheme);
  47. bool_t kscheme_add_entrys(kscheme_t *scheme, kentry_t *entry);
  48. kentry_t *kscheme_find_entry(const kscheme_t *scheme, const char *name);
  49. ssize_t kscheme_entrys_len(const kscheme_t *scheme);
  50. kscheme_entrys_node_t *kscheme_entrys_iter(const kscheme_t *scheme);
  51. kentry_t *kscheme_entrys_each(kscheme_entrys_node_t **iter);
  52. C_DECL_END
  53. #endif // _klish_kscheme_h