Re: [RFC PATCH] hashmap API: introduce for_each_hashmap_entry() helper macro
Hello Junio,
On Thu, Mar 17, 2016 at 12:09 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 26 quoted lines
> Alexander Kuleshov <kuleshovmail@gmail.com> writes:
>
>> diff --git a/hashmap.h b/hashmap.h
>> index ab7958a..b8b158c 100644
>> --- a/hashmap.h
>> +++ b/hashmap.h
>> @@ -95,4 +95,11 @@ static inline const char *strintern(const char *string)
>> return memintern(string, strlen(string));
>> }
>>
>> +#define for_each_hashmap_entry(map, type) \
>> + struct type *entry; \
>> + struct hashmap_iter iter; \
>> + \
>> + hashmap_iter_init(map, &iter); \
>> + while ((entry = hashmap_iter_next(&iter)))
>> +
>
> This is an easy way to introduce decl-after-statement, i.e. needs an
> extra pair of {} around the thing. It also forbids the callers from
> defining "entry" and "iter" as their own identifier outside the
> scope of this macro and use them inside the block that is iterated
> over by shadowing these two variables.
>
> Other than that, it looks like a good concept. The syntax however
> needs more thought because of the above two issues, I think.Thanks for feedback. Will fix first issue and think about second.