]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/strbuf.h
tree-wide: beautify remaining copyright statements
[thirdparty/systemd.git] / src / basic / strbuf.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
955bd501
KS
2#pragma once
3
4/***
96b2fb93 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
14struct 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
26struct 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
34struct strbuf_child_entry {
35 uint8_t c;
36 struct strbuf_node *child;
37};
38
39struct strbuf *strbuf_new(void);
40ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len);
41void strbuf_complete(struct strbuf *str);
42void strbuf_cleanup(struct strbuf *str);
f201daec 43DEFINE_TRIVIAL_CLEANUP_FUNC(struct strbuf*, strbuf_cleanup);