/* Generated by makegobjectalias.pl */

#ifndef DISABLE_VISIBILITY

#include "glibconfig.h"

#ifdef G_HAVE_GNUC_VISIBILITY

#undef IN_FILE
#define IN_FILE defined

#undef IN_HEADER
#define IN_HEADER(x) 1

#if IN_HEADER(__G_BOXED_H__)
#if IN_FILE(__G_BOXED_C__)
#undef g_boxed_copy 
extern __typeof (g_boxed_copy) g_boxed_copy __attribute((alias("IA__g_boxed_copy"), visibility("default")));

#undef g_boxed_free 
extern __typeof (g_boxed_free) g_boxed_free __attribute((alias("IA__g_boxed_free"), visibility("default")));

#undef g_boxed_type_register_static 
extern __typeof (g_boxed_type_register_static) g_boxed_type_register_static __attribute((alias("IA__g_boxed_type_register_static"), visibility("default")));

#undef g_date_get_type 
extern __typeof (g_date_get_type) g_date_get_type __attribute((alias("IA__g_date_get_type"), visibility("default")));

#undef g_gstring_get_type 
extern __typeof (g_gstring_get_type) g_gstring_get_type __attribute((alias("IA__g_gstring_get_type"), visibility("default")));

#undef g_strv_get_type 
extern __typeof (g_strv_get_type) g_strv_get_type __attribute((alias("IA__g_strv_get_type"), visibility("default")));

#undef g_hash_table_get_type 
extern __typeof (g_hash_table_get_type) g_hash_table_get_type __attribute((alias("IA__g_hash_table_get_type"), visibility("default")));

#undef g_array_get_type 
extern __typeof (g_array_get_type) g_array_get_type __attribute((alias("IA__g_array_get_type"), visibility("default")));

#undef g_byte_array_get_type 
extern __typeof (g_byte_array_get_type) g_byte_array_get_type __attribute((alias("IA__g_byte_array_get_type"), visibility("default")));

#undef g_ptr_array_get_type 
extern __typeof (g_ptr_array_get_type) g_ptr_array_get_type __attribute((alias("IA__g_ptr_array_get_type"), visibility("default")));

#undef g_regex_get_type 
extern __typeof (g_regex_get_type) g_regex_get_type __attribute((alias("IA__g_regex_get_type"), visibility("default")));

#undef g_variant_type_get_gtype 
extern __typeof (g_variant_type_get_gtype) g_variant_type_get_gtype __attribute((alias("IA__g_variant_type_get_gtype"), visibility("default")));

#undef g_variant_get_gtype 
extern __typeof (g_variant_get_gtype) g_variant_get_gtype __attribute((alias("IA__g_variant_get_gtype"), visibility("default")));

#undef g_closure_get_type 
extern __typeof (g_closure_get_type) g_closure_get_type __attribute((alias("IA__g_closure_get_type"), visibility("default")));

#undef g_value_get_type 
extern __typeof (g_value_get_type) g_value_get_type __attribute((alias("IA__g_value_get_type"), visibility("default")));

#undef g_value_array_get_type 
extern __typeof (g_value_array_get_type) g_value_array_get_type __attribute((alias("IA__g_value_array_get_type"), visibility("default")));

#undef g_value_set_boxed 
extern __typeof (g_value_set_boxed) g_value_set_boxed __attribute((alias("IA__g_value_set_boxed"), visibility("default")));

#undef g_value_take_boxed 
extern __typeof (g_value_take_boxed) g_value_take_boxed __attribute((alias("IA__g_value_take_boxed"), visibility("default")));

#undef g_value_dup_boxed 
extern __typeof (g_value_dup_boxed) g_value_dup_boxed __attribute((alias("IA__g_value_dup_boxed"), visibility("default")));

#undef g_value_get_boxed 
extern __typeof (g_value_get_boxed) g_value_get_boxed __attribute((alias("IA__g_value_get_boxed"), visibility("default")));

