1*76404edcSAsim Jamshed #include "array.h"
2*76404edcSAsim Jamshed 
3*76404edcSAsim Jamshed #include <string.h>
4*76404edcSAsim Jamshed #include <stdio.h>
5*76404edcSAsim Jamshed #include <stdlib.h>
6*76404edcSAsim Jamshed 
data_array_copy(const data_unset * s)7*76404edcSAsim Jamshed static data_unset *data_array_copy(const data_unset *s) {
8*76404edcSAsim Jamshed 	data_array *src = (data_array *)s;
9*76404edcSAsim Jamshed 	data_array *ds = data_array_init();
10*76404edcSAsim Jamshed 
11*76404edcSAsim Jamshed 	buffer_copy_string_buffer(ds->key, src->key);
12*76404edcSAsim Jamshed 	array_free(ds->value);
13*76404edcSAsim Jamshed 	ds->value = array_init_array(src->value);
14*76404edcSAsim Jamshed 	ds->is_index_key = src->is_index_key;
15*76404edcSAsim Jamshed 	return (data_unset *)ds;
16*76404edcSAsim Jamshed }
17*76404edcSAsim Jamshed 
data_array_free(data_unset * d)18*76404edcSAsim Jamshed static void data_array_free(data_unset *d) {
19*76404edcSAsim Jamshed 	data_array *ds = (data_array *)d;
20*76404edcSAsim Jamshed 
21*76404edcSAsim Jamshed 	buffer_free(ds->key);
22*76404edcSAsim Jamshed 	array_free(ds->value);
23*76404edcSAsim Jamshed 
24*76404edcSAsim Jamshed 	free(d);
25*76404edcSAsim Jamshed }
26*76404edcSAsim Jamshed 
data_array_reset(data_unset * d)27*76404edcSAsim Jamshed static void data_array_reset(data_unset *d) {
28*76404edcSAsim Jamshed 	data_array *ds = (data_array *)d;
29*76404edcSAsim Jamshed 
30*76404edcSAsim Jamshed 	/* reused array elements */
31*76404edcSAsim Jamshed 	buffer_reset(ds->key);
32*76404edcSAsim Jamshed 	array_reset(ds->value);
33*76404edcSAsim Jamshed }
34*76404edcSAsim Jamshed 
data_array_insert_dup(data_unset * dst,data_unset * src)35*76404edcSAsim Jamshed static int data_array_insert_dup(data_unset *dst, data_unset *src) {
36*76404edcSAsim Jamshed 	UNUSED(dst);
37*76404edcSAsim Jamshed 
38*76404edcSAsim Jamshed 	src->free(src);
39*76404edcSAsim Jamshed 
40*76404edcSAsim Jamshed 	return 0;
41*76404edcSAsim Jamshed }
42*76404edcSAsim Jamshed 
data_array_print(const data_unset * d,int depth)43*76404edcSAsim Jamshed static void data_array_print(const data_unset *d, int depth) {
44*76404edcSAsim Jamshed 	data_array *ds = (data_array *)d;
45*76404edcSAsim Jamshed 
46*76404edcSAsim Jamshed 	array_print(ds->value, depth);
47*76404edcSAsim Jamshed }
48*76404edcSAsim Jamshed 
data_array_init(void)49*76404edcSAsim Jamshed data_array *data_array_init(void) {
50*76404edcSAsim Jamshed 	data_array *ds;
51*76404edcSAsim Jamshed 
52*76404edcSAsim Jamshed 	ds = calloc(1, sizeof(*ds));
53*76404edcSAsim Jamshed 
54*76404edcSAsim Jamshed 	ds->key = buffer_init();
55*76404edcSAsim Jamshed 	ds->value = array_init();
56*76404edcSAsim Jamshed 
57*76404edcSAsim Jamshed 	ds->copy = data_array_copy;
58*76404edcSAsim Jamshed 	ds->free = data_array_free;
59*76404edcSAsim Jamshed 	ds->reset = data_array_reset;
60*76404edcSAsim Jamshed 	ds->insert_dup = data_array_insert_dup;
61*76404edcSAsim Jamshed 	ds->print = data_array_print;
62*76404edcSAsim Jamshed 	ds->type = TYPE_ARRAY;
63*76404edcSAsim Jamshed 
64*76404edcSAsim Jamshed 	return ds;
65*76404edcSAsim Jamshed }
66