From cfc633422c08ebcda09f00943fbce5f8379e089b Mon Sep 17 00:00:00 2001 From: Dan Hirsch <thequux@upstandinghackers.com> Date: Fri, 15 Nov 2013 21:55:57 -0600 Subject: [PATCH] Add internal conditional to not use stdarg.h for SWIG use --- src/hammer.h | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/hammer.h b/src/hammer.h index f9630a13..508653d8 100644 --- a/src/hammer.h +++ b/src/hammer.h @@ -17,7 +17,9 @@ #ifndef HAMMER_HAMMER__H #define HAMMER_HAMMER__H +#ifndef HAMMER_INTERNAL__NO_STDARG_H #include <stdarg.h> +#endif // HAMMER_INTERNAL__NO_STDARG_H #include <stdint.h> #include <stdio.h> #include "allocator.h" @@ -174,12 +176,13 @@ typedef struct HBenchmarkResults_ { rtype_t name(__VA_ARGS__) attr; \ rtype_t name##__m(HAllocator* mm__, __VA_ARGS__) attr +#ifndef HAMMER_INTERNAL__NO_STDARG_H #define HAMMER_FN_DECL_VARARGS(rtype_t, name, ...) \ rtype_t name(__VA_ARGS__, ...); \ rtype_t name##__m(HAllocator* mm__, __VA_ARGS__, ...); \ rtype_t name##__mv(HAllocator* mm__, __VA_ARGS__, va_list ap); \ - rtype_t name##__v(__VA_ARGS__, va_list ap); \ - rtype_t name##__a(void *args[]); \ + rtype_t name##__v(__VA_ARGS__, va_list ap); \ + rtype_t name##__a(void *args[]); \ rtype_t name##__ma(HAllocator *mm__, void *args[]) // Note: this drops the attributes on the floor for the __v versions @@ -187,10 +190,23 @@ typedef struct HBenchmarkResults_ { rtype_t name(__VA_ARGS__, ...) attr; \ rtype_t name##__m(HAllocator* mm__, __VA_ARGS__, ...) attr; \ rtype_t name##__mv(HAllocator* mm__, __VA_ARGS__, va_list ap); \ - rtype_t name##__v(__VA_ARGS__, va_list ap); \ - rtype_t name##__a(void *args[]); \ + rtype_t name##__v(__VA_ARGS__, va_list ap); \ + rtype_t name##__a(void *args[]); \ + rtype_t name##__ma(HAllocator *mm__, void *args[]) +#else +#define HAMMER_FN_DECL_VARARGS(rtype_t, name, ...) \ + rtype_t name(__VA_ARGS__, ...); \ + rtype_t name##__m(HAllocator* mm__, __VA_ARGS__, ...); \ + rtype_t name##__a(void *args[]); \ rtype_t name##__ma(HAllocator *mm__, void *args[]) +// Note: this drops the attributes on the floor for the __v versions +#define HAMMER_FN_DECL_VARARGS_ATTR(attr, rtype_t, name, ...) \ + rtype_t name(__VA_ARGS__, ...) attr; \ + rtype_t name##__m(HAllocator* mm__, __VA_ARGS__, ...) attr; \ + rtype_t name##__a(void *args[]); \ + rtype_t name##__ma(HAllocator *mm__, void *args[]) +#endif // HAMMER_INTERNAL__NO_STDARG_H // }}} -- GitLab