Mercurial > code
annotate C/buf.h @ 188:ce3e1c3d6fed
Update sockets to style and using instead of typedef
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 26 Nov 2013 20:32:43 +0100 |
parents | d4b8416e9ab1 |
children |
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 | 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 | 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 | 53 |
54 void | |
55 buf_set(struct buf *, const char *, ...); | |
56 | |
57 int | |
58 buf_ncat(struct buf *, const char *, size_t); | |
59 | |
60 int | |
61 buf_cat(struct buf *, const char *); | |
62 | |
63 int | |
64 buf_putc(struct buf *, int); | |
65 | |
66 int | |
67 buf_vprintf(struct buf *, const char *, va_list); | |
68 | |
69 int | |
70 buf_printf(struct buf *, const char *, ...) _buf_at_printf(2, 3); | |
71 | |
72 int | |
73 buf_trim(struct buf *); | |
74 | |
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 | 79 buf_clear(struct buf *); |
80 | |
81 void | |
82 buf_free(struct buf *); | |
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_ */ |