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;
+}
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