]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
955bd501 KS |
2 | #pragma once |
3 | ||
4 | /*** | |
1298001e | 5 | Copyright 2012 Kay Sievers <kay@vrfy.org> |
955bd501 KS |
6 | ***/ |
7 | ||
11c3a366 | 8 | #include <stddef.h> |
955bd501 | 9 | #include <stdint.h> |
11c3a366 | 10 | #include <sys/types.h> |
955bd501 | 11 | |
f201daec ZJS |
12 | #include "macro.h" |
13 | ||
955bd501 KS |
14 | struct strbuf { |
15 | char *buf; | |
16 | size_t len; | |
17 | struct strbuf_node *root; | |
18 | ||
19 | size_t nodes_count; | |
20 | size_t in_count; | |
21 | size_t in_len; | |
22 | size_t dedup_len; | |
23 | size_t dedup_count; | |
24 | }; | |
25 | ||
26 | struct strbuf_node { | |
27 | size_t value_off; | |
28 | size_t value_len; | |
29 | ||
30 | struct strbuf_child_entry *children; | |
31 | uint8_t children_count; | |
32 | }; | |
33 | ||
34 | struct strbuf_child_entry { | |
35 | uint8_t c; | |
36 | struct strbuf_node *child; | |
37 | }; | |
38 | ||
39 | struct strbuf *strbuf_new(void); | |
40 | ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len); | |
41 | void strbuf_complete(struct strbuf *str); | |
42 | void strbuf_cleanup(struct strbuf *str); | |
f201daec | 43 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct strbuf*, strbuf_cleanup); |