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