6ecdbe947787ece1ff2fba877b940efd997efb38
[m6w6/libmemcached] / libmemcached / memcached_string.h
1 /*
2 * Summary: String structure used for libmemcached.
3 *
4 * Copy: See Copyright for the status of this software.
5 *
6 * Author: Brian Aker
7 */
8
9 #ifndef __MEMCACHED_STRING_H__
10 #define __MEMCACHED_STRING_H__
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 struct memcached_string_st {
17 memcached_st *root;
18 char *end;
19 char *string;
20 size_t current_size;
21 size_t block_size;
22 struct {
23 bool is_allocated:1;
24 bool is_initialized:1;
25 } options;
26 };
27
28 #define memcached_string_length(A) (size_t)((A)->end - (A)->string)
29 #define memcached_string_set_length(A, B) (A)->end= (A)->string + B
30 #define memcached_string_size(A) (A)->current_size
31 #define memcached_string_value(A) (A)->string
32
33 LIBMEMCACHED_API
34 memcached_string_st *memcached_string_create(memcached_st *ptr,
35 memcached_string_st *string,
36 size_t initial_size);
37 LIBMEMCACHED_API
38 memcached_return memcached_string_check(memcached_string_st *string, size_t need);
39
40 LIBMEMCACHED_API
41 char *memcached_string_c_copy(memcached_string_st *string);
42
43 LIBMEMCACHED_API
44 memcached_return memcached_string_append_character(memcached_string_st *string,
45 char character);
46 LIBMEMCACHED_API
47 memcached_return memcached_string_append(memcached_string_st *string,
48 const char *value, size_t length);
49 LIBMEMCACHED_API
50 memcached_return memcached_string_reset(memcached_string_st *string);
51
52 LIBMEMCACHED_API
53 void memcached_string_free(memcached_string_st *string);
54
55 #ifdef __cplusplus
56 }
57 #endif
58
59 #endif /* __MEMCACHED_STRING_H__ */