GRPC C++  1.26.0
slice.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_SLICE_H
20 #define GRPC_SLICE_H
21 
23 
25 #include <grpc/support/sync.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
34 
42 
45 
49 GPRAPI grpc_slice grpc_slice_new(void* p, size_t len, void (*destroy)(void*));
50 
56  void (*destroy)(void*),
57  void* user_data);
58 
61 GPRAPI grpc_slice grpc_slice_new_with_len(void* p, size_t len,
62  void (*destroy)(void*, size_t));
63 
67 GPRAPI grpc_slice grpc_slice_malloc(size_t length);
69 
70 #define GRPC_SLICE_MALLOC(len) grpc_slice_malloc(len)
71 
77 
85 
90 GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char* source, size_t len);
91 
94 
96 GPRAPI grpc_slice grpc_slice_from_static_buffer(const void* source, size_t len);
97 
103 GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end);
104 
106 GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end);
107 
112 
113 typedef enum {
118 
123  grpc_slice_ref_whom ref_whom);
124 
129 
131 
134 
136 
141 GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char* b);
142 
144 GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void* b, size_t blen);
145 
147 GPRAPI int grpc_slice_rchr(grpc_slice s, char c);
148 GPRAPI int grpc_slice_chr(grpc_slice s, char c);
149 
152 GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle);
153 
154 GPRAPI uint32_t grpc_slice_hash(grpc_slice s);
155 
159 
163 
167 
168 #ifdef __cplusplus
169 }
170 #endif
171 
172 #endif /* GRPC_SLICE_H */
GPRAPI grpc_slice grpc_slice_new_with_user_data(void *p, size_t len, void(*destroy)(void *), void *user_data)
Equivalent to grpc_slice_new, but with a separate pointer that is passed to the destroy function...
GPRAPI grpc_slice grpc_slice_split_head(grpc_slice *s, size_t split)
Splits s into two: modifies s to be s[split:s.length], and returns a new slice, sharing a refcount wi...
GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle)
return the index of the first occurrence of needle in haystack, or -1 if it&#39;s not found ...
GPRAPI grpc_slice grpc_slice_new_with_len(void *p, size_t len, void(*destroy)(void *, size_t))
Equivalent to grpc_slice_new, but with a two argument destroy function that also takes the slice leng...
GPRAPI grpc_slice grpc_slice_dup(grpc_slice a)
Return a slice pointing to newly allocated memory that has the same contents as s.
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len)
Create a slice by copying a buffer.
GPRAPI grpc_slice grpc_slice_from_copied_string(const char *source)
Create a slice by copying a string.
GPRAPI int grpc_slice_cmp(grpc_slice a, grpc_slice b)
Returns <0 if a < b, ==0 if a == b, >0 if a > b The order is arbitrary, and is not guaranteed to be s...
GPRAPI grpc_slice grpc_slice_from_static_buffer(const void *source, size_t len)
Create a slice pointing to constant memory.
GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end)
Return a result slice derived from s, which shares a ref count with s, where result.data==s.data+begin, and result.length==end-begin.
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1]. ...
Definition: slice.h:60
#define GPRAPI
Definition: port_platform.h:604
GPRAPI grpc_slice grpc_slice_malloc(size_t length)
Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() call.
grpc_slice_ref_whom
Definition: slice.h:113
GPRAPI grpc_slice grpc_slice_copy(grpc_slice s)
Copy slice - create a new slice that contains the same data as s.
GPRAPI uint32_t grpc_slice_default_hash_impl(grpc_slice s)
GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void *b, size_t blen)
return non-zero if the first blen bytes of a are equal to b
GPRAPI grpc_slice grpc_slice_split_tail(grpc_slice *s, size_t split)
Splits s into two: modifies s to be s[0:split], and returns a new slice, sharing a refcount with s...
GPRAPI int grpc_slice_default_eq_impl(grpc_slice a, grpc_slice b)
GPRAPI void grpc_slice_unref(grpc_slice s)
Decrement the ref count of s.
GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void(*destroy)(void *))
Create a slice pointing at some data.
Definition: slice.h:114
GPRAPI int grpc_slice_eq(grpc_slice a, grpc_slice b)
GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char *b)
GPRAPI uint32_t grpc_slice_hash(grpc_slice s)
GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice *s, size_t split, grpc_slice_ref_whom ref_whom)
The same as grpc_slice_split_tail, but with an option to skip altering refcounts (grpc_slice_split_ta...
GPRAPI grpc_slice grpc_slice_ref(grpc_slice s)
Increment the refcount of s.
GPRAPI int grpc_slice_rchr(grpc_slice s, char c)
return the index of the last instance of c in s, or -1 if not found
GPRAPI char * grpc_slice_to_c_string(grpc_slice s)
Return a copy of slice as a C string.
GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end)
The same as grpc_slice_sub, but without altering the ref count.
GPRAPI int grpc_slice_chr(grpc_slice s, char c)
Definition: slice.h:115
Definition: slice.h:116
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
Create a slice pointing to constant memory.
GPRAPI grpc_slice grpc_slice_intern(grpc_slice slice)
Intern a slice:
GPRAPI int grpc_slice_is_equivalent(grpc_slice a, grpc_slice b)
Do two slices point at the same memory, with the same length If a or b is inlined, actually compares data.
GPRAPI grpc_slice grpc_slice_malloc_large(size_t length)
GPRAPI grpc_slice grpc_empty_slice(void)