Mercurial > code
annotate buf.h @ 129:2f71e113be63
Remove copy and ncopy and putc/puts
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 08 Mar 2012 23:48:36 +0100 |
parents | e00bc8f7eabf |
children | cbfad4fb80c8 |
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 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #ifdef __cplusplus |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 extern "C" { |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #endif |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <stdarg.h> |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 #ifndef BUF_DEFAULT_BSIZE |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 #define BUF_DEFAULT_BSIZE 128 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 #endif |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 enum { |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 BUF_AUTO = 0, /* string grows automatically */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 BUF_FIXED = (1 << 0), /* fixed size string */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 BUF_UNSAFE = (1 << 1), /* string may be truncated */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 }; |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 struct buf { |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 int flags; /* string flags */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 char *text; /* string text */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 size_t length; /* string length */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 size_t alsize; /* allocated size */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 int bsize; /* block size (used when growing array) */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 /* Own allocation functions */ |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 void * (*malloc)(size_t); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 void * (*realloc)(void *, size_t); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 }; |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 int buf_init(struct buf *); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 void buf_set(struct buf *, const char *, ...); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 int buf_ncat(struct buf *, const char *, size_t); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 int buf_copy(struct buf *, const char *); |
127 | 54 int buf_vprintf(struct buf *, const char *, va_list); |
55 int buf_printf(struct buf *, const char *, ...); | |
129
2f71e113be63
Remove copy and ncopy and putc/puts
David Demelier <markand@malikania.fr>
parents:
127
diff
changeset
|
56 int buf_putc(struct buf *, int); |
2f71e113be63
Remove copy and ncopy and putc/puts
David Demelier <markand@malikania.fr>
parents:
127
diff
changeset
|
57 int buf_puts(struct buf *, const char *); |
125
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 void buf_clear(struct buf *); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 void buf_free(struct buf *); |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 #ifdef __cplusplus |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 } |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 #endif |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 |
b9723c197038
Add brand new string buffer
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 #endif /* _BUF_H_ */ |