#undef g_value_set_static_boxed 
extern __typeof (g_value_set_static_boxed) g_value_set_static_boxed __attribute((alias("IA__g_value_set_static_boxed"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_value_set_boxed_take_ownership 
extern __typeof (g_value_set_boxed_take_ownership) g_value_set_boxed_take_ownership __attribute((alias("IA__g_value_set_boxed_take_ownership"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_MARSHAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
#undef g_cclosure_marshal_BOOLEAN__FLAGS 
extern __typeof (g_cclosure_marshal_BOOLEAN__FLAGS) g_cclosure_marshal_BOOLEAN__FLAGS __attribute((alias("IA__g_cclosure_marshal_BOOLEAN__FLAGS"), visibility("default")));

#undef g_cclosure_marshal_STRING__OBJECT_POINTER 
extern __typeof (g_cclosure_marshal_STRING__OBJECT_POINTER) g_cclosure_marshal_STRING__OBJECT_POINTER __attribute((alias("IA__g_cclosure_marshal_STRING__OBJECT_POINTER"), visibility("default")));

#undef g_cclosure_marshal_VOID__BOOLEAN 
extern __typeof (g_cclosure_marshal_VOID__BOOLEAN) g_cclosure_marshal_VOID__BOOLEAN __attribute((alias("IA__g_cclosure_marshal_VOID__BOOLEAN"), visibility("default")));

#undef g_cclosure_marshal_VOID__BOXED 
extern __typeof (g_cclosure_marshal_VOID__BOXED) g_cclosure_marshal_VOID__BOXED __attribute((alias("IA__g_cclosure_marshal_VOID__BOXED"), visibility("default")));

#undef g_cclosure_marshal_VOID__CHAR 
extern __typeof (g_cclosure_marshal_VOID__CHAR) g_cclosure_marshal_VOID__CHAR __attribute((alias("IA__g_cclosure_marshal_VOID__CHAR"), visibility("default")));

#undef g_cclosure_marshal_VOID__DOUBLE 
extern __typeof (g_cclosure_marshal_VOID__DOUBLE) g_cclosure_marshal_VOID__DOUBLE __attribute((alias("IA__g_cclosure_marshal_VOID__DOUBLE"), visibility("default")));

#undef g_cclosure_marshal_VOID__ENUM 
extern __typeof (g_cclosure_marshal_VOID__ENUM) g_cclosure_marshal_VOID__ENUM __attribute((alias("IA__g_cclosure_marshal_VOID__ENUM"), visibility("default")));

#undef g_cclosure_marshal_VOID__FLAGS 
extern __typeof (g_cclosure_marshal_VOID__FLAGS) g_cclosure_marshal_VOID__FLAGS __attribute((alias("IA__g_cclosure_marshal_VOID__FLAGS"), visibility("default")));

#undef g_cclosure_marshal_VOID__FLOAT 
extern __typeof (g_cclosure_marshal_VOID__FLOAT) g_cclosure_marshal_VOID__FLOAT __attribute((alias("IA__g_cclosure_marshal_VOID__FLOAT"), visibility("default")));

#undef g_cclosure_marshal_VOID__INT 
extern __typeof (g_cclosure_marshal_VOID__INT) g_cclosure_marshal_VOID__INT __attribute((alias("IA__g_cclosure_marshal_VOID__INT"), visibility("default")));

#undef g_cclosure_marshal_VOID__LONG 
extern __typeof (g_cclosure_marshal_VOID__LONG) g_cclosure_marshal_VOID__LONG __attribute((alias("IA__g_cclosure_marshal_VOID__LONG"), visibility("default")));

#undef g_cclosure_marshal_VOID__OBJECT 
extern __typeof (g_cclosure_marshal_VOID__OBJECT) g_cclosure_marshal_VOID__OBJECT __attribute((alias("IA__g_cclosure_marshal_VOID__OBJECT"), visibility("default")));

#undef g_cclosure_marshal_VOID__PARAM 
extern __typeof (g_cclosure_marshal_VOID__PARAM) g_cclosure_marshal_VOID__PARAM __attribute((alias("IA__g_cclosure_marshal_VOID__PARAM"), visibility("default")));

#undef g_cclosure_marshal_VOID__POINTER 
extern __typeof (g_cclosure_marshal_VOID__POINTER) g_cclosure_marshal_VOID__POINTER __attribute((alias("IA__g_cclosure_marshal_VOID__POINTER"), visibility("default")));

#undef g_cclosure_marshal_VOID__STRING 
extern __typeof (g_cclosure_marshal_VOID__STRING) g_cclosure_marshal_VOID__STRING __attribute((alias("IA__g_cclosure_marshal_VOID__STRING"), visibility("default")));

#undef g_cclosure_marshal_VOID__UCHAR 
extern __typeof (g_cclosure_marshal_VOID__UCHAR) g_cclosure_marshal_VOID__UCHAR __attribute((alias("IA__g_cclosure_marshal_VOID__UCHAR"), visibility("default")));

#undef g_cclosure_marshal_VOID__UINT 
extern __typeof (g_cclosure_marshal_VOID__UINT) g_cclosure_marshal_VOID__UINT __attribute((alias("IA__g_cclosure_marshal_VOID__UINT"), visibility("default")));

#undef g_cclosure_marshal_VOID__UINT_POINTER 
extern __typeof (g_cclosure_marshal_VOID__UINT_POINTER) g_cclosure_marshal_VOID__UINT_POINTER __attribute((alias("IA__g_cclosure_marshal_VOID__UINT_POINTER"), visibility("default")));

#undef g_cclosure_marshal_VOID__ULONG 
extern __typeof (g_cclosure_marshal_VOID__ULONG) g_cclosure_marshal_VOID__ULONG __attribute((alias("IA__g_cclosure_marshal_VOID__ULONG"), visibility("default")));

#undef g_cclosure_marshal_VOID__VOID 
extern __typeof (g_cclosure_marshal_VOID__VOID) g_cclosure_marshal_VOID__VOID __attribute((alias("IA__g_cclosure_marshal_VOID__VOID"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CLOSURE_H__)
#if IN_FILE(__G_CLOSURE_C__)
#undef g_cclosure_new 
extern __typeof (g_cclosure_new) g_cclosure_new __attribute((alias("IA__g_cclosure_new"), visibility("default")));

#undef g_cclosure_new_swap 
extern __typeof (g_cclosure_new_swap) g_cclosure_new_swap __attribute((alias("IA__g_cclosure_new_swap"), visibility("default")));

#undef g_closure_add_finalize_notifier 
extern __typeof (g_closure_add_finalize_notifier) g_closure_add_finalize_notifier __attribute((alias("IA__g_closure_add_finalize_notifier"), visibility("default")));

#undef g_closure_add_invalidate_notifier 
extern __typeof (g_closure_add_invalidate_notifier) g_closure_add_invalidate_notifier __attribute((alias("IA__g_closure_add_invalidate_notifier"), visibility("default")));

#undef g_closure_add_marshal_guards 
extern __typeof (g_closure_add_marshal_guards) g_closure_add_marshal_guards __attribute((alias("IA__g_closure_add_marshal_guards"), visibility("default")));

#undef g_closure_invalidate 
extern __typeof (g_closure_invalidate) g_closure_invalidate __attribute((alias("IA__g_closure_invalidate"), visibility("default")));

#undef g_closure_invoke 
extern __typeof (g_closure_invoke) g_closure_invoke __attribute((alias("IA__g_closure_invoke"), visibility("default")));

#undef g_closure_new_simple 
extern __typeof (g_closure_new_simple) g_closure_new_simple __attribute((alias("IA__g_closure_new_simple"), visibility("default")));

#undef g_closure_ref 
extern __typeof (g_closure_ref) g_closure_ref __attribute((alias("IA__g_closure_ref"), visibility("default")));

#undef g_closure_remove_finalize_notifier 
extern __typeof (g_closure_remove_finalize_notifier) g_closure_remove_finalize_notifier __attribute((alias("IA__g_closure_remove_finalize_notifier"), visibility("default")));

#undef g_closure_remove_invalidate_notifier 
extern __typeof (g_closure_remove_invalidate_notifier) g_closure_remove_invalidate_notifier __attribute((alias("IA__g_closure_remove_invalidate_notifier"), visibility("default")));

#undef g_closure_set_marshal 
extern __typeof (g_closure_set_marshal) g_closure_set_marshal __attribute((alias("IA__g_closure_set_marshal"), visibility("default")));

#undef g_closure_set_meta_marshal 
extern __typeof (g_closure_set_meta_marshal) g_closure_set_meta_marshal __attribute((alias("IA__g_closure_set_meta_marshal"), visibility("default")));

#undef g_closure_sink 
extern __typeof (g_closure_sink) g_closure_sink __attribute((alias("IA__g_closure_sink"), visibility("default")));

#undef g_closure_unref 
extern __typeof (g_closure_unref) g_closure_unref __attribute((alias("IA__g_closure_unref"), visibility("default")));

#undef g_signal_type_cclosure_new 
extern __typeof (g_signal_type_cclosure_new) g_signal_type_cclosure_new __attribute((alias("IA__g_signal_type_cclosure_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_ENUMS_H__)
#if IN_FILE(__G_ENUMS_C__)
#undef g_enum_complete_type_info 
extern __typeof (g_enum_complete_type_info) g_enum_complete_type_info __attribute((alias("IA__g_enum_complete_type_info"), visibility("default")));

#undef g_enum_get_value 
extern __typeof (g_enum_get_value) g_enum_get_value __attribute((alias("IA__g_enum_get_value"), visibility("default")));

#undef g_enum_get_value_by_name 
extern __typeof (g_enum_get_value_by_name) g_enum_get_value_by_name __attribute((alias("IA__g_enum_get_value_by_name"), visibility("default")));

#undef g_enum_get_value_by_nick 
extern __typeof (g_enum_get_value_by_nick) g_enum_get_value_by_nick __attribute((alias("IA__g_enum_get_value_by_nick"), visibility("default")));

#undef g_enum_register_static 
extern __typeof (g_enum_register_static) g_enum_register_static __attribute((alias("IA__g_enum_register_static"), visibility("default")));

#undef g_flags_complete_type_info 
extern __typeof (g_flags_complete_type_info) g_flags_complete_type_info __attribute((alias("IA__g_flags_complete_type_info"), visibility("default")));

#undef g_flags_get_first_value 
extern __typeof (g_flags_get_first_value) g_flags_get_first_value __attribute((alias("IA__g_flags_get_first_value"), visibility("default")));

#undef g_flags_get_value_by_name 
extern __typeof (g_flags_get_value_by_name) g_flags_get_value_by_name __attribute((alias("IA__g_flags_get_value_by_name"), visibility("default")));

#undef g_flags_get_value_by_nick 
extern __typeof (g_flags_get_value_by_nick) g_flags_get_value_by_nick __attribute((alias("IA__g_flags_get_value_by_nick"), visibility("default")));

#undef g_flags_register_static 
extern __typeof (g_flags_register_static) g_flags_register_static __attribute((alias("IA__g_flags_register_static"), visibility("default")));

#undef g_value_set_enum 
extern __typeof (g_value_set_enum) g_value_set_enum __attribute((alias("IA__g_value_set_enum"), visibility("default")));

#undef g_value_set_flags 
extern __typeof (g_value_set_flags) g_value_set_flags __attribute((alias("IA__g_value_set_flags"), visibility("default")));

#undef g_value_get_enum 
extern __typeof (g_value_get_enum) g_value_get_enum __attribute((alias("IA__g_value_get_enum"), visibility("default")));

#undef g_value_get_flags 
extern __typeof (g_value_get_flags) g_value_get_flags __attribute((alias("IA__g_value_get_flags"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOURCECLOSURE_H__)
#if IN_FILE(__G_SOURCECLOSURE_C__)
#undef g_io_channel_get_type 
extern __typeof (g_io_channel_get_type) g_io_channel_get_type __attribute((alias("IA__g_io_channel_get_type"), visibility("default")));

#undef g_io_condition_get_type 
extern __typeof (g_io_condition_get_type) g_io_condition_get_type __attribute((alias("IA__g_io_condition_get_type"), visibility("default")));

#undef g_source_set_closure 
extern __typeof (g_source_set_closure) g_source_set_closure __attribute((alias("IA__g_source_set_closure"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_OBJECT_H__)
#if IN_FILE(__G_OBJECT_C__)
#undef g_cclosure_new_object 
extern __typeof (g_cclosure_new_object) g_cclosure_new_object __attribute((alias("IA__g_cclosure_new_object"), visibility("default")));

#undef g_cclosure_new_object_swap 
extern __typeof (g_cclosure_new_object_swap) g_cclosure_new_object_swap __attribute((alias("IA__g_cclosure_new_object_swap"), visibility("default")));

#undef g_closure_new_object 
extern __typeof (g_closure_new_object) g_closure_new_object __attribute((alias("IA__g_closure_new_object"), visibility("default")));

#undef g_initially_unowned_get_type 
extern __typeof (g_initially_unowned_get_type) g_initially_unowned_get_type __attribute((alias("IA__g_initially_unowned_get_type"), visibility("default")));

#undef g_object_add_weak_pointer 
extern __typeof (g_object_add_weak_pointer) g_object_add_weak_pointer __attribute((alias("IA__g_object_add_weak_pointer"), visibility("default")));

#undef g_object_class_find_property 
extern __typeof (g_object_class_find_property) g_object_class_find_property __attribute((alias("IA__g_object_class_find_property"), visibility("default")));

#undef g_object_class_install_property 
extern __typeof (g_object_class_install_property) g_object_class_install_property __attribute((alias("IA__g_object_class_install_property"), visibility("default")));

#undef g_object_class_list_properties 
extern __typeof (g_object_class_list_properties) g_object_class_list_properties __attribute((alias("IA__g_object_class_list_properties"), visibility("default")));

#undef g_object_class_override_property 
extern __typeof (g_object_class_override_property) g_object_class_override_property __attribute((alias("IA__g_object_class_override_property"), visibility("default")));

#undef g_object_connect 
extern __typeof (g_object_connect) g_object_connect __attribute((alias("IA__g_object_connect"), visibility("default")));

#undef g_object_disconnect 
extern __typeof (g_object_disconnect) g_object_disconnect __attribute((alias("IA__g_object_disconnect"), visibility("default")));

#undef g_object_freeze_notify 
extern __typeof (g_object_freeze_notify) g_object_freeze_notify __attribute((alias("IA__g_object_freeze_notify"), visibility("default")));

#undef g_object_get 
extern __typeof (g_object_get) g_object_get __attribute((alias("IA__g_object_get"), visibility("default")));

#undef g_object_get_data 
extern __typeof (g_object_get_data) g_object_get_data __attribute((alias("IA__g_object_get_data"), visibility("default")));

#undef g_object_get_property 
extern __typeof (g_object_get_property) g_object_get_property __attribute((alias("IA__g_object_get_property"), visibility("default")));

#undef g_object_get_qdata 
extern __typeof (g_object_get_qdata) g_object_get_qdata __attribute((alias("IA__g_object_get_qdata"), visibility("default")));

#undef g_object_get_type 
extern __typeof (g_object_get_type) g_object_get_type __attribute((alias("IA__g_object_get_type"), visibility("default")));

#undef g_object_get_valist 
extern __typeof (g_object_get_valist) g_object_get_valist __attribute((alias("IA__g_object_get_valist"), visibility("default")));

#undef g_object_interface_find_property 
extern __typeof (g_object_interface_find_property) g_object_interface_find_property __attribute((alias("IA__g_object_interface_find_property"), visibility("default")));

#undef g_object_interface_install_property 
extern __typeof (g_object_interface_install_property) g_object_interface_install_property __attribute((alias("IA__g_object_interface_install_property"), visibility("default")));

#undef g_object_interface_list_properties 
extern __typeof (g_object_interface_list_properties) g_object_interface_list_properties __attribute((alias("IA__g_object_interface_list_properties"), visibility("default")));

#undef g_object_new 
extern __typeof (g_object_new) g_object_new __attribute((alias("IA__g_object_new"), visibility("default")));

#undef g_object_newv 
extern __typeof (g_object_newv) g_object_newv __attribute((alias("IA__g_object_newv"), visibility("default")));

#undef g_object_new_valist 
extern __typeof (g_object_new_valist) g_object_new_valist __attribute((alias("IA__g_object_new_valist"), visibility("default")));

#undef g_object_notify 
extern __typeof (g_object_notify) g_object_notify __attribute((alias("IA__g_object_notify"), visibility("default")));

#undef g_object_is_floating 
extern __typeof (g_object_is_floating) g_object_is_floating __attribute((alias("IA__g_object_is_floating"), visibility("default")));

#undef g_object_ref_sink 
extern __typeof (g_object_ref_sink) g_object_ref_sink __attribute((alias("IA__g_object_ref_sink"), visibility("default")));

#undef g_object_force_floating 
extern __typeof (g_object_force_floating) g_object_force_floating __attribute((alias("IA__g_object_force_floating"), visibility("default")));

#undef g_object_ref 
extern __typeof (g_object_ref) g_object_ref __attribute((alias("IA__g_object_ref"), visibility("default")));

#undef g_object_unref 
extern __typeof (g_object_unref) g_object_unref __attribute((alias("IA__g_object_unref"), visibility("default")));

#undef g_object_remove_weak_pointer 
extern __typeof (g_object_remove_weak_pointer) g_object_remove_weak_pointer __attribute((alias("IA__g_object_remove_weak_pointer"), visibility("default")));

#undef g_object_run_dispose 
extern __typeof (g_object_run_dispose) g_object_run_dispose __attribute((alias("IA__g_object_run_dispose"), visibility("default")));

#undef g_object_set 
extern __typeof (g_object_set) g_object_set __attribute((alias("IA__g_object_set"), visibility("default")));

#undef g_object_set_data 
extern __typeof (g_object_set_data) g_object_set_data __attribute((alias("IA__g_object_set_data"), visibility("default")));

#undef g_object_set_data_full 
extern __typeof (g_object_set_data_full) g_object_set_data_full __attribute((alias("IA__g_object_set_data_full"), visibility("default")));

#undef g_object_set_property 
extern __typeof (g_object_set_property) g_object_set_property __attribute((alias("IA__g_object_set_property"), visibility("default")));

#undef g_object_set_qdata 
extern __typeof (g_object_set_qdata) g_object_set_qdata __attribute((alias("IA__g_object_set_qdata"), visibility("default")));

#undef g_object_set_qdata_full 
extern __typeof (g_object_set_qdata_full) g_object_set_qdata_full __attribute((alias("IA__g_object_set_qdata_full"), visibility("default")));

#undef g_object_set_valist 
extern __typeof (g_object_set_valist) g_object_set_valist __attribute((alias("IA__g_object_set_valist"), visibility("default")));

#undef g_object_steal_data 
extern __typeof (g_object_steal_data) g_object_steal_data __attribute((alias("IA__g_object_steal_data"), visibility("default")));

#undef g_object_steal_qdata 
extern __typeof (g_object_steal_qdata) g_object_steal_qdata __attribute((alias("IA__g_object_steal_qdata"), visibility("default")));

#undef g_object_thaw_notify 
extern __typeof (g_object_thaw_notify) g_object_thaw_notify __attribute((alias("IA__g_object_thaw_notify"), visibility("default")));

#undef g_object_watch_closure 
extern __typeof (g_object_watch_closure) g_object_watch_closure __attribute((alias("IA__g_object_watch_closure"), visibility("default")));

#undef g_object_weak_ref 
extern __typeof (g_object_weak_ref) g_object_weak_ref __attribute((alias("IA__g_object_weak_ref"), visibility("default")));

#undef g_object_weak_unref 
extern __typeof (g_object_weak_unref) g_object_weak_unref __attribute((alias("IA__g_object_weak_unref"), visibility("default")));

#undef g_object_add_toggle_ref 
extern __typeof (g_object_add_toggle_ref) g_object_add_toggle_ref __attribute((alias("IA__g_object_add_toggle_ref"), visibility("default")));

#undef g_object_remove_toggle_ref 
extern __typeof (g_object_remove_toggle_ref) g_object_remove_toggle_ref __attribute((alias("IA__g_object_remove_toggle_ref"), visibility("default")));

#undef g_value_get_object 
extern __typeof (g_value_get_object) g_value_get_object __attribute((alias("IA__g_value_get_object"), visibility("default")));

#undef g_value_set_object 
extern __typeof (g_value_set_object) g_value_set_object __attribute((alias("IA__g_value_set_object"), visibility("default")));

#undef g_value_dup_object 
extern __typeof (g_value_dup_object) g_value_dup_object __attribute((alias("IA__g_value_dup_object"), visibility("default")));

#undef g_value_take_object 
extern __typeof (g_value_take_object) g_value_take_object __attribute((alias("IA__g_value_take_object"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_value_set_object_take_ownership 
extern __typeof (g_value_set_object_take_ownership) g_value_set_object_take_ownership __attribute((alias("IA__g_value_set_object_take_ownership"), visibility("default")));

#undef g_object_compat_control 
extern __typeof (g_object_compat_control) g_object_compat_control __attribute((alias("IA__g_object_compat_control"), visibility("default")));

#endif
#undef g_signal_connect_object 
extern __typeof (g_signal_connect_object) g_signal_connect_object __attribute((alias("IA__g_signal_connect_object"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_PARAMSPECS_H__)
#if IN_FILE(__G_PARAMSPECS_C__)
#undef g_param_spec_boolean 
extern __typeof (g_param_spec_boolean) g_param_spec_boolean __attribute((alias("IA__g_param_spec_boolean"), visibility("default")));

#undef g_param_spec_boxed 
extern __typeof (g_param_spec_boxed) g_param_spec_boxed __attribute((alias("IA__g_param_spec_boxed"), visibility("default")));

#undef g_param_spec_char 
extern __typeof (g_param_spec_char) g_param_spec_char __attribute((alias("IA__g_param_spec_char"), visibility("default")));

#undef g_param_spec_double 
extern __typeof (g_param_spec_double) g_param_spec_double __attribute((alias("IA__g_param_spec_double"), visibility("default")));

#undef g_param_spec_enum 
extern __typeof (g_param_spec_enum) g_param_spec_enum __attribute((alias("IA__g_param_spec_enum"), visibility("default")));

#undef g_param_spec_flags 
extern __typeof (g_param_spec_flags) g_param_spec_flags __attribute((alias("IA__g_param_spec_flags"), visibility("default")));

#undef g_param_spec_float 
extern __typeof (g_param_spec_float) g_param_spec_float __attribute((alias("IA__g_param_spec_float"), visibility("default")));

#undef g_param_spec_int 
extern __typeof (g_param_spec_int) g_param_spec_int __attribute((alias("IA__g_param_spec_int"), visibility("default")));

#undef g_param_spec_int64 
extern __typeof (g_param_spec_int64) g_param_spec_int64 __attribute((alias("IA__g_param_spec_int64"), visibility("default")));

#undef g_param_spec_long 
extern __typeof (g_param_spec_long) g_param_spec_long __attribute((alias("IA__g_param_spec_long"), visibility("default")));

#undef g_param_spec_object 
extern __typeof (g_param_spec_object) g_param_spec_object __attribute((alias("IA__g_param_spec_object"), visibility("default")));

#undef g_param_spec_override 
extern __typeof (g_param_spec_override) g_param_spec_override __attribute((alias("IA__g_param_spec_override"), visibility("default")));

#undef g_param_spec_gtype 
extern __typeof (g_param_spec_gtype) g_param_spec_gtype __attribute((alias("IA__g_param_spec_gtype"), visibility("default")));

#undef g_param_spec_param 
extern __typeof (g_param_spec_param) g_param_spec_param __attribute((alias("IA__g_param_spec_param"), visibility("default")));

#undef g_param_spec_pointer 
extern __typeof (g_param_spec_pointer) g_param_spec_pointer __attribute((alias("IA__g_param_spec_pointer"), visibility("default")));

#undef g_param_spec_string 
extern __typeof (g_param_spec_string) g_param_spec_string __attribute((alias("IA__g_param_spec_string"), visibility("default")));

#undef g_param_spec_uchar 
extern __typeof (g_param_spec_uchar) g_param_spec_uchar __attribute((alias("IA__g_param_spec_uchar"), visibility("default")));

#undef g_param_spec_uint 
extern __typeof (g_param_spec_uint) g_param_spec_uint __attribute((alias("IA__g_param_spec_uint"), visibility("default")));

#undef g_param_spec_uint64 
extern __typeof (g_param_spec_uint64) g_param_spec_uint64 __attribute((alias("IA__g_param_spec_uint64"), visibility("default")));

#undef g_param_spec_ulong 
extern __typeof (g_param_spec_ulong) g_param_spec_ulong __attribute((alias("IA__g_param_spec_ulong"), visibility("default")));

#undef g_param_spec_unichar 
extern __typeof (g_param_spec_unichar) g_param_spec_unichar __attribute((alias("IA__g_param_spec_unichar"), visibility("default")));

#undef g_param_spec_value_array 
extern __typeof (g_param_spec_value_array) g_param_spec_value_array __attribute((alias("IA__g_param_spec_value_array"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_PARAM_H__)
#if IN_FILE(__G_PARAM_C__) 
#undef g_param_spec_get_blurb 
extern __typeof (g_param_spec_get_blurb) g_param_spec_get_blurb __attribute((alias("IA__g_param_spec_get_blurb"), visibility("default")));

#undef g_param_spec_get_name 
extern __typeof (g_param_spec_get_name) g_param_spec_get_name __attribute((alias("IA__g_param_spec_get_name"), visibility("default")));

#undef g_param_spec_get_nick 
extern __typeof (g_param_spec_get_nick) g_param_spec_get_nick __attribute((alias("IA__g_param_spec_get_nick"), visibility("default")));

#undef g_param_spec_get_redirect_target 
extern __typeof (g_param_spec_get_redirect_target) g_param_spec_get_redirect_target __attribute((alias("IA__g_param_spec_get_redirect_target"), visibility("default")));

#undef g_param_spec_internal 
extern __typeof (g_param_spec_internal) g_param_spec_internal __attribute((alias("IA__g_param_spec_internal"), visibility("default")));

#undef g_param_type_register_static 
extern __typeof (g_param_type_register_static) g_param_type_register_static __attribute((alias("IA__g_param_type_register_static"), visibility("default")));

#undef g_param_spec_ref 
extern __typeof (g_param_spec_ref) g_param_spec_ref __attribute((alias("IA__g_param_spec_ref"), visibility("default")));

#undef g_param_spec_ref_sink 
extern __typeof (g_param_spec_ref_sink) g_param_spec_ref_sink __attribute((alias("IA__g_param_spec_ref_sink"), visibility("default")));

#undef g_param_spec_unref 
extern __typeof (g_param_spec_unref) g_param_spec_unref __attribute((alias("IA__g_param_spec_unref"), visibility("default")));

#undef g_param_spec_sink 
extern __typeof (g_param_spec_sink) g_param_spec_sink __attribute((alias("IA__g_param_spec_sink"), visibility("default")));

#undef g_param_spec_steal_qdata 
extern __typeof (g_param_spec_steal_qdata) g_param_spec_steal_qdata __attribute((alias("IA__g_param_spec_steal_qdata"), visibility("default")));

#undef g_param_spec_set_qdata 
extern __typeof (g_param_spec_set_qdata) g_param_spec_set_qdata __attribute((alias("IA__g_param_spec_set_qdata"), visibility("default")));

#undef g_param_spec_set_qdata_full 
extern __typeof (g_param_spec_set_qdata_full) g_param_spec_set_qdata_full __attribute((alias("IA__g_param_spec_set_qdata_full"), visibility("default")));

#undef g_param_spec_get_qdata 
extern __typeof (g_param_spec_get_qdata) g_param_spec_get_qdata __attribute((alias("IA__g_param_spec_get_qdata"), visibility("default")));

#undef g_param_value_convert 
extern __typeof (g_param_value_convert) g_param_value_convert __attribute((alias("IA__g_param_value_convert"), visibility("default")));

#undef g_param_value_defaults 
extern __typeof (g_param_value_defaults) g_param_value_defaults __attribute((alias("IA__g_param_value_defaults"), visibility("default")));

#undef g_param_values_cmp 
extern __typeof (g_param_values_cmp) g_param_values_cmp __attribute((alias("IA__g_param_values_cmp"), visibility("default")));

#undef g_param_value_set_default 
extern __typeof (g_param_value_set_default) g_param_value_set_default __attribute((alias("IA__g_param_value_set_default"), visibility("default")));

#undef g_param_value_validate 
extern __typeof (g_param_value_validate) g_param_value_validate __attribute((alias("IA__g_param_value_validate"), visibility("default")));

#undef g_param_spec_pool_insert 
extern __typeof (g_param_spec_pool_insert) g_param_spec_pool_insert __attribute((alias("IA__g_param_spec_pool_insert"), visibility("default")));

#undef g_param_spec_pool_list 
extern __typeof (g_param_spec_pool_list) g_param_spec_pool_list __attribute((alias("IA__g_param_spec_pool_list"), visibility("default")));

#undef g_param_spec_pool_list_owned 
extern __typeof (g_param_spec_pool_list_owned) g_param_spec_pool_list_owned __attribute((alias("IA__g_param_spec_pool_list_owned"), visibility("default")));

#undef g_param_spec_pool_lookup 
extern __typeof (g_param_spec_pool_lookup) g_param_spec_pool_lookup __attribute((alias("IA__g_param_spec_pool_lookup"), visibility("default")));

#undef g_param_spec_pool_new 
extern __typeof (g_param_spec_pool_new) g_param_spec_pool_new __attribute((alias("IA__g_param_spec_pool_new"), visibility("default")));

#undef g_param_spec_pool_remove 
extern __typeof (g_param_spec_pool_remove) g_param_spec_pool_remove __attribute((alias("IA__g_param_spec_pool_remove"), visibility("default")));

#undef g_value_get_param 
extern __typeof (g_value_get_param) g_value_get_param __attribute((alias("IA__g_value_get_param"), visibility("default")));

#undef g_value_set_param 
extern __typeof (g_value_set_param) g_value_set_param __attribute((alias("IA__g_value_set_param"), visibility("default")));

#undef g_value_dup_param 
extern __typeof (g_value_dup_param) g_value_dup_param __attribute((alias("IA__g_value_dup_param"), visibility("default")));

#undef g_value_take_param 
extern __typeof (g_value_take_param) g_value_take_param __attribute((alias("IA__g_value_take_param"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_value_set_param_take_ownership 
extern __typeof (g_value_set_param_take_ownership) g_value_set_param_take_ownership __attribute((alias("IA__g_value_set_param_take_ownership"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_VALUETYPES_H__)
#if IN_FILE(__G_VALUETYPES_C__)
#undef g_pointer_type_register_static 
extern __typeof (g_pointer_type_register_static) g_pointer_type_register_static __attribute((alias("IA__g_pointer_type_register_static"), visibility("default")));

#undef g_strdup_value_contents 
extern __typeof (g_strdup_value_contents) g_strdup_value_contents __attribute((alias("IA__g_strdup_value_contents"), visibility("default")));

#undef g_value_set_boolean 
extern __typeof (g_value_set_boolean) g_value_set_boolean __attribute((alias("IA__g_value_set_boolean"), visibility("default")));

#undef g_value_set_char 
extern __typeof (g_value_set_char) g_value_set_char __attribute((alias("IA__g_value_set_char"), visibility("default")));

#undef g_value_set_double 
extern __typeof (g_value_set_double) g_value_set_double __attribute((alias("IA__g_value_set_double"), visibility("default")));

#undef g_value_set_float 
extern __typeof (g_value_set_float) g_value_set_float __attribute((alias("IA__g_value_set_float"), visibility("default")));

#undef g_value_set_int 
extern __typeof (g_value_set_int) g_value_set_int __attribute((alias("IA__g_value_set_int"), visibility("default")));

#undef g_value_set_int64 
extern __typeof (g_value_set_int64) g_value_set_int64 __attribute((alias("IA__g_value_set_int64"), visibility("default")));

#undef g_value_set_long 
extern __typeof (g_value_set_long) g_value_set_long __attribute((alias("IA__g_value_set_long"), visibility("default")));

#undef g_value_set_pointer 
extern __typeof (g_value_set_pointer) g_value_set_pointer __attribute((alias("IA__g_value_set_pointer"), visibility("default")));

#undef g_value_set_static_string 
extern __typeof (g_value_set_static_string) g_value_set_static_string __attribute((alias("IA__g_value_set_static_string"), visibility("default")));

#undef g_value_set_string 
extern __typeof (g_value_set_string) g_value_set_string __attribute((alias("IA__g_value_set_string"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_value_set_string_take_ownership 
extern __typeof (g_value_set_string_take_ownership) g_value_set_string_take_ownership __attribute((alias("IA__g_value_set_string_take_ownership"), visibility("default")));

#endif
#undef g_value_set_uchar 
extern __typeof (g_value_set_uchar) g_value_set_uchar __attribute((alias("IA__g_value_set_uchar"), visibility("default")));

#undef g_value_set_uint 
extern __typeof (g_value_set_uint) g_value_set_uint __attribute((alias("IA__g_value_set_uint"), visibility("default")));

#undef g_value_set_uint64 
extern __typeof (g_value_set_uint64) g_value_set_uint64 __attribute((alias("IA__g_value_set_uint64"), visibility("default")));

#undef g_value_set_ulong 
extern __typeof (g_value_set_ulong) g_value_set_ulong __attribute((alias("IA__g_value_set_ulong"), visibility("default")));

#undef g_value_dup_string 
extern __typeof (g_value_dup_string) g_value_dup_string __attribute((alias("IA__g_value_dup_string"), visibility("default")));

#undef g_value_get_boolean 
extern __typeof (g_value_get_boolean) g_value_get_boolean __attribute((alias("IA__g_value_get_boolean"), visibility("default")));

#undef g_value_get_char 
extern __typeof (g_value_get_char) g_value_get_char __attribute((alias("IA__g_value_get_char"), visibility("default")));

#undef g_value_get_double 
extern __typeof (g_value_get_double) g_value_get_double __attribute((alias("IA__g_value_get_double"), visibility("default")));

#undef g_value_get_float 
extern __typeof (g_value_get_float) g_value_get_float __attribute((alias("IA__g_value_get_float"), visibility("default")));

#undef g_value_get_int 
extern __typeof (g_value_get_int) g_value_get_int __attribute((alias("IA__g_value_get_int"), visibility("default")));

#undef g_value_get_int64 
extern __typeof (g_value_get_int64) g_value_get_int64 __attribute((alias("IA__g_value_get_int64"), visibility("default")));

#undef g_value_get_long 
extern __typeof (g_value_get_long) g_value_get_long __attribute((alias("IA__g_value_get_long"), visibility("default")));

#undef g_value_get_pointer 
extern __typeof (g_value_get_pointer) g_value_get_pointer __attribute((alias("IA__g_value_get_pointer"), visibility("default")));

#undef g_value_get_string 
extern __typeof (g_value_get_string) g_value_get_string __attribute((alias("IA__g_value_get_string"), visibility("default")));

#undef g_value_get_uchar 
extern __typeof (g_value_get_uchar) g_value_get_uchar __attribute((alias("IA__g_value_get_uchar"), visibility("default")));

#undef g_value_get_uint 
extern __typeof (g_value_get_uint) g_value_get_uint __attribute((alias("IA__g_value_get_uint"), visibility("default")));

#undef g_value_get_uint64 
extern __typeof (g_value_get_uint64) g_value_get_uint64 __attribute((alias("IA__g_value_get_uint64"), visibility("default")));

#undef g_value_get_ulong 
extern __typeof (g_value_get_ulong) g_value_get_ulong __attribute((alias("IA__g_value_get_ulong"), visibility("default")));

#undef g_value_take_string 
extern __typeof (g_value_take_string) g_value_take_string __attribute((alias("IA__g_value_take_string"), visibility("default")));

#undef g_gtype_get_type 
extern __typeof (g_gtype_get_type) g_gtype_get_type __attribute((alias("IA__g_gtype_get_type"), visibility("default")));

#undef g_value_set_gtype 
extern __typeof (g_value_set_gtype) g_value_set_gtype __attribute((alias("IA__g_value_set_gtype"), visibility("default")));

#undef g_value_get_gtype 
extern __typeof (g_value_get_gtype) g_value_get_gtype __attribute((alias("IA__g_value_get_gtype"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SIGNAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
#undef g_signal_accumulator_true_handled 
extern __typeof (g_signal_accumulator_true_handled) g_signal_accumulator_true_handled __attribute((alias("IA__g_signal_accumulator_true_handled"), visibility("default")));

#undef g_signal_add_emission_hook 
extern __typeof (g_signal_add_emission_hook) g_signal_add_emission_hook __attribute((alias("IA__g_signal_add_emission_hook"), visibility("default")));

#undef g_signal_chain_from_overridden 
extern __typeof (g_signal_chain_from_overridden) g_signal_chain_from_overridden __attribute((alias("IA__g_signal_chain_from_overridden"), visibility("default")));

#undef g_signal_chain_from_overridden_handler 
extern __typeof (g_signal_chain_from_overridden_handler) g_signal_chain_from_overridden_handler __attribute((alias("IA__g_signal_chain_from_overridden_handler"), visibility("default")));

#undef g_signal_connect_closure 
extern __typeof (g_signal_connect_closure) g_signal_connect_closure __attribute((alias("IA__g_signal_connect_closure"), visibility("default")));

#undef g_signal_connect_closure_by_id 
extern __typeof (g_signal_connect_closure_by_id) g_signal_connect_closure_by_id __attribute((alias("IA__g_signal_connect_closure_by_id"), visibility("default")));

#undef g_signal_connect_data 
extern __typeof (g_signal_connect_data) g_signal_connect_data __attribute((alias("IA__g_signal_connect_data"), visibility("default")));

#undef g_signal_emit 
extern __typeof (g_signal_emit) g_signal_emit __attribute((alias("IA__g_signal_emit"), visibility("default")));

#undef g_signal_emit_by_name 
extern __typeof (g_signal_emit_by_name) g_signal_emit_by_name __attribute((alias("IA__g_signal_emit_by_name"), visibility("default")));

#undef g_signal_emitv 
extern __typeof (g_signal_emitv) g_signal_emitv __attribute((alias("IA__g_signal_emitv"), visibility("default")));

#undef g_signal_emit_valist 
extern __typeof (g_signal_emit_valist) g_signal_emit_valist __attribute((alias("IA__g_signal_emit_valist"), visibility("default")));

#undef g_signal_get_invocation_hint 
extern __typeof (g_signal_get_invocation_hint) g_signal_get_invocation_hint __attribute((alias("IA__g_signal_get_invocation_hint"), visibility("default")));

#undef g_signal_handler_block 
extern __typeof (g_signal_handler_block) g_signal_handler_block __attribute((alias("IA__g_signal_handler_block"), visibility("default")));

#undef g_signal_handler_disconnect 
extern __typeof (g_signal_handler_disconnect) g_signal_handler_disconnect __attribute((alias("IA__g_signal_handler_disconnect"), visibility("default")));

#undef g_signal_handler_find 
extern __typeof (g_signal_handler_find) g_signal_handler_find __attribute((alias("IA__g_signal_handler_find"), visibility("default")));

#undef g_signal_handler_is_connected 
extern __typeof (g_signal_handler_is_connected) g_signal_handler_is_connected __attribute((alias("IA__g_signal_handler_is_connected"), visibility("default")));

#undef g_signal_handlers_block_matched 
extern __typeof (g_signal_handlers_block_matched) g_signal_handlers_block_matched __attribute((alias("IA__g_signal_handlers_block_matched"), visibility("default")));

#undef g_signal_handlers_destroy 
extern __typeof (g_signal_handlers_destroy) g_signal_handlers_destroy __attribute((alias("IA__g_signal_handlers_destroy"), visibility("default")));

#undef g_signal_handlers_disconnect_matched 
extern __typeof (g_signal_handlers_disconnect_matched) g_signal_handlers_disconnect_matched __attribute((alias("IA__g_signal_handlers_disconnect_matched"), visibility("default")));

#undef g_signal_handlers_unblock_matched 
extern __typeof (g_signal_handlers_unblock_matched) g_signal_handlers_unblock_matched __attribute((alias("IA__g_signal_handlers_unblock_matched"), visibility("default")));

#undef g_signal_handler_unblock 
extern __typeof (g_signal_handler_unblock) g_signal_handler_unblock __attribute((alias("IA__g_signal_handler_unblock"), visibility("default")));

#undef g_signal_has_handler_pending 
extern __typeof (g_signal_has_handler_pending) g_signal_has_handler_pending __attribute((alias("IA__g_signal_has_handler_pending"), visibility("default")));

#undef g_signal_list_ids 
extern __typeof (g_signal_list_ids) g_signal_list_ids __attribute((alias("IA__g_signal_list_ids"), visibility("default")));

#undef g_signal_lookup 
extern __typeof (g_signal_lookup) g_signal_lookup __attribute((alias("IA__g_signal_lookup"), visibility("default")));

#undef g_signal_name 
extern __typeof (g_signal_name) g_signal_name __attribute((alias("IA__g_signal_name"), visibility("default")));

#undef g_signal_new 
extern __typeof (g_signal_new) g_signal_new __attribute((alias("IA__g_signal_new"), visibility("default")));

#undef g_signal_newv 
extern __typeof (g_signal_newv) g_signal_newv __attribute((alias("IA__g_signal_newv"), visibility("default")));

#undef g_signal_new_valist 
extern __typeof (g_signal_new_valist) g_signal_new_valist __attribute((alias("IA__g_signal_new_valist"), visibility("default")));

#undef g_signal_new_class_handler 
extern __typeof (g_signal_new_class_handler) g_signal_new_class_handler __attribute((alias("IA__g_signal_new_class_handler"), visibility("default")));

#undef g_signal_override_class_closure 
extern __typeof (g_signal_override_class_closure) g_signal_override_class_closure __attribute((alias("IA__g_signal_override_class_closure"), visibility("default")));

#undef g_signal_override_class_handler 
extern __typeof (g_signal_override_class_handler) g_signal_override_class_handler __attribute((alias("IA__g_signal_override_class_handler"), visibility("default")));

#undef g_signal_parse_name 
extern __typeof (g_signal_parse_name) g_signal_parse_name __attribute((alias("IA__g_signal_parse_name"), visibility("default")));

#undef g_signal_query 
extern __typeof (g_signal_query) g_signal_query __attribute((alias("IA__g_signal_query"), visibility("default")));

#undef g_signal_remove_emission_hook 
extern __typeof (g_signal_remove_emission_hook) g_signal_remove_emission_hook __attribute((alias("IA__g_signal_remove_emission_hook"), visibility("default")));

#undef g_signal_stop_emission 
extern __typeof (g_signal_stop_emission) g_signal_stop_emission __attribute((alias("IA__g_signal_stop_emission"), visibility("default")));

#undef g_signal_stop_emission_by_name 
extern __typeof (g_signal_stop_emission_by_name) g_signal_stop_emission_by_name __attribute((alias("IA__g_signal_stop_emission_by_name"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_TYPE_H__)
#if IN_FILE(__G_TYPE_C__)
#undef g_type_add_class_cache_func 
extern __typeof (g_type_add_class_cache_func) g_type_add_class_cache_func __attribute((alias("IA__g_type_add_class_cache_func"), visibility("default")));

#undef g_type_add_interface_check 
extern __typeof (g_type_add_interface_check) g_type_add_interface_check __attribute((alias("IA__g_type_add_interface_check"), visibility("default")));

#undef g_type_add_interface_dynamic 
extern __typeof (g_type_add_interface_dynamic) g_type_add_interface_dynamic __attribute((alias("IA__g_type_add_interface_dynamic"), visibility("default")));

#undef g_type_add_interface_static 
extern __typeof (g_type_add_interface_static) g_type_add_interface_static __attribute((alias("IA__g_type_add_interface_static"), visibility("default")));

#undef g_type_check_class_cast 
extern __typeof (g_type_check_class_cast) g_type_check_class_cast __attribute((alias("IA__g_type_check_class_cast"), visibility("default")));

#undef g_type_check_class_is_a 
extern __typeof (g_type_check_class_is_a) g_type_check_class_is_a __attribute((alias("IA__g_type_check_class_is_a"), visibility("default")));

#undef g_type_check_instance 
extern __typeof (g_type_check_instance) g_type_check_instance __attribute((alias("IA__g_type_check_instance"), visibility("default")));

#undef g_type_check_instance_cast 
extern __typeof (g_type_check_instance_cast) g_type_check_instance_cast __attribute((alias("IA__g_type_check_instance_cast"), visibility("default")));

#undef g_type_check_instance_is_a 
extern __typeof (g_type_check_instance_is_a) g_type_check_instance_is_a __attribute((alias("IA__g_type_check_instance_is_a"), visibility("default")));

#undef g_type_check_is_value_type 
extern __typeof (g_type_check_is_value_type) g_type_check_is_value_type __attribute((alias("IA__g_type_check_is_value_type"), visibility("default")));

#undef g_type_check_value 
extern __typeof (g_type_check_value) g_type_check_value __attribute((alias("IA__g_type_check_value"), visibility("default")));

#undef g_type_check_value_holds 
extern __typeof (g_type_check_value_holds) g_type_check_value_holds __attribute((alias("IA__g_type_check_value_holds"), visibility("default")));

#undef g_type_children 
extern __typeof (g_type_children) g_type_children __attribute((alias("IA__g_type_children"), visibility("default")));

#undef g_type_class_add_private 
extern __typeof (g_type_class_add_private) g_type_class_add_private __attribute((alias("IA__g_type_class_add_private"), visibility("default")));

#undef g_type_class_peek 
extern __typeof (g_type_class_peek) g_type_class_peek __attribute((alias("IA__g_type_class_peek"), visibility("default")));

#undef g_type_class_peek_parent 
extern __typeof (g_type_class_peek_parent) g_type_class_peek_parent __attribute((alias("IA__g_type_class_peek_parent"), visibility("default")));

#undef g_type_class_peek_static 
extern __typeof (g_type_class_peek_static) g_type_class_peek_static __attribute((alias("IA__g_type_class_peek_static"), visibility("default")));

#undef g_type_class_ref 
extern __typeof (g_type_class_ref) g_type_class_ref __attribute((alias("IA__g_type_class_ref"), visibility("default")));

#undef g_type_class_unref 
extern __typeof (g_type_class_unref) g_type_class_unref __attribute((alias("IA__g_type_class_unref"), visibility("default")));

#undef g_type_class_unref_uncached 
extern __typeof (g_type_class_unref_uncached) g_type_class_unref_uncached __attribute((alias("IA__g_type_class_unref_uncached"), visibility("default")));

#undef g_type_create_instance 
extern __typeof (g_type_create_instance) g_type_create_instance __attribute((alias("IA__g_type_create_instance"), visibility("default")));

#undef g_type_default_interface_peek 
extern __typeof (g_type_default_interface_peek) g_type_default_interface_peek __attribute((alias("IA__g_type_default_interface_peek"), visibility("default")));

#undef g_type_default_interface_ref 
extern __typeof (g_type_default_interface_ref) g_type_default_interface_ref __attribute((alias("IA__g_type_default_interface_ref"), visibility("default")));

#undef g_type_default_interface_unref 
extern __typeof (g_type_default_interface_unref) g_type_default_interface_unref __attribute((alias("IA__g_type_default_interface_unref"), visibility("default")));

#undef g_type_depth 
extern __typeof (g_type_depth) g_type_depth __attribute((alias("IA__g_type_depth"), visibility("default")));

#undef g_type_free_instance 
extern __typeof (g_type_free_instance) g_type_free_instance __attribute((alias("IA__g_type_free_instance"), visibility("default")));

#undef g_type_from_name 
extern __typeof (g_type_from_name) g_type_from_name __attribute((alias("IA__g_type_from_name"), visibility("default")));

#undef g_type_fundamental 
extern __typeof (g_type_fundamental) g_type_fundamental __attribute((alias("IA__g_type_fundamental"), visibility("default")));

#undef g_type_fundamental_next 
extern __typeof (g_type_fundamental_next) g_type_fundamental_next __attribute((alias("IA__g_type_fundamental_next"), visibility("default")));

#undef g_type_get_plugin 
extern __typeof (g_type_get_plugin) g_type_get_plugin __attribute((alias("IA__g_type_get_plugin"), visibility("default")));

#undef g_type_get_qdata 
extern __typeof (g_type_get_qdata) g_type_get_qdata __attribute((alias("IA__g_type_get_qdata"), visibility("default")));

#undef g_type_init 
extern __typeof (g_type_init) g_type_init __attribute((alias("IA__g_type_init"), visibility("default")));

#undef g_type_init_with_debug_flags 
extern __typeof (g_type_init_with_debug_flags) g_type_init_with_debug_flags __attribute((alias("IA__g_type_init_with_debug_flags"), visibility("default")));

#undef g_type_instance_get_private 
extern __typeof (g_type_instance_get_private) g_type_instance_get_private __attribute((alias("IA__g_type_instance_get_private"), visibility("default")));

#undef g_type_interface_add_prerequisite 
extern __typeof (g_type_interface_add_prerequisite) g_type_interface_add_prerequisite __attribute((alias("IA__g_type_interface_add_prerequisite"), visibility("default")));

#undef g_type_interface_get_plugin 
extern __typeof (g_type_interface_get_plugin) g_type_interface_get_plugin __attribute((alias("IA__g_type_interface_get_plugin"), visibility("default")));

#undef g_type_interface_peek 
extern __typeof (g_type_interface_peek) g_type_interface_peek __attribute((alias("IA__g_type_interface_peek"), visibility("default")));

#undef g_type_interface_peek_parent 
extern __typeof (g_type_interface_peek_parent) g_type_interface_peek_parent __attribute((alias("IA__g_type_interface_peek_parent"), visibility("default")));

#undef g_type_interface_prerequisites 
extern __typeof (g_type_interface_prerequisites) g_type_interface_prerequisites __attribute((alias("IA__g_type_interface_prerequisites"), visibility("default")));

#undef g_type_interfaces 
extern __typeof (g_type_interfaces) g_type_interfaces __attribute((alias("IA__g_type_interfaces"), visibility("default")));

#undef g_type_is_a 
extern __typeof (g_type_is_a) g_type_is_a __attribute((alias("IA__g_type_is_a"), visibility("default")));

#undef g_type_name 
extern __typeof (g_type_name) g_type_name __attribute((alias("IA__g_type_name"), visibility("default")));

#undef g_type_name_from_class 
extern __typeof (g_type_name_from_class) g_type_name_from_class __attribute((alias("IA__g_type_name_from_class"), visibility("default")));

#undef g_type_name_from_instance 
extern __typeof (g_type_name_from_instance) g_type_name_from_instance __attribute((alias("IA__g_type_name_from_instance"), visibility("default")));

#undef g_type_next_base 
extern __typeof (g_type_next_base) g_type_next_base __attribute((alias("IA__g_type_next_base"), visibility("default")));

#undef g_type_parent 
extern __typeof (g_type_parent) g_type_parent __attribute((alias("IA__g_type_parent"), visibility("default")));

#undef g_type_qname 
extern __typeof (g_type_qname) g_type_qname __attribute((alias("IA__g_type_qname"), visibility("default")));

#undef g_type_query 
extern __typeof (g_type_query) g_type_query __attribute((alias("IA__g_type_query"), visibility("default")));

#undef g_type_register_dynamic 
extern __typeof (g_type_register_dynamic) g_type_register_dynamic __attribute((alias("IA__g_type_register_dynamic"), visibility("default")));

#undef g_type_register_fundamental 
extern __typeof (g_type_register_fundamental) g_type_register_fundamental __attribute((alias("IA__g_type_register_fundamental"), visibility("default")));

#undef g_type_register_static 
extern __typeof (g_type_register_static) g_type_register_static __attribute((alias("IA__g_type_register_static"), visibility("default")));

#undef g_type_register_static_simple 
extern __typeof (g_type_register_static_simple) g_type_register_static_simple __attribute((alias("IA__g_type_register_static_simple"), visibility("default")));

#undef g_type_remove_class_cache_func 
extern __typeof (g_type_remove_class_cache_func) g_type_remove_class_cache_func __attribute((alias("IA__g_type_remove_class_cache_func"), visibility("default")));

#undef g_type_remove_interface_check 
extern __typeof (g_type_remove_interface_check) g_type_remove_interface_check __attribute((alias("IA__g_type_remove_interface_check"), visibility("default")));

#undef g_type_set_qdata 
extern __typeof (g_type_set_qdata) g_type_set_qdata __attribute((alias("IA__g_type_set_qdata"), visibility("default")));

#undef g_type_test_flags 
extern __typeof (g_type_test_flags) g_type_test_flags __attribute((alias("IA__g_type_test_flags"), visibility("default")));

#undef g_type_value_table_peek 
extern __typeof (g_type_value_table_peek) g_type_value_table_peek __attribute((alias("IA__g_type_value_table_peek"), visibility("default")));

#undef g_type_class_get_private 
extern __typeof (g_type_class_get_private) g_type_class_get_private __attribute((alias("IA__g_type_class_get_private"), visibility("default")));

#undef g_type_add_class_private 
extern __typeof (g_type_add_class_private) g_type_add_class_private __attribute((alias("IA__g_type_add_class_private"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_TYPE_MODULE_H__)
#if IN_FILE(__G_TYPE_MODULE_C__)
#undef g_type_module_add_interface 
extern __typeof (g_type_module_add_interface) g_type_module_add_interface __attribute((alias("IA__g_type_module_add_interface"), visibility("default")));

#undef g_type_module_get_type 
extern __typeof (g_type_module_get_type) g_type_module_get_type __attribute((alias("IA__g_type_module_get_type"), visibility("default")));

#undef g_type_module_register_enum 
extern __typeof (g_type_module_register_enum) g_type_module_register_enum __attribute((alias("IA__g_type_module_register_enum"), visibility("default")));

#undef g_type_module_register_flags 
extern __typeof (g_type_module_register_flags) g_type_module_register_flags __attribute((alias("IA__g_type_module_register_flags"), visibility("default")));

#undef g_type_module_register_type 
extern __typeof (g_type_module_register_type) g_type_module_register_type __attribute((alias("IA__g_type_module_register_type"), visibility("default")));

#undef g_type_module_set_name 
extern __typeof (g_type_module_set_name) g_type_module_set_name __attribute((alias("IA__g_type_module_set_name"), visibility("default")));

#undef g_type_module_unuse 
extern __typeof (g_type_module_unuse) g_type_module_unuse __attribute((alias("IA__g_type_module_unuse"), visibility("default")));

#undef g_type_module_use 
extern __typeof (g_type_module_use) g_type_module_use __attribute((alias("IA__g_type_module_use"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_VALUE_ARRAY_H__)
#if IN_FILE(__G_VALUE_ARRAY_C__)
#undef g_value_array_append 
extern __typeof (g_value_array_append) g_value_array_append __attribute((alias("IA__g_value_array_append"), visibility("default")));

#undef g_value_array_copy 
extern __typeof (g_value_array_copy) g_value_array_copy __attribute((alias("IA__g_value_array_copy"), visibility("default")));

#undef g_value_array_free 
extern __typeof (g_value_array_free) g_value_array_free __attribute((alias("IA__g_value_array_free"), visibility("default")));

#undef g_value_array_get_nth 
extern __typeof (g_value_array_get_nth) g_value_array_get_nth __attribute((alias("IA__g_value_array_get_nth"), visibility("default")));

#undef g_value_array_insert 
extern __typeof (g_value_array_insert) g_value_array_insert __attribute((alias("IA__g_value_array_insert"), visibility("default")));

#undef g_value_array_new 
extern __typeof (g_value_array_new) g_value_array_new __attribute((alias("IA__g_value_array_new"), visibility("default")));

#undef g_value_array_prepend 
extern __typeof (g_value_array_prepend) g_value_array_prepend __attribute((alias("IA__g_value_array_prepend"), visibility("default")));

#undef g_value_array_remove 
extern __typeof (g_value_array_remove) g_value_array_remove __attribute((alias("IA__g_value_array_remove"), visibility("default")));

#undef g_value_array_sort 
extern __typeof (g_value_array_sort) g_value_array_sort __attribute((alias("IA__g_value_array_sort"), visibility("default")));

#undef g_value_array_sort_with_data 
extern __typeof (g_value_array_sort_with_data) g_value_array_sort_with_data __attribute((alias("IA__g_value_array_sort_with_data"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_TYPE_PLUGIN_H__)
#if IN_FILE(__G_TYPE_PLUGIN_C__)
#undef g_type_plugin_complete_interface_info 
extern __typeof (g_type_plugin_complete_interface_info) g_type_plugin_complete_interface_info __attribute((alias("IA__g_type_plugin_complete_interface_info"), visibility("default")));

#undef g_type_plugin_complete_type_info 
extern __typeof (g_type_plugin_complete_type_info) g_type_plugin_complete_type_info __attribute((alias("IA__g_type_plugin_complete_type_info"), visibility("default")));

#undef g_type_plugin_get_type 
extern __typeof (g_type_plugin_get_type) g_type_plugin_get_type __attribute((alias("IA__g_type_plugin_get_type"), visibility("default")));

#undef g_type_plugin_unuse 
extern __typeof (g_type_plugin_unuse) g_type_plugin_unuse __attribute((alias("IA__g_type_plugin_unuse"), visibility("default")));

#undef g_type_plugin_use 
extern __typeof (g_type_plugin_use) g_type_plugin_use __attribute((alias("IA__g_type_plugin_use"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_VALUE_H__)
#if IN_FILE(__G_VALUE_C__)
#undef g_value_copy 
extern __typeof (g_value_copy) g_value_copy __attribute((alias("IA__g_value_copy"), visibility("default")));

#undef g_value_fits_pointer 
extern __typeof (g_value_fits_pointer) g_value_fits_pointer __attribute((alias("IA__g_value_fits_pointer"), visibility("default")));

#undef g_value_init 
extern __typeof (g_value_init) g_value_init __attribute((alias("IA__g_value_init"), visibility("default")));

#undef g_value_peek_pointer 
extern __typeof (g_value_peek_pointer) g_value_peek_pointer __attribute((alias("IA__g_value_peek_pointer"), visibility("default")));

#undef g_value_register_transform_func 
extern __typeof (g_value_register_transform_func) g_value_register_transform_func __attribute((alias("IA__g_value_register_transform_func"), visibility("default")));

#undef g_value_reset 
extern __typeof (g_value_reset) g_value_reset __attribute((alias("IA__g_value_reset"), visibility("default")));

#undef g_value_transform 
extern __typeof (g_value_transform) g_value_transform __attribute((alias("IA__g_value_transform"), visibility("default")));

#undef g_value_type_compatible 
extern __typeof (g_value_type_compatible) g_value_type_compatible __attribute((alias("IA__g_value_type_compatible"), visibility("default")));

#undef g_value_type_transformable 
extern __typeof (g_value_type_transformable) g_value_type_transformable __attribute((alias("IA__g_value_type_transformable"), visibility("default")));

#undef g_value_unset 
extern __typeof (g_value_unset) g_value_unset __attribute((alias("IA__g_value_unset"), visibility("default")));

#undef g_value_set_instance 
extern __typeof (g_value_set_instance) g_value_set_instance __attribute((alias("IA__g_value_set_instance"), visibility("default")));

#endif
#endif

#endif /* G_HAVE_GNUC_VISIBILITY */
#endif /* DISABLE_VISIBILITY */
