]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/strbuf.h
hexdecoct: make unbase64mem and unhexmem always use SIZE_MAX
[thirdparty/systemd.git] / src / basic / strbuf.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
955bd501
KS
2#pragma once
3
11c3a366 4#include <stddef.h>
955bd501 5#include <stdint.h>
11c3a366 6#include <sys/types.h>
955bd501 7
f201daec
ZJS
8#include "macro.h"
9
955bd501
KS
10struct strbuf {
11 char *buf;
12 size_t len;
13 struct strbuf_node *root;
14
15 size_t nodes_count;
16 size_t in_count;
17 size_t in_len;
18 size_t dedup_len;
19 size_t dedup_count;
20};
21
22struct strbuf_node {
23 size_t value_off;
24 size_t value_len;
25
26 struct strbuf_child_entry *children;
27 uint8_t children_count;
28};
29
30struct strbuf_child_entry {
31 uint8_t c;
32 struct strbuf_node *child;
33};
34
75db809a 35struct strbuf* strbuf_new(void);
955bd501
KS
36ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len);
37void strbuf_complete(struct strbuf *str);
cfb1a0e5
ZJS
38struct strbuf* strbuf_free(struct strbuf *str);
39DEFINE_TRIVIAL_CLEANUP_FUNC(struct strbuf*, strbuf_free);