From f8cfe5e8806cfd84dc83714e495b58890ef4bb02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 10 Feb 2019 00:47:02 +0100 Subject: Add formatting macros. --- macro.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'macro.h') diff --git a/macro.h b/macro.h index bd421260..e1bff786 100644 --- a/macro.h +++ b/macro.h @@ -109,5 +109,20 @@ #define GET(T) TEMPL(get , T) #define RESET(T) TEMPL(reset , T) +/* + * Formatting macros. + * Transform objects into string representation of themselves. + * buf should be a suffisiently large memmory location, if it's to + * small then bad stuff might happen. + * + * Should return the number of bytes written (like sprintf). + */ + +#define FMT_T(T) TEMPL(format , T) +#define FMT_F(T) int FMT_T(T)(T* this, char* buf, ...) +// TODO change order of buf and item +#define __FMT_HELP(item, buf, ...) ((item), (buf), VA_ARGS_NUM(__VA_ARGS__), ## __VA_ARGS__) +#define FMT(T) FMT_T(T) __FMT_HELP +#define fmtf(...) seek += sprintf(buf + seek, __VA_ARGS__) #endif /* MACRO_H */ -- cgit v1.2.3