annotate C/buf.h @ 186:d4b8416e9ab1

Move C
author David Demelier <markand@malikania.fr>
date Sat, 23 Nov 2013 16:14:05 +0100
parents buf.h@7f214f26a4c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
125
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * buf.h -- easy way to manipulate strings
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2011, 2012, David Demelier <markand@malikania.fr>
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef _BUF_H_
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define _BUF_H_
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
135
07800b7af208 Huge cosmetic, no breakage
David Demelier <markand@malikania.fr>
parents: 133
diff changeset
22 #include <stdarg.h>
07800b7af208 Huge cosmetic, no breakage
David Demelier <markand@malikania.fr>
parents: 133
diff changeset
23
131
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
24 #ifdef __GNUC__
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
25 # define _buf_at_printf(i1, i2) __attribute__ ((format (printf, i1, i2)))
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
26 #else
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
27 # define _buf_at_printf(i1, i2)
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
28 #endif
cbfad4fb80c8 Buf: remove buf_puts and add printf format
David Demelier <markand@malikania.fr>
parents: 129
diff changeset
29
149
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
30 enum buf_flags {
166
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
31 BUF_UNSAFE = (1 << 0), /* string may be truncated */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
32 BUF_FIXED = (1 << 1), /* string has fixed length */
125
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 };
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 struct buf {
166
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
36 enum buf_flags flags; /* string flags */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
37 char *text; /* string text */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
38 size_t length; /* string length */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
39 size_t alsize; /* allocated size */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
40 int chksize; /* chunk size */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
41 int maxsize; /* max fixed length size */
125
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
166
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
43 void * (*malloc)(size_t); /* alternate malloc */
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
44 void * (*realloc)(void *, size_t); /* alternate realloc */
125
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 };
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
166
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
47 #ifdef __cplusplus
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
48 extern "C" {
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
49 #endif
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
50
133
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
51 int
166
7f214f26a4c0 Added a macro for pack.c
David Demelier <markand@malikania.fr>
parents: 149
diff changeset
52 buf_init(struct buf *, const char *);
133
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
53
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
54 void
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
55 buf_set(struct buf *, const char *, ...);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
56
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
57 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
58 buf_ncat(struct buf *, const char *, size_t);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
59
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
60 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
61 buf_cat(struct buf *, const char *);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
62
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
63 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
64 buf_putc(struct buf *, int);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
65
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
66 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
67 buf_vprintf(struct buf *, const char *, va_list);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
68
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
69 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
70 buf_printf(struct buf *, const char *, ...) _buf_at_printf(2, 3);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
71
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
72 int
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
73 buf_trim(struct buf *);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
74
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
75 void
141
5ed54050ae31 Added buf_cut, cut the buffer
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
76 buf_cut(struct buf *, int);
5ed54050ae31 Added buf_cut, cut the buffer
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
77
5ed54050ae31 Added buf_cut, cut the buffer
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
78 void
133
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
79 buf_clear(struct buf *);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
80
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
81 void
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
82 buf_free(struct buf *);
d85dd98cb49d Add attributes
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
83
125
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 #ifdef __cplusplus
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 }
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 #endif
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
b9723c197038 Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 #endif /* _BUF_H_ */