xref: /aosp_15_r20/external/kmod/shared/strbuf.h (revision cc4ad7da8cefe208cb129ac2aa9a357c7c72deb2)
1*cc4ad7daSAndroid Build Coastguard Worker #pragma once
2*cc4ad7daSAndroid Build Coastguard Worker 
3*cc4ad7daSAndroid Build Coastguard Worker #include <stdbool.h>
4*cc4ad7daSAndroid Build Coastguard Worker 
5*cc4ad7daSAndroid Build Coastguard Worker /*
6*cc4ad7daSAndroid Build Coastguard Worker  * Buffer abstract data type
7*cc4ad7daSAndroid Build Coastguard Worker  */
8*cc4ad7daSAndroid Build Coastguard Worker struct strbuf {
9*cc4ad7daSAndroid Build Coastguard Worker 	char *bytes;
10*cc4ad7daSAndroid Build Coastguard Worker 	unsigned size;
11*cc4ad7daSAndroid Build Coastguard Worker 	unsigned used;
12*cc4ad7daSAndroid Build Coastguard Worker };
13*cc4ad7daSAndroid Build Coastguard Worker 
14*cc4ad7daSAndroid Build Coastguard Worker void strbuf_init(struct strbuf *buf);
15*cc4ad7daSAndroid Build Coastguard Worker void strbuf_release(struct strbuf *buf);
16*cc4ad7daSAndroid Build Coastguard Worker void strbuf_clear(struct strbuf *buf);
17*cc4ad7daSAndroid Build Coastguard Worker 
18*cc4ad7daSAndroid Build Coastguard Worker /* Destroy buffer and return a copy as a C string */
19*cc4ad7daSAndroid Build Coastguard Worker char *strbuf_steal(struct strbuf *buf);
20*cc4ad7daSAndroid Build Coastguard Worker 
21*cc4ad7daSAndroid Build Coastguard Worker /*
22*cc4ad7daSAndroid Build Coastguard Worker  * Return a C string owned by the buffer invalidated if the buffer is
23*cc4ad7daSAndroid Build Coastguard Worker  * changed).
24*cc4ad7daSAndroid Build Coastguard Worker  */
25*cc4ad7daSAndroid Build Coastguard Worker const char *strbuf_str(struct strbuf *buf);
26*cc4ad7daSAndroid Build Coastguard Worker 
27*cc4ad7daSAndroid Build Coastguard Worker bool strbuf_pushchar(struct strbuf *buf, char ch);
28*cc4ad7daSAndroid Build Coastguard Worker unsigned strbuf_pushchars(struct strbuf *buf, const char *str);
29*cc4ad7daSAndroid Build Coastguard Worker void strbuf_popchar(struct strbuf *buf);
30*cc4ad7daSAndroid Build Coastguard Worker void strbuf_popchars(struct strbuf *buf, unsigned n);
31