1#include "array.h" 2 3#include <stdio.h> 4#include <stdlib.h> 5#include <string.h> 6 7static data_unset *data_integer_copy(const data_unset *s) { 8 data_integer *src = (data_integer *)s; 9 data_integer *ds = data_integer_init(); 10 11 buffer_copy_buffer(ds->key, src->key); 12 ds->is_index_key = src->is_index_key; 13 ds->value = src->value; 14 return (data_unset *)ds; 15} 16 17static void data_integer_free(data_unset *d) { 18 data_integer *ds = (data_integer *)d; 19 20 buffer_free(ds->key); 21 22 free(d); 23} 24 25static void data_integer_reset(data_unset *d) { 26 data_integer *ds = (data_integer *)d; 27 28 /* reused integer elements */ 29 buffer_reset(ds->key); 30 ds->value = 0; 31} 32 33static int data_integer_insert_dup(data_unset *dst, data_unset *src) { 34 UNUSED(dst); 35 36 src->free(src); 37 38 return 0; 39} 40 41static void data_integer_print(const data_unset *d, int depth) { 42 data_integer *ds = (data_integer *)d; 43 UNUSED(depth); 44 45 fprintf(stdout, "%d", ds->value); 46} 47 48 49data_integer *data_integer_init(void) { 50 data_integer *ds; 51 52 ds = calloc(1, sizeof(*ds)); 53 54 ds->key = buffer_init(); 55 ds->value = 0; 56 57 ds->copy = data_integer_copy; 58 ds->free = data_integer_free; 59 ds->reset = data_integer_reset; 60 ds->insert_dup = data_integer_insert_dup; 61 ds->print = data_integer_print; 62 ds->type = TYPE_INTEGER; 63 64 return ds; 65} 66