9 static data_unset
*data_count_copy(const data_unset
*s
) {
10 data_count
*src
= (data_count
*)s
;
11 data_count
*ds
= data_count_init();
13 buffer_copy_buffer(ds
->key
, src
->key
);
14 ds
->count
= src
->count
;
15 ds
->is_index_key
= src
->is_index_key
;
16 return (data_unset
*)ds
;
19 static void data_count_free(data_unset
*d
) {
20 data_count
*ds
= (data_count
*)d
;
27 static void data_count_reset(data_unset
*d
) {
28 data_count
*ds
= (data_count
*)d
;
30 buffer_reset(ds
->key
);
35 static int data_count_insert_dup(data_unset
*dst
, data_unset
*src
) {
36 data_count
*ds_dst
= (data_count
*)dst
;
37 data_count
*ds_src
= (data_count
*)src
;
39 ds_dst
->count
+= ds_src
->count
;
46 static void data_count_print(const data_unset
*d
, int depth
) {
47 data_count
*ds
= (data_count
*)d
;
50 fprintf(stdout
, "count(%d)", ds
->count
);
54 data_count
*data_count_init(void) {
57 ds
= calloc(1, sizeof(*ds
));
58 force_assert(NULL
!= ds
);
60 ds
->key
= buffer_init();
63 ds
->copy
= data_count_copy
;
64 ds
->free
= data_count_free
;
65 ds
->reset
= data_count_reset
;
66 ds
->insert_dup
= data_count_insert_dup
;
67 ds
->print
= data_count_print
;
68 ds
->type
= TYPE_COUNT
;