diff options
author | wm4 <wm4@nowhere> | 2012-11-10 16:19:53 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-11-12 20:08:57 +0100 |
commit | a6c4f2646fda50e5661acdb8739d1b54ddb38ede (patch) | |
tree | 3d234fd8a5291baed09efc85c9843283371cce06 /core/mp_common.h | |
parent | 20e9d06a2fef17a80369fd6c0b911e60c243172d (diff) | |
download | mpv-a6c4f2646fda50e5661acdb8739d1b54ddb38ede.tar.bz2 mpv-a6c4f2646fda50e5661acdb8739d1b54ddb38ede.tar.xz |
mp_common.h: split parts into mp_talloc.h and compiler.h
Put MP_EXPAND_ARGS() in compiler.h, even though it's not compiler
dependent. Both mp_talloc.h and mp_common.h need it, while mp_common.h
includes mp_talloc.h. This is the least annoying solution.
Diffstat (limited to 'core/mp_common.h')
-rw-r--r-- | core/mp_common.h | 52 |
1 files changed, 3 insertions, 49 deletions
diff --git a/core/mp_common.h b/core/mp_common.h index 119f11fb3b..4abbe70caf 100644 --- a/core/mp_common.h +++ b/core/mp_common.h @@ -22,60 +22,14 @@ #include <stdlib.h> #include <stdbool.h> +#include "compat/compiler.h" +#include "core/mp_talloc.h" + // both int64_t and double should be able to represent this exactly #define MP_NOPTS_VALUE (-1LL<<63) #define ROUND(x) ((int)((x) < 0 ? (x) - 0.5 : (x) + 0.5)) -#define MP_EXPAND_ARGS(...) __VA_ARGS__ - -#define MP_TALLOC_ELEMS(p) (talloc_get_size(p) / sizeof((p)[0])) -#define MP_GROW_ARRAY(p, nextidx) do { \ - if ((nextidx) == MP_TALLOC_ELEMS(p)) \ - p = talloc_realloc_size(NULL, p, talloc_get_size(p) * 2); } while (0) -#define MP_RESIZE_ARRAY(ctx, p, count) do { \ - p = talloc_realloc_size((ctx), p, (count) * sizeof(p[0])); } while (0) - - -#define MP_TARRAY_GROW(ctx, p, nextidx) \ - do { \ - size_t nextidx_ = (nextidx); \ - size_t nelems_ = MP_TALLOC_ELEMS(p); \ - if (nextidx_ >= nelems_) \ - p = talloc_realloc_size((ctx), p, \ - (nextidx_ + 1) * sizeof((p)[0]) * 2);\ - } while (0) - -#define MP_TARRAY_APPEND(ctx, p, idxvar, ...) \ - do { \ - MP_TARRAY_GROW(ctx, p, idxvar); \ - p[idxvar] = (MP_EXPAND_ARGS(__VA_ARGS__)); \ - idxvar++; \ - } while (0) - -#define talloc_struct(ctx, type, ...) \ - talloc_memdup(ctx, &(type) MP_EXPAND_ARGS(__VA_ARGS__), sizeof(type)) - -#ifdef __GNUC__ - -/** Use gcc attribute to check printf fns. a1 is the 1-based index of - * the parameter containing the format, and a2 the index of the first - * argument. **/ -#ifdef __MINGW32__ -// MinGW maps "printf" to the non-standard MSVCRT functions, even if -// __USE_MINGW_ANSI_STDIO is defined and set to 1. We need to use "gnu_printf", -// which isn't necessarily available on other GCC compatible compilers. -#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2))) -#else -#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (printf, a1, a2))) -#endif - -#else - -#define PRINTF_ATTRIBUTE(a1, a2) - -#endif - extern const char *mplayer_version; char *mp_format_time(double time, bool fractions); |