Mercurial > code
changeset 55:cda80ba48029
Add beautiful gcc attribute to buffer
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 04 Nov 2011 16:11:31 +0100 |
parents | ebf1460c331e |
children | 770737295987 |
files | buffer.h |
diffstat | 1 files changed, 26 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/buffer.h Fri Nov 04 15:59:47 2011 +0100 +++ b/buffer.h Fri Nov 04 16:11:31 2011 +0100 @@ -23,6 +23,22 @@ #include <stdarg.h> +/* + * Some useful attributes with gcc or clang. + */ + +#if defined(__GNUC__) +# pragma GCC diagnostic warning "-Wnonnull" +# pragma GCC diagnostic warning "-Wformat" +# define __at_malloc __attribute__ ((malloc)) +# define __at_nonnull __attribute__ ((nonnull(1))) +# define __at_printf(...) __attribute__ ((format(printf, __VA_ARGS__))) +#else +# define __at_malloc +# define __at_nonnull +# define __at_printf(...) +#endif + enum buffer_type { BUFFER_FIXED = 0, BUFFER_AUTO = 1 @@ -36,15 +52,15 @@ int bsize; /* initial length */ }; -struct buffer *buffer_new(enum buffer_type, int); -int buffer_strcat(struct buffer *, const char *); -int buffer_putc(struct buffer *buf, char); -int buffer_bcat(struct buffer *, const void *, size_t); -int buffer_vprintf(struct buffer *, const char *, va_list); -int buffer_printf(struct buffer *, const char *, ...); -int buffer_shrink(struct buffer *); -char *buffer_end(struct buffer *); -void buffer_clear(struct buffer *); -void buffer_free(struct buffer *); +struct buffer *buffer_new(enum buffer_type, int) __at_malloc; +int buffer_strcat(struct buffer *, const char *) __at_nonnull; +int buffer_putc(struct buffer *buf, char) __at_nonnull; +int buffer_bcat(struct buffer *, const void *, size_t) __at_nonnull; +int buffer_vprintf(struct buffer *, const char *, va_list) __at_nonnull; +int buffer_printf(struct buffer *, const char *, ...) __at_printf(2, 3); +int buffer_shrink(struct buffer *) __at_nonnull; +char *buffer_end(struct buffer *) __at_nonnull; +void buffer_clear(struct buffer *) __at_nonnull; +void buffer_free(struct buffer *) __at_nonnull; #endif /* _BUFFER_H_ */