klevel.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /** @file klevel.c
  2. */
  3. #include <assert.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <faux/str.h>
  8. #include <klish/khelper.h>
  9. #include <klish/kpath.h>
  10. #include <klish/kentry.h>
  11. struct klevel_s {
  12. const kentry_t *entry;
  13. };
  14. // ENTRY
  15. KGET(level, const kentry_t *, entry);
  16. klevel_t *klevel_new(const kentry_t *entry)
  17. {
  18. klevel_t *level = NULL;
  19. if (!entry)
  20. return NULL;
  21. level = faux_zmalloc(sizeof(*level));
  22. assert(level);
  23. if (!level)
  24. return NULL;
  25. // Initialize
  26. level->entry = entry;
  27. return level;
  28. }
  29. void klevel_free(klevel_t *level)
  30. {
  31. if (!level)
  32. return;
  33. faux_free(level);
  34. }
  35. klevel_t *klevel_clone(const klevel_t *level)
  36. {
  37. klevel_t *new_level = NULL;
  38. assert(level);
  39. if (!level)
  40. return NULL;
  41. new_level = klevel_new(klevel_entry(level));
  42. return new_level;
  43. }
  44. bool_t klevel_is_equal(const klevel_t *f, const klevel_t *s)
  45. {
  46. if (!f && !s)
  47. return BOOL_TRUE;
  48. if (!f || !s)
  49. return BOOL_FALSE;
  50. if (klevel_entry(f) == klevel_entry(s))
  51. return BOOL_TRUE;
  52. return BOOL_FALSE;
  53. }