summary refs log tree commit diff
path: root/str.h
blob: a6324f040353555900b90e7df9d548667f05ccec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef BUF_H
#define BUF_H

#include <stddef.h>

/* string views */

typedef struct {
	const char *s;
	size_t n;
} strv_t;

strv_t strv(const char *s);
char strv_next(strv_t *s);
int strv_split(strv_t *src, int chr, strv_t *dest);

/* strings */

typedef struct buf {
	size_t sz, cap;
	char *buf;
} str_t;

void str_init(str_t *, size_t);
void str_grow(str_t *, size_t);
void str_free(str_t *);

void str_cat(str_t *b, strv_t s);
void str_catc(str_t *b, char c);

void str_fmt(str_t *b, const char *fmt, ...);

#endif