From 8de0859bcb48172a3dfcafa150fcd0319fa28ea4 Mon Sep 17 00:00:00 2001 From: Reimar Döffinger Date: Sun, 21 Mar 2010 14:46:32 +0000 Subject: Extend and move macros to create table printing functions to header. Simplifies creating custom functions for printing DV VLC-related tables. Originally committed as revision 22621 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/tableprint.c | 25 ------------------------- libavcodec/tableprint.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/libavcodec/tableprint.c b/libavcodec/tableprint.c index 6ff9f1f869..c2fbf0e74a 100644 --- a/libavcodec/tableprint.c +++ b/libavcodec/tableprint.c @@ -24,37 +24,12 @@ #include #include "tableprint.h" -#define WRITE_1D_FUNC(name, type, fmtstr, linebrk)\ -void write_##name##_array(const void *arg, int len, int dummy)\ -{\ - const type *data = arg;\ - int i;\ - printf(" ");\ - for (i = 0; i < len - 1; i++) {\ - printf(" "fmtstr",", data[i]);\ - if ((i & linebrk) == linebrk) printf("\n ");\ - }\ - printf(" "fmtstr"\n", data[i]);\ -} - WRITE_1D_FUNC(int8, int8_t, "%3"PRIi8, 15) WRITE_1D_FUNC(uint8, uint8_t, "0x%02"PRIx8, 15) WRITE_1D_FUNC(uint16, uint16_t, "0x%08"PRIx16, 7) WRITE_1D_FUNC(uint32, uint32_t, "0x%08"PRIx32, 7) WRITE_1D_FUNC(float, float, "%.18e", 3) -#define WRITE_2D_FUNC(name, type)\ -void write_##name##_2d_array(const void *arg, int len, int len2)\ -{\ - const type *data = arg;\ - int i;\ - printf(" {\n");\ - for (i = 0; i < len; i++) {\ - write_##name##_array(data + i * len2, len2, 0);\ - printf(i == len - 1 ? " }\n" : " }, {\n");\ - }\ -} - WRITE_2D_FUNC(int8, int8_t) WRITE_2D_FUNC(uint8, uint8_t) WRITE_2D_FUNC(uint32, uint32_t) diff --git a/libavcodec/tableprint.h b/libavcodec/tableprint.h index a0048be581..e91ba1ec32 100644 --- a/libavcodec/tableprint.h +++ b/libavcodec/tableprint.h @@ -24,6 +24,35 @@ #define AVCODEC_TABLEPRINT_H #include +#include + +#define WRITE_1D_FUNC_ARGV(name, type, linebrk, fmtstr, ...)\ +void write_##name##_array(const void *arg, int len, int dummy)\ +{\ + const type *data = arg;\ + int i;\ + printf(" ");\ + for (i = 0; i < len - 1; i++) {\ + printf(" "fmtstr",", __VA_ARGS__);\ + if ((i & linebrk) == linebrk) printf("\n ");\ + }\ + printf(" "fmtstr"\n", __VA_ARGS__);\ +} + +#define WRITE_1D_FUNC(name, type, fmtstr, linebrk)\ + WRITE_1D_FUNC_ARGV(name, type, linebrk, fmtstr, data[i]) + +#define WRITE_2D_FUNC(name, type)\ +void write_##name##_2d_array(const void *arg, int len, int len2)\ +{\ + const type *data = arg;\ + int i;\ + printf(" {\n");\ + for (i = 0; i < len; i++) {\ + write_##name##_array(data + i * len2, len2, 0);\ + printf(i == len - 1 ? " }\n" : " }, {\n");\ + }\ +} /** * \defgroup printfuncs Predefined functions for printing tables -- cgit v1.2.3