Calls the given function for key/value pairs in the glib.HashTable until predicate returns TRUE. The function is passed the key and value of each pair, and the given user_data parameter. The hash table may not be modified while iterating over it (you can't add/remove items).
Note, that hash tables are really only optimized for forward lookups, i.e. HashTable.lookup. So code that frequently issues HashTable.find or HashTable.foreach (e.g. in the order of once per every entry in a hash table) should probably be reworked to use additional or different data structures for reverse lookups (keep in mind that an O(n) find/foreach operation issued for all n values in a hash table ends up needing O(n*n) operations).
function to test the key/value pairs for a certain property
user data to pass to the function
The value of the first key/value pair is returned, for which predicate evaluates to TRUE. If no pair with the requested property is found, NULL is returned.