GRPC Core  43.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 
22 #include <grpc/impl/slice_type.h> // IWYU pragma: export
24 #include <grpc/support/sync.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
33 
41 
44 
48 GPRAPI grpc_slice grpc_slice_new(void* p, size_t len, void (*destroy)(void*));
49 
55  void (*destroy)(void*),
56  void* user_data);
57 
60 GPRAPI grpc_slice grpc_slice_new_with_len(void* p, size_t len,
61  void (*destroy)(void*, size_t));
62 
66 GPRAPI grpc_slice grpc_slice_malloc(size_t length);
68 
69 #define GRPC_SLICE_MALLOC(len) grpc_slice_malloc(len)
70 
78 
83 GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char* source, size_t len);
84 
87 
89 GPRAPI grpc_slice grpc_slice_from_static_buffer(const void* source, size_t len);
90 
96 GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end);
97 
99 GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end);
100 
105 
106 typedef enum {
111 
116  grpc_slice_ref_whom ref_whom);
117 
122 
124 
126 
131 GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char* b);
132 
134 GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void* b, size_t blen);
135 
137 GPRAPI int grpc_slice_rchr(grpc_slice s, char c);
138 GPRAPI int grpc_slice_chr(grpc_slice s, char c);
139 
142 GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle);
143 
147 
151 
155 
156 #ifdef __cplusplus
157 }
158 #endif
159 
160 #endif /* GRPC_SLICE_H */
grpc_slice_cmp
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...
grpc_slice_new
GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void(*destroy)(void *))
Create a slice pointing at some data.
grpc_slice_split_tail_maybe_ref
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...
grpc_slice_is_equivalent
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,...
grpc_slice_new_with_user_data
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.
grpc_slice_buf_start_eq
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
grpc_slice_split_tail
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,...
grpc_slice_from_copied_buffer
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len)
Create a slice by copying a buffer.
grpc_slice_slice
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's not found
grpc_slice_unref
GPRAPI void grpc_slice_unref(grpc_slice s)
Decrement the ref count of s.
sync.h
grpc_slice_chr
GPRAPI int grpc_slice_chr(grpc_slice s, char c)
grpc_slice_dup
GPRAPI grpc_slice grpc_slice_dup(grpc_slice a)
Return a slice pointing to newly allocated memory that has the same contents as s.
GRPC_SLICE_REF_TAIL
@ GRPC_SLICE_REF_TAIL
Definition: slice.h:107
grpc_slice_ref_whom
grpc_slice_ref_whom
Definition: slice.h:106
grpc_slice_from_static_string
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
Create a slice pointing to constant memory.
grpc_slice_ref
GPRAPI grpc_slice grpc_slice_ref(grpc_slice s)
Increment the refcount of s.
grpc_slice_eq
GPRAPI int grpc_slice_eq(grpc_slice a, grpc_slice b)
grpc_slice_malloc_large
GPRAPI grpc_slice grpc_slice_malloc_large(size_t length)
grpc_slice_split_head
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...
grpc_slice_sub_no_ref
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.
grpc_slice
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1].
Definition: slice_type.h:63
GPRAPI
#define GPRAPI
Definition: port_platform.h:721
grpc_slice_to_c_string
GPRAPI char * grpc_slice_to_c_string(grpc_slice s)
Return a copy of slice as a C string.
GRPC_SLICE_REF_HEAD
@ GRPC_SLICE_REF_HEAD
Definition: slice.h:108
grpc_slice_sub
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....
grpc_slice_str_cmp
GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char *b)
grpc_slice_from_copied_string
GPRAPI grpc_slice grpc_slice_from_copied_string(const char *source)
Create a slice by copying a string.
grpc_slice_rchr
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
GRPC_SLICE_REF_BOTH
@ GRPC_SLICE_REF_BOTH
Definition: slice.h:109
grpc_slice_from_static_buffer
GPRAPI grpc_slice grpc_slice_from_static_buffer(const void *source, size_t len)
Create a slice pointing to constant memory.
grpc_slice_malloc
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_new_with_len
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...
slice_type.h
grpc_empty_slice
GPRAPI grpc_slice grpc_empty_slice(void)
grpc_slice_copy
GPRAPI grpc_slice grpc_slice_copy(grpc_slice s)
Copy slice - create a new slice that contains the same data as s.
port_platform.h