28aa4b003117f41090d0e6fbdeb5566687aad473
[m6w6/libmemcached] / src / libmemcached / string.hpp
1 /*
2 +--------------------------------------------------------------------+
3 | libmemcached - C/C++ Client Library for memcached |
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted under the terms of the BSD license. |
7 | You should have received a copy of the license in a bundled file |
8 | named LICENSE; in case you did not receive a copy you can review |
9 | the terms online at: https://opensource.org/licenses/BSD-3-Clause |
10 +--------------------------------------------------------------------+
11 | Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
12 | Copyright (c) 2020 Michael Wallner <mike@php.net> |
13 +--------------------------------------------------------------------+
14 */
15
16 #pragma once
17
18 #include "util/string.hpp"
19
20 #define memcached_literal_param util_literal_param
21 #define memcached_literal_param_size util_literal_param_size
22 #define memcached_string_make_from_cstr util_string_make_from_cstr
23 #define memcached_array_length util_array_length
24
25 /**
26 Strings are always under our control so we make some assumptions
27 about them.
28
29 1) is_initialized is always valid.
30 2) A string once intialized will always be, until free where we
31 unset this flag.
32 3) A string always has a root.
33 */
34
35 memcached_string_st *memcached_string_create(memcached_st *ptr, memcached_string_st *string,
36 size_t initial_size);
37
38 memcached_return_t memcached_string_check(memcached_string_st *string, size_t need);
39
40 char *memcached_string_c_copy(memcached_string_st *string);
41
42 memcached_return_t memcached_string_append_character(memcached_string_st *string, char character);
43
44 memcached_return_t memcached_string_append(memcached_string_st *string, const char *value,
45 size_t length);
46
47 void memcached_string_reset(memcached_string_st *string);
48
49 void memcached_string_free(memcached_string_st *string);
50 void memcached_string_free(memcached_string_st &);
51
52 size_t memcached_string_length(const memcached_string_st *self);
53 size_t memcached_string_length(const memcached_string_st &);
54
55 size_t memcached_string_size(const memcached_string_st *self);
56
57 const char *memcached_string_value(const memcached_string_st *self);
58 const char *memcached_string_value(const memcached_string_st &);
59
60 char *memcached_string_take_value(memcached_string_st *self);
61
62 char *memcached_string_value_mutable(const memcached_string_st *self);
63
64 bool memcached_string_set(memcached_string_st &, const char *, size_t);
65
66 void memcached_string_set_length(memcached_string_st *self, size_t length);
67 void memcached_string_set_length(memcached_string_st &, const size_t length);
68
69 bool memcached_string_resize(memcached_string_st &, const size_t);
70 char *memcached_string_c_str(memcached_string_st &);