kview.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /** @file view.h
  2. *
  3. * @brief Klish scheme's "view" entry
  4. */
  5. #ifndef _klish_kview_h
  6. #define _klish_kview_h
  7. #include <faux/faux.h>
  8. #include <faux/list.h>
  9. #include <klish/kcommand.h>
  10. #include <klish/knspace.h>
  11. typedef struct kview_s kview_t;
  12. // kview_t and knspace_t have a loop of references
  13. typedef struct knspace_s knspace_t;
  14. typedef faux_list_node_t kview_commands_node_t;
  15. typedef faux_list_node_t kview_nspaces_node_t;
  16. C_DECL_BEGIN
  17. kview_t *kview_new(const char *name);
  18. void kview_free(kview_t *view);
  19. const char *kview_name(const kview_t *view);
  20. // COMMANDs
  21. faux_list_t *kview_commands(const kview_t *view);
  22. bool_t kview_add_commands(kview_t *view, kcommand_t *command);
  23. kcommand_t *kview_find_command(const kview_t *view, const char *name);
  24. ssize_t kview_commands_len(const kview_t *view);
  25. kview_commands_node_t *kview_commands_iter(const kview_t *view);
  26. kcommand_t *kview_commands_each(kview_commands_node_t **iter);
  27. // NAMESPACEs
  28. faux_list_t *kview_nspaces(const kview_t *view);
  29. bool_t kview_add_nspaces(kview_t *view, knspace_t *nspace);
  30. ssize_t kview_nspaces_len(const kview_t *view);
  31. kview_nspaces_node_t *kview_nspaces_iter(const kview_t *view);
  32. knspace_t *kview_nspaces_each(kview_nspaces_node_t **iter);
  33. C_DECL_END
  34. #endif // _klish_kview_h