8 static data_unset
*data_array_copy(const data_unset
*s
) {
9 data_array
*src
= (data_array
*)s
;
10 data_array
*ds
= data_array_init();
12 buffer_copy_buffer(ds
->key
, src
->key
);
13 array_free(ds
->value
);
14 ds
->value
= array_init_array(src
->value
);
15 ds
->is_index_key
= src
->is_index_key
;
16 return (data_unset
*)ds
;
19 static void data_array_free(data_unset
*d
) {
20 data_array
*ds
= (data_array
*)d
;
23 array_free(ds
->value
);
28 static void data_array_reset(data_unset
*d
) {
29 data_array
*ds
= (data_array
*)d
;
31 /* reused array elements */
32 buffer_reset(ds
->key
);
33 array_reset(ds
->value
);
36 static int data_array_insert_dup(data_unset
*dst
, data_unset
*src
) {
44 static void data_array_print(const data_unset
*d
, int depth
) {
45 data_array
*ds
= (data_array
*)d
;
47 array_print(ds
->value
, depth
);
50 data_array
*data_array_init(void) {
51 static const struct data_methods fn
= {
55 data_array_insert_dup
,
60 ds
= calloc(1, sizeof(*ds
));
61 force_assert(NULL
!= ds
);
63 ds
->key
= buffer_init();
64 ds
->value
= array_init();
66 ds
->type
= TYPE_ARRAY
;