pair.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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(void *data)
  42. {
  43. assert(data);
  44. lub_pair_t *this = (lub_pair_t *)data;
  45. lub_pair_fini(this);
  46. free(this);
  47. }
  48. /*--------------------------------------------------------- */
  49. const char *lub_pair__get_name(const lub_pair_t *this)
  50. {
  51. assert(this);
  52. return this->name;
  53. }
  54. /*--------------------------------------------------------- */
  55. void lub_pair__set_name(lub_pair_t *this, const char *name)
  56. {
  57. assert(this);
  58. lub_string_free(this->name);
  59. this->name = lub_string_dup(name);
  60. }
  61. /*--------------------------------------------------------- */
  62. const char *lub_pair__get_value(const lub_pair_t *this)
  63. {
  64. assert(this);
  65. return this->value;
  66. }
  67. /*--------------------------------------------------------- */
  68. void lub_pair__set_value(lub_pair_t *this, const char *value)
  69. {
  70. assert(this);
  71. lub_string_free(this->value);
  72. this->value = lub_string_dup(value);
  73. }
  74. /*--------------------------------------------------------- */