/* Generated by mkhooktypes.sh from hooktypes.in, do not edit! */
/* Type checking for hook functions */

#define hook_call_config_purge() hook_call_event("config_purge", NULL)
#define hook_add_config_purge(f) hook_add_hook("config_purge", f)
#define hook_add_first_config_purge(f) hook_add_hook_first("config_purge", f)
#define hook_del_config_purge(f) hook_del_hook("config_purge", f)
#define hook_call_config_ready() hook_call_event("config_ready", NULL)
#define hook_add_config_ready(f) hook_add_hook("config_ready", f)
#define hook_add_first_config_ready(f) hook_add_hook_first("config_ready", f)
#define hook_del_config_ready(f) hook_del_hook("config_ready", f)
#define hook_call_db_write(x) hook_call_event("db_write", ENSURE_TYPE(x, database_handle_t *))
#define hook_add_db_write(f) hook_add_hook("db_write", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_add_first_db_write(f) hook_add_hook_first("db_write", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_del_db_write(f) hook_del_hook("db_write", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_call_db_write_pre_ca(x) hook_call_event("db_write_pre_ca", ENSURE_TYPE(x, database_handle_t *))
#define hook_add_db_write_pre_ca(f) hook_add_hook("db_write_pre_ca", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_add_first_db_write_pre_ca(f) hook_add_hook_first("db_write_pre_ca", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_del_db_write_pre_ca(f) hook_del_hook("db_write_pre_ca", (void (*)(void *))ENSURE_TYPE(f, void (*)(database_handle_t *)))
#define hook_call_db_saved() hook_call_event("db_saved", NULL)
#define hook_add_db_saved(f) hook_add_hook("db_saved", f)
#define hook_add_first_db_saved(f) hook_add_hook_first("db_saved", f)
#define hook_del_db_saved(f) hook_del_hook("db_saved", f)
#define hook_call_shutdown() hook_call_event("shutdown", NULL)
#define hook_add_shutdown(f) hook_add_hook("shutdown", f)
#define hook_add_first_shutdown(f) hook_add_hook_first("shutdown", f)
#define hook_del_shutdown(f) hook_del_hook("shutdown", f)
#define hook_call_channel_add(x) hook_call_event("channel_add", ENSURE_TYPE(x, channel_t *))
#define hook_add_channel_add(f) hook_add_hook("channel_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_add_first_channel_add(f) hook_add_hook_first("channel_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_del_channel_add(f) hook_del_hook("channel_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_call_channel_delete(x) hook_call_event("channel_delete", ENSURE_TYPE(x, channel_t *))
#define hook_add_channel_delete(f) hook_add_hook("channel_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_add_first_channel_delete(f) hook_add_hook_first("channel_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_del_channel_delete(f) hook_del_hook("channel_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_call_channel_tschange(x) hook_call_event("channel_tschange", ENSURE_TYPE(x, channel_t *))
#define hook_add_channel_tschange(f) hook_add_hook("channel_tschange", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_add_first_channel_tschange(f) hook_add_hook_first("channel_tschange", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_del_channel_tschange(f) hook_del_hook("channel_tschange", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_call_channel_join(x) hook_call_event("channel_join", ENSURE_TYPE(x, hook_channel_joinpart_t *))
#define hook_add_channel_join(f) hook_add_hook("channel_join", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_add_first_channel_join(f) hook_add_hook_first("channel_join", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_del_channel_join(f) hook_del_hook("channel_join", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_call_channel_part(x) hook_call_event("channel_part", ENSURE_TYPE(x, hook_channel_joinpart_t *))
#define hook_add_channel_part(f) hook_add_hook("channel_part", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_add_first_channel_part(f) hook_add_hook_first("channel_part", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_del_channel_part(f) hook_del_hook("channel_part", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_joinpart_t *)))
#define hook_call_channel_mode(x) hook_call_event("channel_mode", ENSURE_TYPE(x, hook_channel_mode_t *))
#define hook_add_channel_mode(f) hook_add_hook("channel_mode", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_t *)))
#define hook_add_first_channel_mode(f) hook_add_hook_first("channel_mode", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_t *)))
#define hook_del_channel_mode(f) hook_del_hook("channel_mode", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_t *)))
#define hook_call_channel_mode_change(x) hook_call_event("channel_mode_change", ENSURE_TYPE(x, hook_channel_mode_change_t *))
#define hook_add_channel_mode_change(f) hook_add_hook("channel_mode_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_change_t *)))
#define hook_add_first_channel_mode_change(f) hook_add_hook_first("channel_mode_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_change_t *)))
#define hook_del_channel_mode_change(f) hook_del_hook("channel_mode_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_mode_change_t *)))
#define hook_call_channel_topic(x) hook_call_event("channel_topic", ENSURE_TYPE(x, channel_t *))
#define hook_add_channel_topic(f) hook_add_hook("channel_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_add_first_channel_topic(f) hook_add_hook_first("channel_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_del_channel_topic(f) hook_del_hook("channel_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(channel_t *)))
#define hook_call_channel_can_change_topic(x) hook_call_event("channel_can_change_topic", ENSURE_TYPE(x, hook_channel_topic_check_t *))
#define hook_add_channel_can_change_topic(f) hook_add_hook("channel_can_change_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_topic_check_t *)))
#define hook_add_first_channel_can_change_topic(f) hook_add_hook_first("channel_can_change_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_topic_check_t *)))
#define hook_del_channel_can_change_topic(f) hook_del_hook("channel_can_change_topic", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_topic_check_t *)))
#define hook_call_channel_message(x) hook_call_event("channel_message", ENSURE_TYPE(x, hook_cmessage_data_t *))
#define hook_add_channel_message(f) hook_add_hook("channel_message", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_cmessage_data_t *)))
#define hook_add_first_channel_message(f) hook_add_hook_first("channel_message", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_cmessage_data_t *)))
#define hook_del_channel_message(f) hook_del_hook("channel_message", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_cmessage_data_t *)))
#define hook_call_server_add(x) hook_call_event("server_add", ENSURE_TYPE(x, server_t *))
#define hook_add_server_add(f) hook_add_hook("server_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_add_first_server_add(f) hook_add_hook_first("server_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_del_server_add(f) hook_del_hook("server_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_call_server_eob(x) hook_call_event("server_eob", ENSURE_TYPE(x, server_t *))
#define hook_add_server_eob(f) hook_add_hook("server_eob", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_add_first_server_eob(f) hook_add_hook_first("server_eob", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_del_server_eob(f) hook_del_hook("server_eob", (void (*)(void *))ENSURE_TYPE(f, void (*)(server_t *)))
#define hook_call_server_delete(x) hook_call_event("server_delete", ENSURE_TYPE(x, hook_server_delete_t *))
#define hook_add_server_delete(f) hook_add_hook("server_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_server_delete_t *)))
#define hook_add_first_server_delete(f) hook_add_hook_first("server_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_server_delete_t *)))
#define hook_del_server_delete(f) hook_del_hook("server_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_server_delete_t *)))
#define hook_call_user_add(x) hook_call_event("user_add", ENSURE_TYPE(x, hook_user_nick_t *))
#define hook_add_user_add(f) hook_add_hook("user_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_add_first_user_add(f) hook_add_hook_first("user_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_del_user_add(f) hook_del_hook("user_add", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_call_user_delete(x) hook_call_event("user_delete", ENSURE_TYPE(x, user_t *))
#define hook_add_user_delete(f) hook_add_hook("user_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_delete(f) hook_add_hook_first("user_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_delete(f) hook_del_hook("user_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_user_delete_info(x) hook_call_event("user_delete_info", ENSURE_TYPE(x, hook_user_delete_t *))
#define hook_add_user_delete_info(f) hook_add_hook("user_delete_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_delete_t *)))
#define hook_add_first_user_delete_info(f) hook_add_hook_first("user_delete_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_delete_t *)))
#define hook_del_user_delete_info(f) hook_del_hook("user_delete_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_delete_t *)))
#define hook_call_user_nickchange(x) hook_call_event("user_nickchange", ENSURE_TYPE(x, hook_user_nick_t *))
#define hook_add_user_nickchange(f) hook_add_hook("user_nickchange", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_add_first_user_nickchange(f) hook_add_hook_first("user_nickchange", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_del_user_nickchange(f) hook_del_hook("user_nickchange", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_nick_t *)))
#define hook_call_user_away(x) hook_call_event("user_away", ENSURE_TYPE(x, user_t *))
#define hook_add_user_away(f) hook_add_hook("user_away", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_away(f) hook_add_hook_first("user_away", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_away(f) hook_del_hook("user_away", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_user_deoper(x) hook_call_event("user_deoper", ENSURE_TYPE(x, user_t *))
#define hook_add_user_deoper(f) hook_add_hook("user_deoper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_deoper(f) hook_add_hook_first("user_deoper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_deoper(f) hook_del_hook("user_deoper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_user_oper(x) hook_call_event("user_oper", ENSURE_TYPE(x, user_t *))
#define hook_add_user_oper(f) hook_add_hook("user_oper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_oper(f) hook_add_hook_first("user_oper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_oper(f) hook_del_hook("user_oper", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_channel_can_register(x) hook_call_event("channel_can_register", ENSURE_TYPE(x, hook_channel_register_check_t *))
#define hook_add_channel_can_register(f) hook_add_hook("channel_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_register_check_t *)))
#define hook_add_first_channel_can_register(f) hook_add_hook_first("channel_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_register_check_t *)))
#define hook_del_channel_can_register(f) hook_del_hook("channel_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_register_check_t *)))
#define hook_call_channel_drop(x) hook_call_event("channel_drop", ENSURE_TYPE(x, mychan_t *))
#define hook_add_channel_drop(f) hook_add_hook("channel_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mychan_t *)))
#define hook_add_first_channel_drop(f) hook_add_hook_first("channel_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mychan_t *)))
#define hook_del_channel_drop(f) hook_del_hook("channel_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mychan_t *)))
#define hook_call_channel_info(x) hook_call_event("channel_info", ENSURE_TYPE(x, hook_channel_req_t *))
#define hook_add_channel_info(f) hook_add_hook("channel_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_add_first_channel_info(f) hook_add_hook_first("channel_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_del_channel_info(f) hook_del_hook("channel_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_call_channel_register(x) hook_call_event("channel_register", ENSURE_TYPE(x, hook_channel_req_t *))
#define hook_add_channel_register(f) hook_add_hook("channel_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_add_first_channel_register(f) hook_add_hook_first("channel_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_del_channel_register(f) hook_del_hook("channel_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_req_t *)))
#define hook_call_channel_check_expire(x) hook_call_event("channel_check_expire", ENSURE_TYPE(x, hook_expiry_req_t *))
#define hook_add_channel_check_expire(f) hook_add_hook("channel_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_add_first_channel_check_expire(f) hook_add_hook_first("channel_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_del_channel_check_expire(f) hook_del_hook("channel_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_call_channel_acl_change(x) hook_call_event("channel_acl_change", ENSURE_TYPE(x, hook_channel_acl_req_t *))
#define hook_add_channel_acl_change(f) hook_add_hook("channel_acl_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_acl_req_t *)))
#define hook_add_first_channel_acl_change(f) hook_add_hook_first("channel_acl_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_acl_req_t *)))
#define hook_del_channel_acl_change(f) hook_del_hook("channel_acl_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_acl_req_t *)))
#define hook_call_group_drop(x) hook_call_event("group_drop", ENSURE_TYPE(x, mygroup_t *))
#define hook_add_group_drop(f) hook_add_hook("group_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_add_first_group_drop(f) hook_add_hook_first("group_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_del_group_drop(f) hook_del_hook("group_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_call_group_register(x) hook_call_event("group_register", ENSURE_TYPE(x, mygroup_t *))
#define hook_add_group_register(f) hook_add_hook("group_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_add_first_group_register(f) hook_add_hook_first("group_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_del_group_register(f) hook_del_hook("group_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(mygroup_t *)))
#define hook_call_nick_can_register(x) hook_call_event("nick_can_register", ENSURE_TYPE(x, hook_user_register_check_t *))
#define hook_add_nick_can_register(f) hook_add_hook("nick_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_add_first_nick_can_register(f) hook_add_hook_first("nick_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_del_nick_can_register(f) hook_del_hook("nick_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_call_nick_group(x) hook_call_event("nick_group", ENSURE_TYPE(x, hook_user_req_t *))
#define hook_add_nick_group(f) hook_add_hook("nick_group", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_add_first_nick_group(f) hook_add_hook_first("nick_group", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_del_nick_group(f) hook_del_hook("nick_group", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_call_nick_check(x) hook_call_event("nick_check", ENSURE_TYPE(x, user_t *))
#define hook_add_nick_check(f) hook_add_hook("nick_check", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_nick_check(f) hook_add_hook_first("nick_check", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_nick_check(f) hook_del_hook("nick_check", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_nick_enforce(x) hook_call_event("nick_enforce", ENSURE_TYPE(x, hook_nick_enforce_t *))
#define hook_add_nick_enforce(f) hook_add_hook("nick_enforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_nick_enforce_t *)))
#define hook_add_first_nick_enforce(f) hook_add_hook_first("nick_enforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_nick_enforce_t *)))
#define hook_del_nick_enforce(f) hook_del_hook("nick_enforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_nick_enforce_t *)))
#define hook_call_nick_ungroup(x) hook_call_event("nick_ungroup", ENSURE_TYPE(x, hook_user_req_t *))
#define hook_add_nick_ungroup(f) hook_add_hook("nick_ungroup", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_add_first_nick_ungroup(f) hook_add_hook_first("nick_ungroup", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_del_nick_ungroup(f) hook_del_hook("nick_ungroup", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_call_nick_check_expire(x) hook_call_event("nick_check_expire", ENSURE_TYPE(x, hook_expiry_req_t *))
#define hook_add_nick_check_expire(f) hook_add_hook("nick_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_add_first_nick_check_expire(f) hook_add_hook_first("nick_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_del_nick_check_expire(f) hook_del_hook("nick_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_call_sasl_input(x) hook_call_event("sasl_input", ENSURE_TYPE(x, sasl_message_t *))
#define hook_add_sasl_input(f) hook_add_hook("sasl_input", (void (*)(void *))ENSURE_TYPE(f, void (*)(sasl_message_t *)))
#define hook_add_first_sasl_input(f) hook_add_hook_first("sasl_input", (void (*)(void *))ENSURE_TYPE(f, void (*)(sasl_message_t *)))
#define hook_del_sasl_input(f) hook_del_hook("sasl_input", (void (*)(void *))ENSURE_TYPE(f, void (*)(sasl_message_t *)))
#define hook_call_service_introduce(x) hook_call_event("service_introduce", ENSURE_TYPE(x, service_t *))
#define hook_add_service_introduce(f) hook_add_hook("service_introduce", (void (*)(void *))ENSURE_TYPE(f, void (*)(service_t *)))
#define hook_add_first_service_introduce(f) hook_add_hook_first("service_introduce", (void (*)(void *))ENSURE_TYPE(f, void (*)(service_t *)))
#define hook_del_service_introduce(f) hook_del_hook("service_introduce", (void (*)(void *))ENSURE_TYPE(f, void (*)(service_t *)))
#define hook_call_user_can_register(x) hook_call_event("user_can_register", ENSURE_TYPE(x, hook_user_register_check_t *))
#define hook_add_user_can_register(f) hook_add_hook("user_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_add_first_user_can_register(f) hook_add_hook_first("user_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_del_user_can_register(f) hook_del_hook("user_can_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_register_check_t *)))
#define hook_call_user_can_login(x) hook_call_event("user_can_login", ENSURE_TYPE(x, hook_user_login_check_t *))
#define hook_add_user_can_login(f) hook_add_hook("user_can_login", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_login_check_t *)))
#define hook_add_first_user_can_login(f) hook_add_hook_first("user_can_login", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_login_check_t *)))
#define hook_del_user_can_login(f) hook_del_hook("user_can_login", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_login_check_t *)))
#define hook_call_user_drop(x) hook_call_event("user_drop", ENSURE_TYPE(x, myuser_t *))
#define hook_add_user_drop(f) hook_add_hook("user_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_add_first_user_drop(f) hook_add_hook_first("user_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_del_user_drop(f) hook_del_hook("user_drop", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_call_user_identify(x) hook_call_event("user_identify", ENSURE_TYPE(x, user_t *))
#define hook_add_user_identify(f) hook_add_hook("user_identify", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_identify(f) hook_add_hook_first("user_identify", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_identify(f) hook_del_hook("user_identify", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_user_info(x) hook_call_event("user_info", ENSURE_TYPE(x, hook_user_req_t *))
#define hook_add_user_info(f) hook_add_hook("user_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_add_first_user_info(f) hook_add_hook_first("user_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_del_user_info(f) hook_del_hook("user_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_call_user_info_noexist(x) hook_call_event("user_info_noexist", ENSURE_TYPE(x, hook_info_noexist_req_t *))
#define hook_add_user_info_noexist(f) hook_add_hook("user_info_noexist", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_info_noexist_req_t *)))
#define hook_add_first_user_info_noexist(f) hook_add_hook_first("user_info_noexist", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_info_noexist_req_t *)))
#define hook_del_user_info_noexist(f) hook_del_hook("user_info_noexist", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_info_noexist_req_t *)))
#define hook_call_user_register(x) hook_call_event("user_register", ENSURE_TYPE(x, myuser_t *))
#define hook_add_user_register(f) hook_add_hook("user_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_add_first_user_register(f) hook_add_hook_first("user_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_del_user_register(f) hook_del_hook("user_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_call_user_verify_register(x) hook_call_event("user_verify_register", ENSURE_TYPE(x, hook_user_req_t *))
#define hook_add_user_verify_register(f) hook_add_hook("user_verify_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_add_first_user_verify_register(f) hook_add_hook_first("user_verify_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_del_user_verify_register(f) hook_del_hook("user_verify_register", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_req_t *)))
#define hook_call_user_check_expire(x) hook_call_event("user_check_expire", ENSURE_TYPE(x, hook_expiry_req_t *))
#define hook_add_user_check_expire(f) hook_add_hook("user_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_add_first_user_check_expire(f) hook_add_hook_first("user_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_del_user_check_expire(f) hook_del_hook("user_check_expire", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_expiry_req_t *)))
#define hook_call_user_rename(x) hook_call_event("user_rename", ENSURE_TYPE(x, hook_user_rename_t *))
#define hook_add_user_rename(f) hook_add_hook("user_rename", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_rename_t *)))
#define hook_add_first_user_rename(f) hook_add_hook_first("user_rename", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_rename_t *)))
#define hook_del_user_rename(f) hook_del_hook("user_rename", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_rename_t *)))
#define hook_call_user_sethost(x) hook_call_event("user_sethost", ENSURE_TYPE(x, user_t *))
#define hook_add_user_sethost(f) hook_add_hook("user_sethost", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_user_sethost(f) hook_add_hook_first("user_sethost", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_user_sethost(f) hook_del_hook("user_sethost", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_user_needforce(x) hook_call_event("user_needforce", ENSURE_TYPE(x, hook_user_needforce_t *))
#define hook_add_user_needforce(f) hook_add_hook("user_needforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_needforce_t *)))
#define hook_add_first_user_needforce(f) hook_add_hook_first("user_needforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_needforce_t *)))
#define hook_del_user_needforce(f) hook_del_hook("user_needforce", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_user_needforce_t *)))
#define hook_call_myuser_delete(x) hook_call_event("myuser_delete", ENSURE_TYPE(x, myuser_t *))
#define hook_add_myuser_delete(f) hook_add_hook("myuser_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_add_first_myuser_delete(f) hook_add_hook_first("myuser_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_del_myuser_delete(f) hook_del_hook("myuser_delete", (void (*)(void *))ENSURE_TYPE(f, void (*)(myuser_t *)))
#define hook_call_metadata_change(x) hook_call_event("metadata_change", ENSURE_TYPE(x, hook_metadata_change_t *))
#define hook_add_metadata_change(f) hook_add_hook("metadata_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_metadata_change_t *)))
#define hook_add_first_metadata_change(f) hook_add_hook_first("metadata_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_metadata_change_t *)))
#define hook_del_metadata_change(f) hook_del_hook("metadata_change", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_metadata_change_t *)))
#define hook_call_host_request(x) hook_call_event("host_request", ENSURE_TYPE(x, hook_host_request_t *))
#define hook_add_host_request(f) hook_add_hook("host_request", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_host_request_t *)))
#define hook_add_first_host_request(f) hook_add_hook_first("host_request", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_host_request_t *)))
#define hook_del_host_request(f) hook_del_hook("host_request", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_host_request_t *)))
#define hook_call_channel_pick_successor(x) hook_call_event("channel_pick_successor", ENSURE_TYPE(x, hook_channel_succession_req_t *))
#define hook_add_channel_pick_successor(f) hook_add_hook("channel_pick_successor", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_add_first_channel_pick_successor(f) hook_add_hook_first("channel_pick_successor", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_del_channel_pick_successor(f) hook_del_hook("channel_pick_successor", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_call_channel_succession(x) hook_call_event("channel_succession", ENSURE_TYPE(x, hook_channel_succession_req_t *))
#define hook_add_channel_succession(f) hook_add_hook("channel_succession", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_add_first_channel_succession(f) hook_add_hook_first("channel_succession", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_del_channel_succession(f) hook_del_hook("channel_succession", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_channel_succession_req_t *)))
#define hook_call_grant_channel_access(x) hook_call_event("grant_channel_access", ENSURE_TYPE(x, user_t *))
#define hook_add_grant_channel_access(f) hook_add_hook("grant_channel_access", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_add_first_grant_channel_access(f) hook_add_hook_first("grant_channel_access", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_del_grant_channel_access(f) hook_del_hook("grant_channel_access", (void (*)(void *))ENSURE_TYPE(f, void (*)(user_t *)))
#define hook_call_operserv_info(x) hook_call_event("operserv_info", ENSURE_TYPE(x, sourceinfo_t *))
#define hook_add_operserv_info(f) hook_add_hook("operserv_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(sourceinfo_t *)))
#define hook_add_first_operserv_info(f) hook_add_hook_first("operserv_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(sourceinfo_t *)))
#define hook_del_operserv_info(f) hook_del_hook("operserv_info", (void (*)(void *))ENSURE_TYPE(f, void (*)(sourceinfo_t *)))
#define hook_call_module_load(x) hook_call_event("module_load", ENSURE_TYPE(x, hook_module_load_t *))
#define hook_add_module_load(f) hook_add_hook("module_load", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_module_load_t *)))
#define hook_add_first_module_load(f) hook_add_hook_first("module_load", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_module_load_t *)))
#define hook_del_module_load(f) hook_del_hook("module_load", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_module_load_t *)))
#define hook_call_myentity_find(x) hook_call_event("myentity_find", ENSURE_TYPE(x, hook_myentity_req_t *))
#define hook_add_myentity_find(f) hook_add_hook("myentity_find", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_myentity_req_t *)))
#define hook_add_first_myentity_find(f) hook_add_hook_first("myentity_find", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_myentity_req_t *)))
#define hook_del_myentity_find(f) hook_del_hook("myentity_find", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_myentity_req_t *)))
#define hook_call_sasl_may_impersonate(x) hook_call_event("sasl_may_impersonate", ENSURE_TYPE(x, hook_sasl_may_impersonate_t *))
#define hook_add_sasl_may_impersonate(f) hook_add_hook("sasl_may_impersonate", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_sasl_may_impersonate_t *)))
#define hook_add_first_sasl_may_impersonate(f) hook_add_hook_first("sasl_may_impersonate", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_sasl_may_impersonate_t *)))
#define hook_del_sasl_may_impersonate(f) hook_del_hook("sasl_may_impersonate", (void (*)(void *))ENSURE_TYPE(f, void (*)(hook_sasl_may_impersonate_t *)))
