Add new method which allows someone to "take" a value from a result object.
[awesomized/libmemcached] / docs / memcached_result_st.rst
index 295b2229ebb669a2ede77e227de2a8d7723e50da..9b60f1872fe908bfba56c7bad1d3b0acf16147ca 100644 (file)
@@ -10,21 +10,23 @@ SYNOPSIS
 
 .. c:type:: memcached_result_st
 
-.. c:function:: memcached_result_st * memcached_result_create (memcached_st *ptr, memcached_result_st *result);
+.. c:function:: memcached_result_st * memcached_result_create (memcached_st *ptr, memcached_result_st *result)
 
-.. c:function:: void memcached_result_free (memcached_result_st *result);
+.. c:function:: void memcached_result_free (memcached_result_st *result)
 
-.. c:function:: const char * memcached_result_key_value (memcached_result_st *result);
+.. c:function:: const char * memcached_result_key_value (memcached_result_st *result)
 
-.. c:function:: size_t memcached_result_key_length (const memcached_result_st *result);
+.. c:function:: size_t memcached_result_key_length (const memcached_result_st *result)
 
-.. c:function:: const char *memcached_result_value (memcached_result_st *ptr);
+.. c:function:: const char *memcached_result_value (memcached_result_st *ptr)
 
-.. c:function:: size_t memcached_result_length (const memcached_result_st *ptr);
+.. c:function:: char *memcached_result_take_value (memcached_result_st *ptr)
+
+.. c:function:: size_t memcached_result_length (const memcached_result_st *ptr)
 
 .. c:function:: uint32_t memcached_result_flags (const memcached_result_st *result)
 
-.. c:function:: uint64_t memcached_result_cas (const memcached_result_st *result);
+.. c:function:: uint64_t memcached_result_cas (const memcached_result_st *result)
 
 .. c:function:: memcached_return_t memcached_result_set_value (memcached_result_st *ptr, const char *value, size_t length)
 
@@ -52,39 +54,45 @@ objects over char \* return functions.
 The structure of :c:type:`memcached_result_st` has been encapsulated, you should
 not write code to directly access members of the structure.
 
-:c:func:`memcached_result_create()` will either allocate memory for a
+:c:func:`memcached_result_create` will either allocate memory for a
 :c:type:`memcached_result_st` or will initialize a structure passed to it.
 
-:c:func:`memcached_result_free()` will deallocate any memory attached to the
+:c:func:`memcached_result_free` will deallocate any memory attached to the
 structure. If the structure was also allocated, it will deallocate it.
 
-:c:func:`memcached_result_key_value()` returns the key value associated with the
+:c:func:`memcached_result_key_value` returns the key value associated with the
 current result object.
 
-:c:func:`memcached_result_key_length()` returns the key length associated with 
+:c:func:`memcached_result_key_length` returns the key length associated with 
 the current result object.
 
-:c:func:`memcached_result_value()` returns the result value associated with the
+:c:func:`memcached_result_value` returns the result value associated with the
 current result object.
 
-:c:func:`memcached_result_length()` returns the result length associated with 
+:c:func:`memcached_result_take_value` returns and hands over the result value
+associated with the current result object. You must call free() to release this
+value, unless you have made use of a custom allocator. Use of a custom
+allocator requires that you create your own custom free() to release it.
+
+:c:func:`memcached_result_length` returns the result length associated with 
 the current result object.
 
-:c:func:`memcached_result_flags()` returns the flags associated with the
+:c:func:`memcached_result_flags` returns the flags associated with the
 current result object.
 
-:c:func:`memcached_result_cas()` returns the cas associated with the
+:c:func:`memcached_result_cas` returns the cas associated with the
 current result object. This value will only be available if the server
 tests it.
 
-:c:func:`memcached_result_set_value()` takes a byte array and a size and sets
+:c:func:`memcached_result_set_value` takes a byte array and a size and sets
 the result to this value. This function is used for trigger responses.
 
-:c:func:`void memcached_result_set_flags()` takes a result structure and stores
-a new value for the flags field.
+:c:func:`memcached_result_set_flags` takes a result structure and stores a new
+value for the flags field.
 
-:c:func:`void memcached_result_set_expiration(A)` takes a result structure and stores a new value for the expiration field (this is only used by read 
-through triggers).
+:c:func:`memcached_result_set_expiration` takes a result structure and stores
+a new value for the expiration field (this is only used by read through
+triggers).
 
 You may wish to avoid using memcached_result_create(3) with a
 stack based allocation. The most common issues related to ABI safety involve
@@ -97,7 +105,7 @@ RETURN
 
 
 Varies, see particular functions. All structures must have
-:c:func:`memcached_result_free()` called on them for cleanup purposes. Failure 
+:c:func:`memcached_result_free` called on them for cleanup purposes. Failure 
 to do this will result in leaked memory.