platform: add nmp_cache_iter_for_each_reverse() helper

This commit is contained in:
Thomas Haller 2021-08-17 11:19:35 +02:00
parent 53070705b0
commit 9c99c948fd
No known key found for this signature in database
GPG Key ID: 29C2366E4DFC5728
2 changed files with 16 additions and 0 deletions

View File

@ -120,4 +120,5 @@ ForEachMacros: ['c_list_for_each',
'nm_platform_iter_obj_for_each',
'nmp_cache_iter_for_each',
'nmp_cache_iter_for_each_link',
'nmp_cache_iter_for_each_reverse',
]

View File

@ -777,6 +777,18 @@ nmp_cache_iter_next(NMDedupMultiIter *iter, const NMPObject **out_obj)
return has_next;
}
static inline gboolean
nmp_cache_iter_prev(NMDedupMultiIter *iter, const NMPObject **out_obj)
{
gboolean has_prev;
has_prev = nm_dedup_multi_iter_prev(iter);
nm_assert(!has_prev || NMP_OBJECT_IS_VALID(iter->current->obj));
if (out_obj)
*out_obj = has_prev ? iter->current->obj : NULL;
return has_prev;
}
static inline gboolean
nmp_cache_iter_next_link(NMDedupMultiIter *iter, const NMPlatformLink **out_obj)
{
@ -792,6 +804,9 @@ nmp_cache_iter_next_link(NMDedupMultiIter *iter, const NMPlatformLink **out_obj)
#define nmp_cache_iter_for_each(iter, head, obj) \
for (nm_dedup_multi_iter_init((iter), (head)); nmp_cache_iter_next((iter), (obj));)
#define nmp_cache_iter_for_each_reverse(iter, head, obj) \
for (nm_dedup_multi_iter_init_reverse((iter), (head)); nmp_cache_iter_prev((iter), (obj));)
#define nmp_cache_iter_for_each_link(iter, head, obj) \
for (nm_dedup_multi_iter_init((iter), (head)); nmp_cache_iter_next_link((iter), (obj));)