From: Zbigniew Jędrzejewski-Szmek Date: Tue, 1 Sep 2020 11:18:56 +0000 (+0200) Subject: basic/hashmap,set: inline trivial set_iterate() wrapper X-Git-Tag: v247-rc1~319^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e4126adf453d170afae319f7d3d7a87b4d2f5159;p=thirdparty%2Fsystemd.git basic/hashmap,set: inline trivial set_iterate() wrapper The compiler would do this to, esp. with LTO, but we can short-circuit the whole process and make everything a bit simpler by avoiding the separate definition. (It would be nice to do the same for _set_new(), _set_ensure_allocated() and other similar functions which are one-line trivial wrappers too. Unfortunately that would require enum HashmapType to be made public, which we don't want to do.) --- diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index e0319031d6a..2605cad8d92 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -730,10 +730,6 @@ bool _hashmap_iterate(HashmapBase *h, Iterator *i, void **value, const void **ke return true; } -bool set_iterate(const Set *s, Iterator *i, void **value) { - return _hashmap_iterate(HASHMAP_BASE((Set*) s), i, value, NULL); -} - #define HASHMAP_FOREACH_IDX(idx, h, i) \ for ((i) = ITERATOR_FIRST, (idx) = hashmap_iterate_entry((h), &(i)); \ (idx != IDX_NIL); \ diff --git a/src/basic/set.h b/src/basic/set.h index e4fc1e3c4a0..b579e1b6dca 100644 --- a/src/basic/set.h +++ b/src/basic/set.h @@ -77,7 +77,9 @@ static inline unsigned set_buckets(const Set *s) { return _hashmap_buckets(HASHMAP_BASE((Set *) s)); } -bool set_iterate(const Set *s, Iterator *i, void **value); +static inline bool set_iterate(const Set *s, Iterator *i, void **value) { + return _hashmap_iterate(HASHMAP_BASE((Set*) s), i, value, NULL); +} static inline void set_clear(Set *s) { _hashmap_clear(HASHMAP_BASE(s), NULL, NULL);