#import "auto_impl_utilities.h"
__BEGIN_DECLS
typedef struct {
void **referrer; auto_weak_callback_block_t *block;
} weak_referrer_t;
extern void weak_call_callbacks(auto_weak_callback_block_t *block);
typedef struct weak_referrer_array_t {
weak_referrer_t *refs;
unsigned num_refs;
unsigned num_allocated;
unsigned max_hash_displacement;
} weak_referrer_array_t;
typedef struct weak_entry_t {
const void *referent;
weak_referrer_array_t referrers;
} weak_entry_t;
extern auto_weak_callback_block_t *weak_clear_references(azone_t *azone, size_t garbage_count, vm_address_t *garbage, uintptr_t *weak_referents_count, uintptr_t *weak_refs_count);
extern void weak_register(azone_t *azone, const void *referent, void **referrer, auto_weak_callback_block_t *block);
extern void weak_unregister(azone_t *azone, const void *referent, void **referrer);
extern void weak_unregister_with_layout(azone_t *azone, void *block[], const unsigned char *map);
__END_DECLS