X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fresult.c;h=907823d8b5b21d4fb83768d071be3a1f1ff263a9;hb=118defb3246857a80d36ee1a8ee8b2b789fb6f09;hp=f151160e8159113cd08e67dbd41da2877c7f4407;hpb=6bd950c979c31a5cf84c7bdaaad9bccc789a0eb1;p=awesomized%2Flibmemcached diff --git a/libmemcached/result.c b/libmemcached/result.c index f151160e..907823d8 100644 --- a/libmemcached/result.c +++ b/libmemcached/result.c @@ -17,7 +17,18 @@ */ #include "common.h" -memcached_result_st *memcached_result_create(memcached_st *memc, +static inline void _result_init(memcached_result_st *self, + const memcached_st *memc) +{ + self->item_flags= 0; + self->item_expiration= 0; + self->key_length= 0; + self->item_cas= 0; + self->root= memc; + self->item_key[0]= 0; +} + +memcached_result_st *memcached_result_create(const memcached_st *memc, memcached_result_st *ptr) { WATCHPOINT_ASSERT(memc); @@ -26,19 +37,22 @@ memcached_result_st *memcached_result_create(memcached_st *memc, /* Saving malloc calls :) */ if (ptr) { - memset(ptr, 0, sizeof(memcached_result_st)); + ptr->options.is_allocated= false; } else { - ptr= libmemcached_calloc(memc, 1, sizeof(memcached_result_st)); + ptr= libmemcached_malloc(memc, sizeof(memcached_result_st)); if (ptr == NULL) return NULL; + ptr->options.is_allocated= true; } ptr->options.is_initialized= true; + _result_init(ptr, memc); + ptr->root= memc; memcached_string_create(memc, &ptr->value, 0); WATCHPOINT_ASSERT_INITIALIZED(&ptr->value); @@ -51,9 +65,9 @@ void memcached_result_reset(memcached_result_st *ptr) { ptr->key_length= 0; memcached_string_reset(&ptr->value); - ptr->flags= 0; - ptr->cas= 0; - ptr->expiration= 0; + ptr->item_flags= 0; + ptr->item_cas= 0; + ptr->item_expiration= 0; } void memcached_result_free(memcached_result_st *ptr) @@ -73,3 +87,10 @@ void memcached_result_free(memcached_result_st *ptr) ptr->options.is_initialized= false; } } + +memcached_return_t memcached_result_set_value(memcached_result_st *ptr, + const char *value, + size_t length) +{ + return memcached_string_append(&ptr->value, value, length); +}