From e2348c24a092717e424b3b031294b72d1df5aca1 Mon Sep 17 00:00:00 2001 From: Benoit Dejean Date: Sat, 28 Feb 2015 02:27:52 +0100 Subject: [PATCH] When pretty-printing an array, don't display 0 elements. --- examples/pprint.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/examples/pprint.c b/examples/pprint.c index c8f80b3a..ae018eac 100644 --- a/examples/pprint.c +++ b/examples/pprint.c @@ -21,14 +21,21 @@ #define PPRINT(DATA, FORMAT) printf("\t%4lu B %3lu " #DATA " = " FORMAT "\n", \ (unsigned long) sizeof buf.DATA, (unsigned long) buf_offsetof(DATA), buf.DATA) -#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \ -size_t i; \ -printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \ -(unsigned long) sizeof buf.ARRAY, (unsigned long) buf_offsetof(ARRAY),\ -(unsigned long) G_N_ELEMENTS(buf.ARRAY)); \ -for(i = 0; i < (SIZE - 1); ++i) printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \ -printf(".%u = " FORMAT " }\n", SIZE - 1 , buf.ARRAY[SIZE - 1]); \ -} while(0) +#define PPRINT_ARRAY(ARRAY, SIZE, FORMAT) do { \ + size_t i; \ + printf("\t%4lu B %3lu " #ARRAY "[%lu] = { ", \ + (unsigned long) sizeof buf.ARRAY, \ + (unsigned long) buf_offsetof(ARRAY), \ + (unsigned long) G_N_ELEMENTS(buf.ARRAY)); \ + for (i = 0; i < (SIZE); ++i) { \ + printf(".%u = " FORMAT ", ", i, buf.ARRAY[i]); \ + if (!buf.ARRAY[i] && i < (SIZE - 1) && !buf.ARRAY[i + 1]) { \ + do { i++; } while (i < SIZE && !buf.ARRAY[i]); \ + printf("..., "); \ + } \ + } \ + printf("}\n"); \ + } while(0) #define PPRINT_ENTRY_ARRAY(ARRAY, SIZE) do { \ size_t i; \