GRPC Core  6.0.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 #include <grpc/support/sync.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
32 
40 
43 
47 GPRAPI grpc_slice grpc_slice_new(void* p, size_t len, void (*destroy)(void*));
48 
54  void (*destroy)(void*),
55  void* user_data);
56 
59 GPRAPI grpc_slice grpc_slice_new_with_len(void* p, size_t len,
60  void (*destroy)(void*, size_t));
61 
65 GPRAPI grpc_slice grpc_slice_malloc(size_t length);
67 
68 #define GRPC_SLICE_MALLOC(len) grpc_slice_malloc(len)
69 
75 
83 
88 GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char* source, size_t len);
89 
92 
94 GPRAPI grpc_slice grpc_slice_from_static_buffer(const void* source, size_t len);
95 
101 GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end);
102 
104 GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end);
105 
110 
111 typedef enum {
116 
121  grpc_slice_ref_whom ref_whom);
122 
127 
129 
132 
134 
139 GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char* b);
140 
142 GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void* b, size_t blen);
143 
145 GPRAPI int grpc_slice_rchr(grpc_slice s, char c);
146 GPRAPI int grpc_slice_chr(grpc_slice s, char c);
147 
150 GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle);
151 
152 GPRAPI uint32_t grpc_slice_hash(grpc_slice s);
153 
157 
161 
165 
166 #ifdef __cplusplus
167 }
168 #endif
169 
170 #endif /* GRPC_SLICE_H */
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_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 grpc_slice grpc_empty_slice(void)
GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void(*destroy)(void *))
Create a slice pointing at some data.
GPRAPI grpc_slice grpc_slice_malloc_large(size_t length)
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...
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1]. ...
Definition: slice.h:80
#define GPRAPI
Definition: port_platform.h:466
GPRAPI grpc_slice grpc_slice_copy(grpc_slice s)
Copy slice - create a new slice that contains the same data as s.
Definition: slice.h:113
GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle)
return the index of the first occurance of needle in haystack, or -1 if it&#39;s not found ...
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 uint32_t grpc_slice_default_hash_impl(grpc_slice s)
GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char *b)
GPRAPI uint32_t grpc_slice_hash(grpc_slice s)
grpc_slice_ref_whom
Definition: slice.h:111
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 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 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 grpc_slice grpc_slice_intern(grpc_slice slice)
Intern a slice:
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.
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...
Definition: slice.h:114
Definition: slice.h:112
GPRAPI void grpc_slice_unref(grpc_slice s)
Decrement the ref count of s.
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len)
Create a slice by copying a buffer.
GPRAPI int grpc_slice_default_eq_impl(grpc_slice a, grpc_slice b)
GPRAPI int grpc_slice_chr(grpc_slice s, char c)
GPRAPI grpc_slice grpc_slice_ref(grpc_slice s)
Increment the refcount of s.
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_malloc(size_t length)
Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() call.
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
Create a slice pointing to constant memory.
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 int grpc_slice_eq(grpc_slice a, grpc_slice b)
GPRAPI char * grpc_slice_to_c_string(grpc_slice s)
Return a copy of slice as a C string.
GPRAPI grpc_slice grpc_slice_from_static_buffer(const void *source, size_t len)
Create a slice pointing to constant memory.
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