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