pair.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * pair.c
  3. */
  4. #include "private.h"
  5. #include "lub/string.h"
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <assert.h>
  9. /*--------------------------------------------------------- */
  10. int lub_pair_compare(const void *first, const void *second)
  11. {
  12. const lub_pair_t *f = (const lub_pair_t *)first;
  13. const lub_pair_t *s = (const lub_pair_t *)second;
  14. return strcmp(f->name, s->name);
  15. }
  16. /*--------------------------------------------------------- */
  17. void lub_pair_init(lub_pair_t *this, const char *name, const char *value)
  18. {
  19. assert(this);
  20. memset(this, 0, sizeof(*this));
  21. this->name = lub_string_dup(name);
  22. this->value = lub_string_dup(value);
  23. }
  24. /*--------------------------------------------------------- */
  25. lub_pair_t *lub_pair_new(const char *name, const char *value)
  26. {
  27. lub_pair_t *this;
  28. this = malloc(sizeof(*this));
  29. if (this)
  30. lub_pair_init(this, name, value);
  31. return this;
  32. }
  33. /*--------------------------------------------------------- */
  34. void lub_pair_fini(lub_pair_t *this)
  35. {
  36. assert(this);
  37. lub_string_free(this->name);
  38. lub_string_free(this->value);
  39. }
  40. /*--------------------------------------------------------- */
  41. void lub_pair_free(lub_pair_t *this)
  42. {
  43. assert(this);
  44. lub_pair_fini(this);
  45. free(this);
  46. }
  47. /*--------------------------------------------------------- */
  48. const char *lub_pair__get_name(const lub_pair_t *this)
  49. {
  50. assert(this);
  51. return this->name;
  52. }
  53. /*--------------------------------------------------------- */
  54. void lub_pair__set_name(lub_pair_t *this, const char *name)
  55. {
  56. assert(this);
  57. lub_string_free(this->name);
  58. this->name = lub_string_dup(name);
  59. }
  60. /*--------------------------------------------------------- */
  61. const char *lub_pair__get_value(const lub_pair_t *this)
  62. {
  63. assert(this);
  64. return this->value;
  65. }
  66. /*--------------------------------------------------------- */
  67. void lub_pair__set_value(lub_pair_t *this, const char *value)
  68. {
  69. assert(this);
  70. lub_string_free(this->value);
  71. this->value = lub_string_dup(value);
  72. }
  73. /*--------------------------------------------------------- */