knspace.c 987 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <assert.h>
  5. #include <faux/str.h>
  6. #include <faux/list.h>
  7. #include <faux/error.h>
  8. #include <klish/khelper.h>
  9. #include <klish/kview.h>
  10. #include <klish/knspace.h>
  11. struct knspace_s {
  12. char *view_ref;
  13. kview_t *view;
  14. char *prefix;
  15. };
  16. // Simple attributes
  17. // Name
  18. KGET_STR(nspace, view_ref);
  19. // View
  20. KGET(nspace, kview_t *, view);
  21. KSET(nspace, kview_t *, view);
  22. // Prefix
  23. KGET_STR(nspace, prefix);
  24. KSET_STR(nspace, prefix);
  25. knspace_t *knspace_new(const char *view_ref)
  26. {
  27. knspace_t *nspace = NULL;
  28. if (faux_str_is_empty(view_ref))
  29. return NULL;
  30. nspace = faux_zmalloc(sizeof(*nspace));
  31. assert(nspace);
  32. if (!nspace)
  33. return NULL;
  34. // Initialize
  35. nspace->view_ref = faux_str_dup(view_ref);
  36. nspace->view = NULL;
  37. nspace->prefix = NULL;
  38. return nspace;
  39. }
  40. void knspace_free(knspace_t *nspace)
  41. {
  42. if (!nspace)
  43. return;
  44. faux_str_free(nspace->view_ref);
  45. faux_str_free(nspace->prefix);
  46. faux_free(nspace);
  47. }