C/Migemo 1.4
strbuf.h
[詳解]
1// vim:set ts=8 sts=4 sw=4 tw=0 et:
2//
3// strbuf.h -
4//
5// Written By: MURAOKA Taro <koron.kaoriya@gmail.com>
6
7#pragma once
8
9typedef struct strbuf strbuf;
10struct strbuf
11{
12 size_t cap; // amount of memory allocated to buf
13 size_t len; // length of the string actually stored in buf
14 unsigned char *buf;
15};
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21// Life cycle managements
23void strbuf_close(strbuf *sb);
24size_t strbuf_extend(strbuf *sb, size_t req_len);
25
26// Append functions
27size_t strbuf_append(strbuf *sb, strbuf *q);
28size_t strbuf_append_ch(strbuf *sb, unsigned char ch);
29size_t strbuf_append_str(strbuf *sb, const unsigned char *s);
30size_t strbuf_append_mem(strbuf *sb, const unsigned char *p, size_t len);
31
32// Others
33size_t strbuf_truncate(strbuf *sb, size_t len);
34
35#ifdef __cplusplus
36}
37#endif
38
39static inline size_t
40strbuf_len(strbuf *sb)
41{
42 return sb->len;
43}
44
45static inline unsigned char *
46strbuf_get(strbuf *sb)
47{
48 return sb->buf;
49}
50
51static inline void
52strbuf_reset(strbuf *sb)
53{
54 sb->len = 0;
55 sb->buf[0] = '\0';
56}
57
58static inline size_t
59strbuf_add(strbuf *sb, unsigned char ch)
60{
61 if (sb->len + 2 <= sb->cap)
62 {
63 sb->buf[sb->len++] = ch;
64 sb->buf[sb->len] = 0;
65 return sb->len;
66 }
67 return strbuf_append_ch(sb, ch);
68}
void strbuf_close(strbuf *sb)
Definition strbuf.c:39
strbuf * strbuf_open()
Definition strbuf.c:20
size_t strbuf_append(strbuf *sb, strbuf *q)
Definition strbuf.c:78
size_t strbuf_append_str(strbuf *sb, const unsigned char *s)
Definition strbuf.c:84
size_t strbuf_extend(strbuf *sb, size_t req_len)
Definition strbuf.c:52
size_t strbuf_truncate(strbuf *sb, size_t len)
Definition strbuf.c:122
size_t strbuf_append_mem(strbuf *sb, const unsigned char *p, size_t len)
Definition strbuf.c:107
size_t strbuf_append_ch(strbuf *sb, unsigned char ch)
Definition strbuf.c:70
Definition strbuf.h:11
size_t cap
Definition strbuf.h:12
unsigned char * buf
Definition strbuf.h:14
size_t len
Definition strbuf.h:13