@@ -27,10 +27,14 @@ # ifndef _Nullable # define _Nullable # endif #endif +typedef uint32_t (*_Nonnull objc_hashtable_hash_func)(const void *_Nonnull key); +typedef bool (*_Nonnull objc_hashtable_equal_func)(const void *_Nonnull key1, + const void *_Nonnull key2); + struct objc_class { Class _Nonnull isa; Class _Nullable superclass; const char *_Nonnull name; unsigned long version; @@ -187,13 +191,12 @@ const void *_Nonnull key, *_Nonnull object; uint32_t hash; }; struct objc_hashtable { - uint32_t (*_Nonnull hash)(const void *_Nonnull key); - bool (*_Nonnull equal)(const void *_Nonnull key1, - const void *_Nonnull key2); + objc_hashtable_hash_func hash; + objc_hashtable_equal_func equal; uint32_t count, size; struct objc_hashtable_bucket *_Nonnull *_Nullable data; }; struct objc_sparsearray { @@ -276,12 +279,11 @@ extern void objc_unregister_class(Class _Nonnull); extern void objc_unregister_all_classes(void); extern uint32_t objc_hash_string(const void *_Nonnull); extern bool objc_equal_string(const void *_Nonnull, const void *_Nonnull); extern struct objc_hashtable *_Nonnull objc_hashtable_new( - uint32_t (*_Nonnull)(const void *_Nonnull), - bool (*_Nonnull)(const void *_Nonnull, const void *_Nonnull), uint32_t); + objc_hashtable_hash_func, objc_hashtable_equal_func, uint32_t); extern struct objc_hashtable_bucket objc_deleted_bucket; extern void objc_hashtable_set(struct objc_hashtable *_Nonnull, const void *_Nonnull, const void *_Nonnull); extern void *_Nullable objc_hashtable_get(struct objc_hashtable *_Nonnull, const void *_Nonnull);