mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 04:00:10 +01:00
util/set: add _mesa_set_intersects
v2 (Jason Ekstrand): add asserts and iterate over smaller set Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401>
This commit is contained in:
parent
acf756a64f
commit
16f858968f
2 changed files with 23 additions and 0 deletions
|
|
@ -570,3 +570,23 @@ _mesa_pointer_set_create(void *mem_ctx)
|
|||
return _mesa_set_create(mem_ctx, _mesa_hash_pointer,
|
||||
_mesa_key_pointer_equal);
|
||||
}
|
||||
|
||||
bool
|
||||
_mesa_set_intersects(struct set *a, struct set *b)
|
||||
{
|
||||
assert(a->key_hash_function == b->key_hash_function);
|
||||
assert(a->key_equals_function == b->key_equals_function);
|
||||
|
||||
/* iterate over the set with less entries */
|
||||
if (b->entries < a->entries) {
|
||||
struct set *tmp = a;
|
||||
a = b;
|
||||
b = tmp;
|
||||
}
|
||||
|
||||
set_foreach(a, entry) {
|
||||
if (_mesa_set_search_pre_hashed(b, entry->hash, entry->key))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,6 +110,9 @@ _mesa_set_random_entry(struct set *set,
|
|||
struct set *
|
||||
_mesa_pointer_set_create(void *mem_ctx);
|
||||
|
||||
bool
|
||||
_mesa_set_intersects(struct set *a, struct set *b);
|
||||
|
||||
/**
|
||||
* This foreach function is safe against deletion, but not against
|
||||
* insertion (which may rehash the set, making entry a dangling
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue