From ef54444e6d1da4b464c11e749c9643ed945a770b Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 10 May 2019 19:00:13 -0400 Subject: [PATCH] libext2fs: hide struct ext2fs_hashmap as an internal implementation detail Signed-off-by: Theodore Ts'o --- lib/ext2fs/hashmap.c | 16 ++++++++++++++++ lib/ext2fs/hashmap.h | 30 +++++++++--------------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/ext2fs/hashmap.c b/lib/ext2fs/hashmap.c index 3d8ee81..ffe61ce 100644 --- a/lib/ext2fs/hashmap.c +++ b/lib/ext2fs/hashmap.c @@ -1,6 +1,22 @@ #include "hashmap.h" #include +struct ext2fs_hashmap { + uint32_t size; + uint32_t(*hash)(const void *key, size_t len); + void(*free)(void*); + struct ext2fs_hashmap_entry *first; + struct ext2fs_hashmap_entry *last; +#if __GNUC_PREREQ (4, 8) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#endif + struct ext2fs_hashmap_entry *entries[0]; +#if __GNUC_PREREQ (4, 8) +#pragma GCC diagnostic pop +#endif +}; + uint32_t ext2fs_djb2_hash(const void *str, size_t size) { int c; diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h index 656d3d9..dcfa745 100644 --- a/lib/ext2fs/hashmap.h +++ b/lib/ext2fs/hashmap.h @@ -13,27 +13,15 @@ #endif #endif -struct ext2fs_hashmap { - uint32_t size; - uint32_t(*hash)(const void *key, size_t len); - void(*free)(void*); - struct ext2fs_hashmap_entry *first; - struct ext2fs_hashmap_entry *last; - struct ext2fs_hashmap_entry { - void *data; - const void *key; - size_t key_len; - struct ext2fs_hashmap_entry *next; - struct ext2fs_hashmap_entry *list_next; - struct ext2fs_hashmap_entry *list_prev; -#if __GNUC_PREREQ (4, 8) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpedantic" -#endif - } *entries[0]; -#if __GNUC_PREREQ (4, 8) -#pragma GCC diagnostic pop -#endif +struct ext2fs_hashmap; + +struct ext2fs_hashmap_entry { + void *data; + const void *key; + size_t key_len; + struct ext2fs_hashmap_entry *next; + struct ext2fs_hashmap_entry *list_next; + struct ext2fs_hashmap_entry *list_prev; }; struct ext2fs_hashmap *ext2fs_hashmap_create( -- 1.8.3.1