/* Generated by makegioalias.pl */

#ifndef DISABLE_VISIBILITY

#include "glib.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_VFS_H__)
#if IN_FILE(__G_VFS_C__)
#undef g_vfs_get_type 
extern __typeof (g_vfs_get_type) g_vfs_get_type __attribute((alias("IA__g_vfs_get_type"), visibility("default")));

#undef g_vfs_is_active 
extern __typeof (g_vfs_is_active) g_vfs_is_active __attribute((alias("IA__g_vfs_is_active"), visibility("default")));

#undef g_vfs_get_file_for_path 
extern __typeof (g_vfs_get_file_for_path) g_vfs_get_file_for_path __attribute((alias("IA__g_vfs_get_file_for_path"), visibility("default")));

#undef g_vfs_get_file_for_uri 
extern __typeof (g_vfs_get_file_for_uri) g_vfs_get_file_for_uri __attribute((alias("IA__g_vfs_get_file_for_uri"), visibility("default")));

#undef g_vfs_get_supported_uri_schemes 
extern __typeof (g_vfs_get_supported_uri_schemes) g_vfs_get_supported_uri_schemes __attribute((alias("IA__g_vfs_get_supported_uri_schemes"), visibility("default")));

#undef g_vfs_parse_name 
extern __typeof (g_vfs_parse_name) g_vfs_parse_name __attribute((alias("IA__g_vfs_parse_name"), visibility("default")));

#undef g_vfs_get_default 
extern __typeof (g_vfs_get_default) g_vfs_get_default __attribute((alias("IA__g_vfs_get_default"), visibility("default")));

#undef g_vfs_get_local 
extern __typeof (g_vfs_get_local) g_vfs_get_local __attribute((alias("IA__g_vfs_get_local"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_APP_INFO_H__)
#if IN_FILE(__G_APP_INFO_C__)
#undef g_app_info_get_type 
extern __typeof (g_app_info_get_type) g_app_info_get_type __attribute((alias("IA__g_app_info_get_type"), visibility("default")));

#undef g_app_launch_context_get_type 
extern __typeof (g_app_launch_context_get_type) g_app_launch_context_get_type __attribute((alias("IA__g_app_launch_context_get_type"), visibility("default")));

#undef g_app_info_dup 
extern __typeof (g_app_info_dup) g_app_info_dup __attribute((alias("IA__g_app_info_dup"), visibility("default")));

#undef g_app_info_equal 
extern __typeof (g_app_info_equal) g_app_info_equal __attribute((alias("IA__g_app_info_equal"), visibility("default")));

#undef g_app_info_get_id 
extern __typeof (g_app_info_get_id) g_app_info_get_id __attribute((alias("IA__g_app_info_get_id"), visibility("default")));

#undef g_app_info_get_name 
extern __typeof (g_app_info_get_name) g_app_info_get_name __attribute((alias("IA__g_app_info_get_name"), visibility("default")));

#undef g_app_info_get_display_name 
extern __typeof (g_app_info_get_display_name) g_app_info_get_display_name __attribute((alias("IA__g_app_info_get_display_name"), visibility("default")));

#undef g_app_info_get_description 
extern __typeof (g_app_info_get_description) g_app_info_get_description __attribute((alias("IA__g_app_info_get_description"), visibility("default")));

#undef g_app_info_get_executable 
extern __typeof (g_app_info_get_executable) g_app_info_get_executable __attribute((alias("IA__g_app_info_get_executable"), visibility("default")));

#undef g_app_info_get_commandline 
extern __typeof (g_app_info_get_commandline) g_app_info_get_commandline __attribute((alias("IA__g_app_info_get_commandline"), visibility("default")));

#undef g_app_info_get_icon 
extern __typeof (g_app_info_get_icon) g_app_info_get_icon __attribute((alias("IA__g_app_info_get_icon"), visibility("default")));

#undef g_app_info_launch 
extern __typeof (g_app_info_launch) g_app_info_launch __attribute((alias("IA__g_app_info_launch"), visibility("default")));

#undef g_app_info_supports_uris 
extern __typeof (g_app_info_supports_uris) g_app_info_supports_uris __attribute((alias("IA__g_app_info_supports_uris"), visibility("default")));

#undef g_app_info_supports_files 
extern __typeof (g_app_info_supports_files) g_app_info_supports_files __attribute((alias("IA__g_app_info_supports_files"), visibility("default")));

#undef g_app_info_launch_uris 
extern __typeof (g_app_info_launch_uris) g_app_info_launch_uris __attribute((alias("IA__g_app_info_launch_uris"), visibility("default")));

#undef g_app_info_should_show 
extern __typeof (g_app_info_should_show) g_app_info_should_show __attribute((alias("IA__g_app_info_should_show"), visibility("default")));

#undef g_app_info_set_as_default_for_type 
extern __typeof (g_app_info_set_as_default_for_type) g_app_info_set_as_default_for_type __attribute((alias("IA__g_app_info_set_as_default_for_type"), visibility("default")));

#undef g_app_info_set_as_default_for_extension 
extern __typeof (g_app_info_set_as_default_for_extension) g_app_info_set_as_default_for_extension __attribute((alias("IA__g_app_info_set_as_default_for_extension"), visibility("default")));

#undef g_app_info_add_supports_type 
extern __typeof (g_app_info_add_supports_type) g_app_info_add_supports_type __attribute((alias("IA__g_app_info_add_supports_type"), visibility("default")));

#undef g_app_info_can_remove_supports_type 
extern __typeof (g_app_info_can_remove_supports_type) g_app_info_can_remove_supports_type __attribute((alias("IA__g_app_info_can_remove_supports_type"), visibility("default")));

#undef g_app_info_remove_supports_type 
extern __typeof (g_app_info_remove_supports_type) g_app_info_remove_supports_type __attribute((alias("IA__g_app_info_remove_supports_type"), visibility("default")));

#undef g_app_info_launch_default_for_uri 
extern __typeof (g_app_info_launch_default_for_uri) g_app_info_launch_default_for_uri __attribute((alias("IA__g_app_info_launch_default_for_uri"), visibility("default")));

#undef g_app_info_can_delete 
extern __typeof (g_app_info_can_delete) g_app_info_can_delete __attribute((alias("IA__g_app_info_can_delete"), visibility("default")));

#undef g_app_info_delete 
extern __typeof (g_app_info_delete) g_app_info_delete __attribute((alias("IA__g_app_info_delete"), visibility("default")));

#undef g_app_launch_context_new 
extern __typeof (g_app_launch_context_new) g_app_launch_context_new __attribute((alias("IA__g_app_launch_context_new"), visibility("default")));

#undef g_app_launch_context_get_display 
extern __typeof (g_app_launch_context_get_display) g_app_launch_context_get_display __attribute((alias("IA__g_app_launch_context_get_display"), visibility("default")));

#undef g_app_launch_context_get_startup_notify_id 
extern __typeof (g_app_launch_context_get_startup_notify_id) g_app_launch_context_get_startup_notify_id __attribute((alias("IA__g_app_launch_context_get_startup_notify_id"), visibility("default")));

#undef g_app_launch_context_launch_failed 
extern __typeof (g_app_launch_context_launch_failed) g_app_launch_context_launch_failed __attribute((alias("IA__g_app_launch_context_launch_failed"), visibility("default")));

#endif
#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
#undef g_app_info_create_from_commandline 
extern __typeof (g_app_info_create_from_commandline) g_app_info_create_from_commandline __attribute((alias("IA__g_app_info_create_from_commandline"), visibility("default")));

#undef g_app_info_get_all 
extern __typeof (g_app_info_get_all) g_app_info_get_all __attribute((alias("IA__g_app_info_get_all"), visibility("default")));

#undef g_app_info_get_all_for_type 
extern __typeof (g_app_info_get_all_for_type) g_app_info_get_all_for_type __attribute((alias("IA__g_app_info_get_all_for_type"), visibility("default")));

#undef g_app_info_get_default_for_type 
extern __typeof (g_app_info_get_default_for_type) g_app_info_get_default_for_type __attribute((alias("IA__g_app_info_get_default_for_type"), visibility("default")));

#undef g_app_info_get_default_for_uri_scheme 
extern __typeof (g_app_info_get_default_for_uri_scheme) g_app_info_get_default_for_uri_scheme __attribute((alias("IA__g_app_info_get_default_for_uri_scheme"), visibility("default")));

#undef g_app_info_reset_type_associations 
extern __typeof (g_app_info_reset_type_associations) g_app_info_reset_type_associations __attribute((alias("IA__g_app_info_reset_type_associations"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_DESKTOP_APP_INFO_H__)
#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
#ifdef G_OS_UNIX
#undef g_desktop_app_info_new_from_filename 
extern __typeof (g_desktop_app_info_new_from_filename) g_desktop_app_info_new_from_filename __attribute((alias("IA__g_desktop_app_info_new_from_filename"), visibility("default")));

#undef g_desktop_app_info_new_from_keyfile 
extern __typeof (g_desktop_app_info_new_from_keyfile) g_desktop_app_info_new_from_keyfile __attribute((alias("IA__g_desktop_app_info_new_from_keyfile"), visibility("default")));

#undef g_desktop_app_info_new 
extern __typeof (g_desktop_app_info_new) g_desktop_app_info_new __attribute((alias("IA__g_desktop_app_info_new"), visibility("default")));

#undef g_desktop_app_info_get_filename 
extern __typeof (g_desktop_app_info_get_filename) g_desktop_app_info_get_filename __attribute((alias("IA__g_desktop_app_info_get_filename"), visibility("default")));

#undef g_desktop_app_info_get_type 
extern __typeof (g_desktop_app_info_get_type) g_desktop_app_info_get_type __attribute((alias("IA__g_desktop_app_info_get_type"), visibility("default")));

#undef g_desktop_app_info_get_is_hidden 
extern __typeof (g_desktop_app_info_get_is_hidden) g_desktop_app_info_get_is_hidden __attribute((alias("IA__g_desktop_app_info_get_is_hidden"), visibility("default")));

#undef g_desktop_app_info_set_desktop_env 
extern __typeof (g_desktop_app_info_set_desktop_env) g_desktop_app_info_set_desktop_env __attribute((alias("IA__g_desktop_app_info_set_desktop_env"), visibility("default")));

#undef g_desktop_app_info_lookup_get_type 
extern __typeof (g_desktop_app_info_lookup_get_type) g_desktop_app_info_lookup_get_type __attribute((alias("IA__g_desktop_app_info_lookup_get_type"), visibility("default")));

#undef g_desktop_app_info_lookup_get_default_for_uri_scheme 
extern __typeof (g_desktop_app_info_lookup_get_default_for_uri_scheme) g_desktop_app_info_lookup_get_default_for_uri_scheme __attribute((alias("IA__g_desktop_app_info_lookup_get_default_for_uri_scheme"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_ASYNC_RESULT_H__)
#if IN_FILE(__G_ASYNC_RESULT_C__)
#undef g_async_result_get_type 
extern __typeof (g_async_result_get_type) g_async_result_get_type __attribute((alias("IA__g_async_result_get_type"), visibility("default")));

#undef g_async_result_get_user_data 
extern __typeof (g_async_result_get_user_data) g_async_result_get_user_data __attribute((alias("IA__g_async_result_get_user_data"), visibility("default")));

#undef g_async_result_get_source_object 
extern __typeof (g_async_result_get_source_object) g_async_result_get_source_object __attribute((alias("IA__g_async_result_get_source_object"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_BUFFERED_INPUT_STREAM_H__)
#if IN_FILE(__G_BUFFERED_INPUT_STREAM_C__)
#undef g_buffered_input_stream_get_type 
extern __typeof (g_buffered_input_stream_get_type) g_buffered_input_stream_get_type __attribute((alias("IA__g_buffered_input_stream_get_type"), visibility("default")));

#undef g_buffered_input_stream_new 
extern __typeof (g_buffered_input_stream_new) g_buffered_input_stream_new __attribute((alias("IA__g_buffered_input_stream_new"), visibility("default")));

#undef g_buffered_input_stream_new_sized 
extern __typeof (g_buffered_input_stream_new_sized) g_buffered_input_stream_new_sized __attribute((alias("IA__g_buffered_input_stream_new_sized"), visibility("default")));

#undef g_buffered_input_stream_get_buffer_size 
extern __typeof (g_buffered_input_stream_get_buffer_size) g_buffered_input_stream_get_buffer_size __attribute((alias("IA__g_buffered_input_stream_get_buffer_size"), visibility("default")));

#undef g_buffered_input_stream_set_buffer_size 
extern __typeof (g_buffered_input_stream_set_buffer_size) g_buffered_input_stream_set_buffer_size __attribute((alias("IA__g_buffered_input_stream_set_buffer_size"), visibility("default")));

#undef g_buffered_input_stream_get_available 
extern __typeof (g_buffered_input_stream_get_available) g_buffered_input_stream_get_available __attribute((alias("IA__g_buffered_input_stream_get_available"), visibility("default")));

#undef g_buffered_input_stream_peek 
extern __typeof (g_buffered_input_stream_peek) g_buffered_input_stream_peek __attribute((alias("IA__g_buffered_input_stream_peek"), visibility("default")));

#undef g_buffered_input_stream_peek_buffer 
extern __typeof (g_buffered_input_stream_peek_buffer) g_buffered_input_stream_peek_buffer __attribute((alias("IA__g_buffered_input_stream_peek_buffer"), visibility("default")));

#undef g_buffered_input_stream_fill 
extern __typeof (g_buffered_input_stream_fill) g_buffered_input_stream_fill __attribute((alias("IA__g_buffered_input_stream_fill"), visibility("default")));

#undef g_buffered_input_stream_fill_async 
extern __typeof (g_buffered_input_stream_fill_async) g_buffered_input_stream_fill_async __attribute((alias("IA__g_buffered_input_stream_fill_async"), visibility("default")));

#undef g_buffered_input_stream_fill_finish 
extern __typeof (g_buffered_input_stream_fill_finish) g_buffered_input_stream_fill_finish __attribute((alias("IA__g_buffered_input_stream_fill_finish"), visibility("default")));

#undef g_buffered_input_stream_read_byte 
extern __typeof (g_buffered_input_stream_read_byte) g_buffered_input_stream_read_byte __attribute((alias("IA__g_buffered_input_stream_read_byte"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_BUFFERED_OUTPUT_STREAM_H__)
#if IN_FILE(__G_BUFFERED_OUTPUT_STREAM_C__)
#undef g_buffered_output_stream_get_type 
extern __typeof (g_buffered_output_stream_get_type) g_buffered_output_stream_get_type __attribute((alias("IA__g_buffered_output_stream_get_type"), visibility("default")));

#undef g_buffered_output_stream_new 
extern __typeof (g_buffered_output_stream_new) g_buffered_output_stream_new __attribute((alias("IA__g_buffered_output_stream_new"), visibility("default")));

#undef g_buffered_output_stream_new_sized 
extern __typeof (g_buffered_output_stream_new_sized) g_buffered_output_stream_new_sized __attribute((alias("IA__g_buffered_output_stream_new_sized"), visibility("default")));

#undef g_buffered_output_stream_get_buffer_size 
extern __typeof (g_buffered_output_stream_get_buffer_size) g_buffered_output_stream_get_buffer_size __attribute((alias("IA__g_buffered_output_stream_get_buffer_size"), visibility("default")));

#undef g_buffered_output_stream_set_buffer_size 
extern __typeof (g_buffered_output_stream_set_buffer_size) g_buffered_output_stream_set_buffer_size __attribute((alias("IA__g_buffered_output_stream_set_buffer_size"), visibility("default")));

#undef g_buffered_output_stream_get_auto_grow 
extern __typeof (g_buffered_output_stream_get_auto_grow) g_buffered_output_stream_get_auto_grow __attribute((alias("IA__g_buffered_output_stream_get_auto_grow"), visibility("default")));

#undef g_buffered_output_stream_set_auto_grow 
extern __typeof (g_buffered_output_stream_set_auto_grow) g_buffered_output_stream_set_auto_grow __attribute((alias("IA__g_buffered_output_stream_set_auto_grow"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CANCELLABLE_H__)
#if IN_FILE(__G_CANCELLABLE_C__)
#undef g_cancellable_get_type 
extern __typeof (g_cancellable_get_type) g_cancellable_get_type __attribute((alias("IA__g_cancellable_get_type"), visibility("default")));

#undef g_cancellable_new 
extern __typeof (g_cancellable_new) g_cancellable_new __attribute((alias("IA__g_cancellable_new"), visibility("default")));

#undef g_cancellable_is_cancelled 
extern __typeof (g_cancellable_is_cancelled) g_cancellable_is_cancelled __attribute((alias("IA__g_cancellable_is_cancelled"), visibility("default")));

#undef g_cancellable_set_error_if_cancelled 
extern __typeof (g_cancellable_set_error_if_cancelled) g_cancellable_set_error_if_cancelled __attribute((alias("IA__g_cancellable_set_error_if_cancelled"), visibility("default")));

#undef g_cancellable_get_fd 
extern __typeof (g_cancellable_get_fd) g_cancellable_get_fd __attribute((alias("IA__g_cancellable_get_fd"), visibility("default")));

#undef g_cancellable_make_pollfd 
extern __typeof (g_cancellable_make_pollfd) g_cancellable_make_pollfd __attribute((alias("IA__g_cancellable_make_pollfd"), visibility("default")));

#undef g_cancellable_release_fd 
extern __typeof (g_cancellable_release_fd) g_cancellable_release_fd __attribute((alias("IA__g_cancellable_release_fd"), visibility("default")));

#undef g_cancellable_get_current 
extern __typeof (g_cancellable_get_current) g_cancellable_get_current __attribute((alias("IA__g_cancellable_get_current"), visibility("default")));

#undef g_cancellable_push_current 
extern __typeof (g_cancellable_push_current) g_cancellable_push_current __attribute((alias("IA__g_cancellable_push_current"), visibility("default")));

#undef g_cancellable_pop_current 
extern __typeof (g_cancellable_pop_current) g_cancellable_pop_current __attribute((alias("IA__g_cancellable_pop_current"), visibility("default")));

#undef g_cancellable_reset 
extern __typeof (g_cancellable_reset) g_cancellable_reset __attribute((alias("IA__g_cancellable_reset"), visibility("default")));

#undef g_cancellable_cancel 
extern __typeof (g_cancellable_cancel) g_cancellable_cancel __attribute((alias("IA__g_cancellable_cancel"), visibility("default")));

#undef g_cancellable_connect 
extern __typeof (g_cancellable_connect) g_cancellable_connect __attribute((alias("IA__g_cancellable_connect"), visibility("default")));

#undef g_cancellable_disconnect 
extern __typeof (g_cancellable_disconnect) g_cancellable_disconnect __attribute((alias("IA__g_cancellable_disconnect"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CONTENT_TYPE_H__)
#if IN_FILE(__G_CONTENT_TYPE_C__)
#undef g_content_type_equals 
extern __typeof (g_content_type_equals) g_content_type_equals __attribute((alias("IA__g_content_type_equals"), visibility("default")));

#undef g_content_type_is_a 
extern __typeof (g_content_type_is_a) g_content_type_is_a __attribute((alias("IA__g_content_type_is_a"), visibility("default")));

#undef g_content_type_is_unknown 
extern __typeof (g_content_type_is_unknown) g_content_type_is_unknown __attribute((alias("IA__g_content_type_is_unknown"), visibility("default")));

#undef g_content_type_get_description 
extern __typeof (g_content_type_get_description) g_content_type_get_description __attribute((alias("IA__g_content_type_get_description"), visibility("default")));

#undef g_content_type_get_mime_type 
extern __typeof (g_content_type_get_mime_type) g_content_type_get_mime_type __attribute((alias("IA__g_content_type_get_mime_type"), visibility("default")));

#undef g_content_type_get_icon 
extern __typeof (g_content_type_get_icon) g_content_type_get_icon __attribute((alias("IA__g_content_type_get_icon"), visibility("default")));

#undef g_content_type_can_be_executable 
extern __typeof (g_content_type_can_be_executable) g_content_type_can_be_executable __attribute((alias("IA__g_content_type_can_be_executable"), visibility("default")));

#undef g_content_type_from_mime_type 
extern __typeof (g_content_type_from_mime_type) g_content_type_from_mime_type __attribute((alias("IA__g_content_type_from_mime_type"), visibility("default")));

#undef g_content_type_guess 
extern __typeof (g_content_type_guess) g_content_type_guess __attribute((alias("IA__g_content_type_guess"), visibility("default")));

#undef g_content_type_guess_for_tree 
extern __typeof (g_content_type_guess_for_tree) g_content_type_guess_for_tree __attribute((alias("IA__g_content_type_guess_for_tree"), visibility("default")));

#undef g_content_types_get_registered 
extern __typeof (g_content_types_get_registered) g_content_types_get_registered __attribute((alias("IA__g_content_types_get_registered"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CONVERTER_H__)
#if IN_FILE(__G_CONVERTER_C__)
#undef g_converter_get_type 
extern __typeof (g_converter_get_type) g_converter_get_type __attribute((alias("IA__g_converter_get_type"), visibility("default")));

#undef g_converter_reset 
extern __typeof (g_converter_reset) g_converter_reset __attribute((alias("IA__g_converter_reset"), visibility("default")));

#undef g_converter_convert 
extern __typeof (g_converter_convert) g_converter_convert __attribute((alias("IA__g_converter_convert"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CONVERTER_INPUT_STREAM_H__)
#if IN_FILE(__G_CONVERTER_INPUT_STREAM_C__)
#undef g_converter_input_stream_get_type 
extern __typeof (g_converter_input_stream_get_type) g_converter_input_stream_get_type __attribute((alias("IA__g_converter_input_stream_get_type"), visibility("default")));

#undef g_converter_input_stream_new 
extern __typeof (g_converter_input_stream_new) g_converter_input_stream_new __attribute((alias("IA__g_converter_input_stream_new"), visibility("default")));

#undef g_converter_input_stream_get_converter 
extern __typeof (g_converter_input_stream_get_converter) g_converter_input_stream_get_converter __attribute((alias("IA__g_converter_input_stream_get_converter"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CONVERTER_OUTPUT_STREAM_H__)
#if IN_FILE(__G_CONVERTER_OUTPUT_STREAM_C__)
#undef g_converter_output_stream_get_type 
extern __typeof (g_converter_output_stream_get_type) g_converter_output_stream_get_type __attribute((alias("IA__g_converter_output_stream_get_type"), visibility("default")));

#undef g_converter_output_stream_new 
extern __typeof (g_converter_output_stream_new) g_converter_output_stream_new __attribute((alias("IA__g_converter_output_stream_new"), visibility("default")));

#undef g_converter_output_stream_get_converter 
extern __typeof (g_converter_output_stream_get_converter) g_converter_output_stream_get_converter __attribute((alias("IA__g_converter_output_stream_get_converter"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_CHARSET_CONVERTER_H__)
#if IN_FILE(__G_CHARSET_CONVERTER_C__)
#undef g_charset_converter_get_type 
extern __typeof (g_charset_converter_get_type) g_charset_converter_get_type __attribute((alias("IA__g_charset_converter_get_type"), visibility("default")));

#undef g_charset_converter_new 
extern __typeof (g_charset_converter_new) g_charset_converter_new __attribute((alias("IA__g_charset_converter_new"), visibility("default")));

#undef g_charset_converter_get_num_fallbacks 
extern __typeof (g_charset_converter_get_num_fallbacks) g_charset_converter_get_num_fallbacks __attribute((alias("IA__g_charset_converter_get_num_fallbacks"), visibility("default")));

#undef g_charset_converter_get_use_fallback 
extern __typeof (g_charset_converter_get_use_fallback) g_charset_converter_get_use_fallback __attribute((alias("IA__g_charset_converter_get_use_fallback"), visibility("default")));

#undef g_charset_converter_set_use_fallback 
extern __typeof (g_charset_converter_set_use_fallback) g_charset_converter_set_use_fallback __attribute((alias("IA__g_charset_converter_set_use_fallback"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_DATA_INPUT_STREAM_H__)
#if IN_FILE(__G_DATA_INPUT_STREAM_C__)
#undef g_data_input_stream_get_type 
extern __typeof (g_data_input_stream_get_type) g_data_input_stream_get_type __attribute((alias("IA__g_data_input_stream_get_type"), visibility("default")));

#undef g_data_input_stream_new 
extern __typeof (g_data_input_stream_new) g_data_input_stream_new __attribute((alias("IA__g_data_input_stream_new"), visibility("default")));

#undef g_data_input_stream_set_byte_order 
extern __typeof (g_data_input_stream_set_byte_order) g_data_input_stream_set_byte_order __attribute((alias("IA__g_data_input_stream_set_byte_order"), visibility("default")));

#undef g_data_input_stream_get_byte_order 
extern __typeof (g_data_input_stream_get_byte_order) g_data_input_stream_get_byte_order __attribute((alias("IA__g_data_input_stream_get_byte_order"), visibility("default")));

#undef g_data_input_stream_set_newline_type 
extern __typeof (g_data_input_stream_set_newline_type) g_data_input_stream_set_newline_type __attribute((alias("IA__g_data_input_stream_set_newline_type"), visibility("default")));

#undef g_data_input_stream_get_newline_type 
extern __typeof (g_data_input_stream_get_newline_type) g_data_input_stream_get_newline_type __attribute((alias("IA__g_data_input_stream_get_newline_type"), visibility("default")));

#undef g_data_input_stream_read_byte 
extern __typeof (g_data_input_stream_read_byte) g_data_input_stream_read_byte __attribute((alias("IA__g_data_input_stream_read_byte"), visibility("default")));

#undef g_data_input_stream_read_int16 
extern __typeof (g_data_input_stream_read_int16) g_data_input_stream_read_int16 __attribute((alias("IA__g_data_input_stream_read_int16"), visibility("default")));

#undef g_data_input_stream_read_uint16 
extern __typeof (g_data_input_stream_read_uint16) g_data_input_stream_read_uint16 __attribute((alias("IA__g_data_input_stream_read_uint16"), visibility("default")));

#undef g_data_input_stream_read_int32 
extern __typeof (g_data_input_stream_read_int32) g_data_input_stream_read_int32 __attribute((alias("IA__g_data_input_stream_read_int32"), visibility("default")));

#undef g_data_input_stream_read_uint32 
extern __typeof (g_data_input_stream_read_uint32) g_data_input_stream_read_uint32 __attribute((alias("IA__g_data_input_stream_read_uint32"), visibility("default")));

#undef g_data_input_stream_read_int64 
extern __typeof (g_data_input_stream_read_int64) g_data_input_stream_read_int64 __attribute((alias("IA__g_data_input_stream_read_int64"), visibility("default")));

#undef g_data_input_stream_read_uint64 
extern __typeof (g_data_input_stream_read_uint64) g_data_input_stream_read_uint64 __attribute((alias("IA__g_data_input_stream_read_uint64"), visibility("default")));

#undef g_data_input_stream_read_line 
extern __typeof (g_data_input_stream_read_line) g_data_input_stream_read_line __attribute((alias("IA__g_data_input_stream_read_line"), visibility("default")));

#undef g_data_input_stream_read_line_async 
extern __typeof (g_data_input_stream_read_line_async) g_data_input_stream_read_line_async __attribute((alias("IA__g_data_input_stream_read_line_async"), visibility("default")));

#undef g_data_input_stream_read_line_finish 
extern __typeof (g_data_input_stream_read_line_finish) g_data_input_stream_read_line_finish __attribute((alias("IA__g_data_input_stream_read_line_finish"), visibility("default")));

#undef g_data_input_stream_read_until 
extern __typeof (g_data_input_stream_read_until) g_data_input_stream_read_until __attribute((alias("IA__g_data_input_stream_read_until"), visibility("default")));

#undef g_data_input_stream_read_until_async 
extern __typeof (g_data_input_stream_read_until_async) g_data_input_stream_read_until_async __attribute((alias("IA__g_data_input_stream_read_until_async"), visibility("default")));

#undef g_data_input_stream_read_until_finish 
extern __typeof (g_data_input_stream_read_until_finish) g_data_input_stream_read_until_finish __attribute((alias("IA__g_data_input_stream_read_until_finish"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_DATA_OUTPUT_STREAM_H__)
#if IN_FILE(__G_DATA_OUTPUT_STREAM_C__)
#undef g_data_output_stream_get_type 
extern __typeof (g_data_output_stream_get_type) g_data_output_stream_get_type __attribute((alias("IA__g_data_output_stream_get_type"), visibility("default")));

#undef g_data_output_stream_new 
extern __typeof (g_data_output_stream_new) g_data_output_stream_new __attribute((alias("IA__g_data_output_stream_new"), visibility("default")));

#undef g_data_output_stream_set_byte_order 
extern __typeof (g_data_output_stream_set_byte_order) g_data_output_stream_set_byte_order __attribute((alias("IA__g_data_output_stream_set_byte_order"), visibility("default")));

#undef g_data_output_stream_get_byte_order 
extern __typeof (g_data_output_stream_get_byte_order) g_data_output_stream_get_byte_order __attribute((alias("IA__g_data_output_stream_get_byte_order"), visibility("default")));

#undef g_data_output_stream_put_byte 
extern __typeof (g_data_output_stream_put_byte) g_data_output_stream_put_byte __attribute((alias("IA__g_data_output_stream_put_byte"), visibility("default")));

#undef g_data_output_stream_put_int16 
extern __typeof (g_data_output_stream_put_int16) g_data_output_stream_put_int16 __attribute((alias("IA__g_data_output_stream_put_int16"), visibility("default")));

#undef g_data_output_stream_put_uint16 
extern __typeof (g_data_output_stream_put_uint16) g_data_output_stream_put_uint16 __attribute((alias("IA__g_data_output_stream_put_uint16"), visibility("default")));

#undef g_data_output_stream_put_int32 
extern __typeof (g_data_output_stream_put_int32) g_data_output_stream_put_int32 __attribute((alias("IA__g_data_output_stream_put_int32"), visibility("default")));

#undef g_data_output_stream_put_uint32 
extern __typeof (g_data_output_stream_put_uint32) g_data_output_stream_put_uint32 __attribute((alias("IA__g_data_output_stream_put_uint32"), visibility("default")));

#undef g_data_output_stream_put_int64 
extern __typeof (g_data_output_stream_put_int64) g_data_output_stream_put_int64 __attribute((alias("IA__g_data_output_stream_put_int64"), visibility("default")));

#undef g_data_output_stream_put_uint64 
extern __typeof (g_data_output_stream_put_uint64) g_data_output_stream_put_uint64 __attribute((alias("IA__g_data_output_stream_put_uint64"), visibility("default")));

#undef g_data_output_stream_put_string 
extern __typeof (g_data_output_stream_put_string) g_data_output_stream_put_string __attribute((alias("IA__g_data_output_stream_put_string"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_DRIVE_H__)
#if IN_FILE(__G_DRIVE_C__)
#undef g_drive_get_type 
extern __typeof (g_drive_get_type) g_drive_get_type __attribute((alias("IA__g_drive_get_type"), visibility("default")));

#undef g_drive_get_name 
extern __typeof (g_drive_get_name) g_drive_get_name __attribute((alias("IA__g_drive_get_name"), visibility("default")));

#undef g_drive_get_icon 
extern __typeof (g_drive_get_icon) g_drive_get_icon __attribute((alias("IA__g_drive_get_icon"), visibility("default")));

#undef g_drive_has_volumes 
extern __typeof (g_drive_has_volumes) g_drive_has_volumes __attribute((alias("IA__g_drive_has_volumes"), visibility("default")));

#undef g_drive_get_volumes 
extern __typeof (g_drive_get_volumes) g_drive_get_volumes __attribute((alias("IA__g_drive_get_volumes"), visibility("default")));

#undef g_drive_is_media_removable 
extern __typeof (g_drive_is_media_removable) g_drive_is_media_removable __attribute((alias("IA__g_drive_is_media_removable"), visibility("default")));

#undef g_drive_has_media 
extern __typeof (g_drive_has_media) g_drive_has_media __attribute((alias("IA__g_drive_has_media"), visibility("default")));

#undef g_drive_is_media_check_automatic 
extern __typeof (g_drive_is_media_check_automatic) g_drive_is_media_check_automatic __attribute((alias("IA__g_drive_is_media_check_automatic"), visibility("default")));

#undef g_drive_can_poll_for_media 
extern __typeof (g_drive_can_poll_for_media) g_drive_can_poll_for_media __attribute((alias("IA__g_drive_can_poll_for_media"), visibility("default")));

#undef g_drive_can_eject 
extern __typeof (g_drive_can_eject) g_drive_can_eject __attribute((alias("IA__g_drive_can_eject"), visibility("default")));

#undef g_drive_eject_with_operation 
extern __typeof (g_drive_eject_with_operation) g_drive_eject_with_operation __attribute((alias("IA__g_drive_eject_with_operation"), visibility("default")));

#undef g_drive_eject_with_operation_finish 
extern __typeof (g_drive_eject_with_operation_finish) g_drive_eject_with_operation_finish __attribute((alias("IA__g_drive_eject_with_operation_finish"), visibility("default")));

#undef g_drive_poll_for_media 
extern __typeof (g_drive_poll_for_media) g_drive_poll_for_media __attribute((alias("IA__g_drive_poll_for_media"), visibility("default")));

#undef g_drive_poll_for_media_finish 
extern __typeof (g_drive_poll_for_media_finish) g_drive_poll_for_media_finish __attribute((alias("IA__g_drive_poll_for_media_finish"), visibility("default")));

#undef g_drive_get_identifier 
extern __typeof (g_drive_get_identifier) g_drive_get_identifier __attribute((alias("IA__g_drive_get_identifier"), visibility("default")));

#undef g_drive_enumerate_identifiers 
extern __typeof (g_drive_enumerate_identifiers) g_drive_enumerate_identifiers __attribute((alias("IA__g_drive_enumerate_identifiers"), visibility("default")));

#undef g_drive_get_start_stop_type 
extern __typeof (g_drive_get_start_stop_type) g_drive_get_start_stop_type __attribute((alias("IA__g_drive_get_start_stop_type"), visibility("default")));

#undef g_drive_can_start 
extern __typeof (g_drive_can_start) g_drive_can_start __attribute((alias("IA__g_drive_can_start"), visibility("default")));

#undef g_drive_can_start_degraded 
extern __typeof (g_drive_can_start_degraded) g_drive_can_start_degraded __attribute((alias("IA__g_drive_can_start_degraded"), visibility("default")));

#undef g_drive_start 
extern __typeof (g_drive_start) g_drive_start __attribute((alias("IA__g_drive_start"), visibility("default")));

#undef g_drive_start_finish 
extern __typeof (g_drive_start_finish) g_drive_start_finish __attribute((alias("IA__g_drive_start_finish"), visibility("default")));

#undef g_drive_can_stop 
extern __typeof (g_drive_can_stop) g_drive_can_stop __attribute((alias("IA__g_drive_can_stop"), visibility("default")));

#undef g_drive_stop 
extern __typeof (g_drive_stop) g_drive_stop __attribute((alias("IA__g_drive_stop"), visibility("default")));

#undef g_drive_stop_finish 
extern __typeof (g_drive_stop_finish) g_drive_stop_finish __attribute((alias("IA__g_drive_stop_finish"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_drive_eject 
extern __typeof (g_drive_eject) g_drive_eject __attribute((alias("IA__g_drive_eject"), visibility("default")));

#undef g_drive_eject_finish 
extern __typeof (g_drive_eject_finish) g_drive_eject_finish __attribute((alias("IA__g_drive_eject_finish"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_FILE_ATTRIBUTE_H__)
#if IN_FILE(__G_FILE_ATTRIBUTE_C__)
#undef g_file_attribute_info_list_new 
extern __typeof (g_file_attribute_info_list_new) g_file_attribute_info_list_new __attribute((alias("IA__g_file_attribute_info_list_new"), visibility("default")));

#undef g_file_attribute_info_list_ref 
extern __typeof (g_file_attribute_info_list_ref) g_file_attribute_info_list_ref __attribute((alias("IA__g_file_attribute_info_list_ref"), visibility("default")));

#undef g_file_attribute_info_list_unref 
extern __typeof (g_file_attribute_info_list_unref) g_file_attribute_info_list_unref __attribute((alias("IA__g_file_attribute_info_list_unref"), visibility("default")));

#undef g_file_attribute_info_list_dup 
extern __typeof (g_file_attribute_info_list_dup) g_file_attribute_info_list_dup __attribute((alias("IA__g_file_attribute_info_list_dup"), visibility("default")));

#undef g_file_attribute_info_list_get_type 
extern __typeof (g_file_attribute_info_list_get_type) g_file_attribute_info_list_get_type __attribute((alias("IA__g_file_attribute_info_list_get_type"), visibility("default")));

#undef g_file_attribute_info_list_lookup 
extern __typeof (g_file_attribute_info_list_lookup) g_file_attribute_info_list_lookup __attribute((alias("IA__g_file_attribute_info_list_lookup"), visibility("default")));

#undef g_file_attribute_info_list_add 
extern __typeof (g_file_attribute_info_list_add) g_file_attribute_info_list_add __attribute((alias("IA__g_file_attribute_info_list_add"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_H__)
#if IN_FILE(__G_FILE_C__)
#undef g_file_get_type 
extern __typeof (g_file_get_type) g_file_get_type __attribute((alias("IA__g_file_get_type"), visibility("default")));

#undef g_file_new_for_path 
extern __typeof (g_file_new_for_path) g_file_new_for_path __attribute((alias("IA__g_file_new_for_path"), visibility("default")));

#undef g_file_new_for_uri 
extern __typeof (g_file_new_for_uri) g_file_new_for_uri __attribute((alias("IA__g_file_new_for_uri"), visibility("default")));

#undef g_file_new_for_commandline_arg 
extern __typeof (g_file_new_for_commandline_arg) g_file_new_for_commandline_arg __attribute((alias("IA__g_file_new_for_commandline_arg"), visibility("default")));

#undef g_file_parse_name 
extern __typeof (g_file_parse_name) g_file_parse_name __attribute((alias("IA__g_file_parse_name"), visibility("default")));

#undef g_file_dup 
extern __typeof (g_file_dup) g_file_dup __attribute((alias("IA__g_file_dup"), visibility("default")));

#undef g_file_hash 
extern __typeof (g_file_hash) g_file_hash __attribute((alias("IA__g_file_hash"), visibility("default")));

#undef g_file_equal 
extern __typeof (g_file_equal) g_file_equal __attribute((alias("IA__g_file_equal"), visibility("default")));

#undef g_file_get_basename 
extern __typeof (g_file_get_basename) g_file_get_basename __attribute((alias("IA__g_file_get_basename"), visibility("default")));

#undef g_file_get_path 
extern __typeof (g_file_get_path) g_file_get_path __attribute((alias("IA__g_file_get_path"), visibility("default")));

#undef g_file_get_uri 
extern __typeof (g_file_get_uri) g_file_get_uri __attribute((alias("IA__g_file_get_uri"), visibility("default")));

#undef g_file_get_parse_name 
extern __typeof (g_file_get_parse_name) g_file_get_parse_name __attribute((alias("IA__g_file_get_parse_name"), visibility("default")));

#undef g_file_get_parent 
extern __typeof (g_file_get_parent) g_file_get_parent __attribute((alias("IA__g_file_get_parent"), visibility("default")));

#undef g_file_has_parent 
extern __typeof (g_file_has_parent) g_file_has_parent __attribute((alias("IA__g_file_has_parent"), visibility("default")));

#undef g_file_get_child 
extern __typeof (g_file_get_child) g_file_get_child __attribute((alias("IA__g_file_get_child"), visibility("default")));

#undef g_file_get_child_for_display_name 
extern __typeof (g_file_get_child_for_display_name) g_file_get_child_for_display_name __attribute((alias("IA__g_file_get_child_for_display_name"), visibility("default")));

#undef g_file_has_prefix 
extern __typeof (g_file_has_prefix) g_file_has_prefix __attribute((alias("IA__g_file_has_prefix"), visibility("default")));

#undef g_file_get_relative_path 
extern __typeof (g_file_get_relative_path) g_file_get_relative_path __attribute((alias("IA__g_file_get_relative_path"), visibility("default")));

#undef g_file_resolve_relative_path 
extern __typeof (g_file_resolve_relative_path) g_file_resolve_relative_path __attribute((alias("IA__g_file_resolve_relative_path"), visibility("default")));

#undef g_file_is_native 
extern __typeof (g_file_is_native) g_file_is_native __attribute((alias("IA__g_file_is_native"), visibility("default")));

#undef g_file_has_uri_scheme 
extern __typeof (g_file_has_uri_scheme) g_file_has_uri_scheme __attribute((alias("IA__g_file_has_uri_scheme"), visibility("default")));

#undef g_file_get_uri_scheme 
extern __typeof (g_file_get_uri_scheme) g_file_get_uri_scheme __attribute((alias("IA__g_file_get_uri_scheme"), visibility("default")));

#undef g_file_read 
extern __typeof (g_file_read) g_file_read __attribute((alias("IA__g_file_read"), visibility("default")));

#undef g_file_read_async 
extern __typeof (g_file_read_async) g_file_read_async __attribute((alias("IA__g_file_read_async"), visibility("default")));

#undef g_file_read_finish 
extern __typeof (g_file_read_finish) g_file_read_finish __attribute((alias("IA__g_file_read_finish"), visibility("default")));

#undef g_file_append_to 
extern __typeof (g_file_append_to) g_file_append_to __attribute((alias("IA__g_file_append_to"), visibility("default")));

#undef g_file_create 
extern __typeof (g_file_create) g_file_create __attribute((alias("IA__g_file_create"), visibility("default")));

#undef g_file_replace 
extern __typeof (g_file_replace) g_file_replace __attribute((alias("IA__g_file_replace"), visibility("default")));

#undef g_file_append_to_async 
extern __typeof (g_file_append_to_async) g_file_append_to_async __attribute((alias("IA__g_file_append_to_async"), visibility("default")));

#undef g_file_append_to_finish 
extern __typeof (g_file_append_to_finish) g_file_append_to_finish __attribute((alias("IA__g_file_append_to_finish"), visibility("default")));

#undef g_file_create_async 
extern __typeof (g_file_create_async) g_file_create_async __attribute((alias("IA__g_file_create_async"), visibility("default")));

#undef g_file_create_finish 
extern __typeof (g_file_create_finish) g_file_create_finish __attribute((alias("IA__g_file_create_finish"), visibility("default")));

#undef g_file_replace_async 
extern __typeof (g_file_replace_async) g_file_replace_async __attribute((alias("IA__g_file_replace_async"), visibility("default")));

#undef g_file_replace_finish 
extern __typeof (g_file_replace_finish) g_file_replace_finish __attribute((alias("IA__g_file_replace_finish"), visibility("default")));

#undef g_file_query_exists 
extern __typeof (g_file_query_exists) g_file_query_exists __attribute((alias("IA__g_file_query_exists"), visibility("default")));

#undef g_file_query_info 
extern __typeof (g_file_query_info) g_file_query_info __attribute((alias("IA__g_file_query_info"), visibility("default")));

#undef g_file_query_info_async 
extern __typeof (g_file_query_info_async) g_file_query_info_async __attribute((alias("IA__g_file_query_info_async"), visibility("default")));

#undef g_file_query_info_finish 
extern __typeof (g_file_query_info_finish) g_file_query_info_finish __attribute((alias("IA__g_file_query_info_finish"), visibility("default")));

#undef g_file_query_file_type 
extern __typeof (g_file_query_file_type) g_file_query_file_type __attribute((alias("IA__g_file_query_file_type"), visibility("default")));

#undef g_file_query_filesystem_info 
extern __typeof (g_file_query_filesystem_info) g_file_query_filesystem_info __attribute((alias("IA__g_file_query_filesystem_info"), visibility("default")));

#undef g_file_query_filesystem_info_async 
extern __typeof (g_file_query_filesystem_info_async) g_file_query_filesystem_info_async __attribute((alias("IA__g_file_query_filesystem_info_async"), visibility("default")));

#undef g_file_query_filesystem_info_finish 
extern __typeof (g_file_query_filesystem_info_finish) g_file_query_filesystem_info_finish __attribute((alias("IA__g_file_query_filesystem_info_finish"), visibility("default")));

#undef g_file_find_enclosing_mount 
extern __typeof (g_file_find_enclosing_mount) g_file_find_enclosing_mount __attribute((alias("IA__g_file_find_enclosing_mount"), visibility("default")));

#undef g_file_find_enclosing_mount_async 
extern __typeof (g_file_find_enclosing_mount_async) g_file_find_enclosing_mount_async __attribute((alias("IA__g_file_find_enclosing_mount_async"), visibility("default")));

#undef g_file_find_enclosing_mount_finish 
extern __typeof (g_file_find_enclosing_mount_finish) g_file_find_enclosing_mount_finish __attribute((alias("IA__g_file_find_enclosing_mount_finish"), visibility("default")));

#undef g_file_enumerate_children 
extern __typeof (g_file_enumerate_children) g_file_enumerate_children __attribute((alias("IA__g_file_enumerate_children"), visibility("default")));

#undef g_file_enumerate_children_async 
extern __typeof (g_file_enumerate_children_async) g_file_enumerate_children_async __attribute((alias("IA__g_file_enumerate_children_async"), visibility("default")));

#undef g_file_enumerate_children_finish 
extern __typeof (g_file_enumerate_children_finish) g_file_enumerate_children_finish __attribute((alias("IA__g_file_enumerate_children_finish"), visibility("default")));

#undef g_file_set_display_name 
extern __typeof (g_file_set_display_name) g_file_set_display_name __attribute((alias("IA__g_file_set_display_name"), visibility("default")));

#undef g_file_set_display_name_async 
extern __typeof (g_file_set_display_name_async) g_file_set_display_name_async __attribute((alias("IA__g_file_set_display_name_async"), visibility("default")));

#undef g_file_set_display_name_finish 
extern __typeof (g_file_set_display_name_finish) g_file_set_display_name_finish __attribute((alias("IA__g_file_set_display_name_finish"), visibility("default")));

#undef g_file_delete 
extern __typeof (g_file_delete) g_file_delete __attribute((alias("IA__g_file_delete"), visibility("default")));

#undef g_file_trash 
extern __typeof (g_file_trash) g_file_trash __attribute((alias("IA__g_file_trash"), visibility("default")));

#undef g_file_copy 
extern __typeof (g_file_copy) g_file_copy __attribute((alias("IA__g_file_copy"), visibility("default")));

#undef g_file_copy_async 
extern __typeof (g_file_copy_async) g_file_copy_async __attribute((alias("IA__g_file_copy_async"), visibility("default")));

#undef g_file_copy_finish 
extern __typeof (g_file_copy_finish) g_file_copy_finish __attribute((alias("IA__g_file_copy_finish"), visibility("default")));

#undef g_file_move 
extern __typeof (g_file_move) g_file_move __attribute((alias("IA__g_file_move"), visibility("default")));

#undef g_file_make_directory 
extern __typeof (g_file_make_directory) g_file_make_directory __attribute((alias("IA__g_file_make_directory"), visibility("default")));

#undef g_file_make_directory_with_parents 
extern __typeof (g_file_make_directory_with_parents) g_file_make_directory_with_parents __attribute((alias("IA__g_file_make_directory_with_parents"), visibility("default")));

#undef g_file_make_symbolic_link 
extern __typeof (g_file_make_symbolic_link) g_file_make_symbolic_link __attribute((alias("IA__g_file_make_symbolic_link"), visibility("default")));

#undef g_file_query_settable_attributes 
extern __typeof (g_file_query_settable_attributes) g_file_query_settable_attributes __attribute((alias("IA__g_file_query_settable_attributes"), visibility("default")));

#undef g_file_query_writable_namespaces 
extern __typeof (g_file_query_writable_namespaces) g_file_query_writable_namespaces __attribute((alias("IA__g_file_query_writable_namespaces"), visibility("default")));

#undef g_file_set_attribute 
extern __typeof (g_file_set_attribute) g_file_set_attribute __attribute((alias("IA__g_file_set_attribute"), visibility("default")));

#undef g_file_set_attributes_from_info 
extern __typeof (g_file_set_attributes_from_info) g_file_set_attributes_from_info __attribute((alias("IA__g_file_set_attributes_from_info"), visibility("default")));

#undef g_file_set_attributes_async 
extern __typeof (g_file_set_attributes_async) g_file_set_attributes_async __attribute((alias("IA__g_file_set_attributes_async"), visibility("default")));

#undef g_file_set_attributes_finish 
extern __typeof (g_file_set_attributes_finish) g_file_set_attributes_finish __attribute((alias("IA__g_file_set_attributes_finish"), visibility("default")));

#undef g_file_set_attribute_string 
extern __typeof (g_file_set_attribute_string) g_file_set_attribute_string __attribute((alias("IA__g_file_set_attribute_string"), visibility("default")));

#undef g_file_set_attribute_byte_string 
extern __typeof (g_file_set_attribute_byte_string) g_file_set_attribute_byte_string __attribute((alias("IA__g_file_set_attribute_byte_string"), visibility("default")));

#undef g_file_set_attribute_uint32 
extern __typeof (g_file_set_attribute_uint32) g_file_set_attribute_uint32 __attribute((alias("IA__g_file_set_attribute_uint32"), visibility("default")));

#undef g_file_set_attribute_int32 
extern __typeof (g_file_set_attribute_int32) g_file_set_attribute_int32 __attribute((alias("IA__g_file_set_attribute_int32"), visibility("default")));

#undef g_file_set_attribute_uint64 
extern __typeof (g_file_set_attribute_uint64) g_file_set_attribute_uint64 __attribute((alias("IA__g_file_set_attribute_uint64"), visibility("default")));

#undef g_file_set_attribute_int64 
extern __typeof (g_file_set_attribute_int64) g_file_set_attribute_int64 __attribute((alias("IA__g_file_set_attribute_int64"), visibility("default")));

#undef g_file_mount_enclosing_volume 
extern __typeof (g_file_mount_enclosing_volume) g_file_mount_enclosing_volume __attribute((alias("IA__g_file_mount_enclosing_volume"), visibility("default")));

#undef g_file_mount_enclosing_volume_finish 
extern __typeof (g_file_mount_enclosing_volume_finish) g_file_mount_enclosing_volume_finish __attribute((alias("IA__g_file_mount_enclosing_volume_finish"), visibility("default")));

#undef g_file_mount_mountable 
extern __typeof (g_file_mount_mountable) g_file_mount_mountable __attribute((alias("IA__g_file_mount_mountable"), visibility("default")));

#undef g_file_mount_mountable_finish 
extern __typeof (g_file_mount_mountable_finish) g_file_mount_mountable_finish __attribute((alias("IA__g_file_mount_mountable_finish"), visibility("default")));

#undef g_file_unmount_mountable_with_operation 
extern __typeof (g_file_unmount_mountable_with_operation) g_file_unmount_mountable_with_operation __attribute((alias("IA__g_file_unmount_mountable_with_operation"), visibility("default")));

#undef g_file_unmount_mountable_with_operation_finish 
extern __typeof (g_file_unmount_mountable_with_operation_finish) g_file_unmount_mountable_with_operation_finish __attribute((alias("IA__g_file_unmount_mountable_with_operation_finish"), visibility("default")));

#undef g_file_eject_mountable_with_operation 
extern __typeof (g_file_eject_mountable_with_operation) g_file_eject_mountable_with_operation __attribute((alias("IA__g_file_eject_mountable_with_operation"), visibility("default")));

#undef g_file_eject_mountable_with_operation_finish 
extern __typeof (g_file_eject_mountable_with_operation_finish) g_file_eject_mountable_with_operation_finish __attribute((alias("IA__g_file_eject_mountable_with_operation_finish"), visibility("default")));

#undef g_file_copy_attributes 
extern __typeof (g_file_copy_attributes) g_file_copy_attributes __attribute((alias("IA__g_file_copy_attributes"), visibility("default")));

#undef g_file_monitor_directory 
extern __typeof (g_file_monitor_directory) g_file_monitor_directory __attribute((alias("IA__g_file_monitor_directory"), visibility("default")));

#undef g_file_monitor_file 
extern __typeof (g_file_monitor_file) g_file_monitor_file __attribute((alias("IA__g_file_monitor_file"), visibility("default")));

#undef g_file_monitor 
extern __typeof (g_file_monitor) g_file_monitor __attribute((alias("IA__g_file_monitor"), visibility("default")));

#undef g_file_query_default_handler 
extern __typeof (g_file_query_default_handler) g_file_query_default_handler __attribute((alias("IA__g_file_query_default_handler"), visibility("default")));

#undef g_file_load_contents 
extern __typeof (g_file_load_contents) g_file_load_contents __attribute((alias("IA__g_file_load_contents"), visibility("default")));

#undef g_file_load_contents_async 
extern __typeof (g_file_load_contents_async) g_file_load_contents_async __attribute((alias("IA__g_file_load_contents_async"), visibility("default")));

#undef g_file_load_contents_finish 
extern __typeof (g_file_load_contents_finish) g_file_load_contents_finish __attribute((alias("IA__g_file_load_contents_finish"), visibility("default")));

#undef g_file_load_partial_contents_async 
extern __typeof (g_file_load_partial_contents_async) g_file_load_partial_contents_async __attribute((alias("IA__g_file_load_partial_contents_async"), visibility("default")));

#undef g_file_load_partial_contents_finish 
extern __typeof (g_file_load_partial_contents_finish) g_file_load_partial_contents_finish __attribute((alias("IA__g_file_load_partial_contents_finish"), visibility("default")));

#undef g_file_replace_contents 
extern __typeof (g_file_replace_contents) g_file_replace_contents __attribute((alias("IA__g_file_replace_contents"), visibility("default")));

#undef g_file_replace_contents_async 
extern __typeof (g_file_replace_contents_async) g_file_replace_contents_async __attribute((alias("IA__g_file_replace_contents_async"), visibility("default")));

#undef g_file_replace_contents_finish 
extern __typeof (g_file_replace_contents_finish) g_file_replace_contents_finish __attribute((alias("IA__g_file_replace_contents_finish"), visibility("default")));

#undef g_file_create_readwrite 
extern __typeof (g_file_create_readwrite) g_file_create_readwrite __attribute((alias("IA__g_file_create_readwrite"), visibility("default")));

#undef g_file_create_readwrite_async 
extern __typeof (g_file_create_readwrite_async) g_file_create_readwrite_async __attribute((alias("IA__g_file_create_readwrite_async"), visibility("default")));

#undef g_file_create_readwrite_finish 
extern __typeof (g_file_create_readwrite_finish) g_file_create_readwrite_finish __attribute((alias("IA__g_file_create_readwrite_finish"), visibility("default")));

#undef g_file_open_readwrite 
extern __typeof (g_file_open_readwrite) g_file_open_readwrite __attribute((alias("IA__g_file_open_readwrite"), visibility("default")));

#undef g_file_open_readwrite_async 
extern __typeof (g_file_open_readwrite_async) g_file_open_readwrite_async __attribute((alias("IA__g_file_open_readwrite_async"), visibility("default")));

#undef g_file_open_readwrite_finish 
extern __typeof (g_file_open_readwrite_finish) g_file_open_readwrite_finish __attribute((alias("IA__g_file_open_readwrite_finish"), visibility("default")));

#undef g_file_replace_readwrite 
extern __typeof (g_file_replace_readwrite) g_file_replace_readwrite __attribute((alias("IA__g_file_replace_readwrite"), visibility("default")));

#undef g_file_replace_readwrite_async 
extern __typeof (g_file_replace_readwrite_async) g_file_replace_readwrite_async __attribute((alias("IA__g_file_replace_readwrite_async"), visibility("default")));

#undef g_file_replace_readwrite_finish 
extern __typeof (g_file_replace_readwrite_finish) g_file_replace_readwrite_finish __attribute((alias("IA__g_file_replace_readwrite_finish"), visibility("default")));

#undef g_file_start_mountable 
extern __typeof (g_file_start_mountable) g_file_start_mountable __attribute((alias("IA__g_file_start_mountable"), visibility("default")));

#undef g_file_start_mountable_finish 
extern __typeof (g_file_start_mountable_finish) g_file_start_mountable_finish __attribute((alias("IA__g_file_start_mountable_finish"), visibility("default")));

#undef g_file_stop_mountable 
extern __typeof (g_file_stop_mountable) g_file_stop_mountable __attribute((alias("IA__g_file_stop_mountable"), visibility("default")));

#undef g_file_stop_mountable_finish 
extern __typeof (g_file_stop_mountable_finish) g_file_stop_mountable_finish __attribute((alias("IA__g_file_stop_mountable_finish"), visibility("default")));

#undef g_file_supports_thread_contexts 
extern __typeof (g_file_supports_thread_contexts) g_file_supports_thread_contexts __attribute((alias("IA__g_file_supports_thread_contexts"), visibility("default")));

#undef g_file_poll_mountable 
extern __typeof (g_file_poll_mountable) g_file_poll_mountable __attribute((alias("IA__g_file_poll_mountable"), visibility("default")));

#undef g_file_poll_mountable_finish 
extern __typeof (g_file_poll_mountable_finish) g_file_poll_mountable_finish __attribute((alias("IA__g_file_poll_mountable_finish"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_file_unmount_mountable 
extern __typeof (g_file_unmount_mountable) g_file_unmount_mountable __attribute((alias("IA__g_file_unmount_mountable"), visibility("default")));

#undef g_file_unmount_mountable_finish 
extern __typeof (g_file_unmount_mountable_finish) g_file_unmount_mountable_finish __attribute((alias("IA__g_file_unmount_mountable_finish"), visibility("default")));

#undef g_file_eject_mountable 
extern __typeof (g_file_eject_mountable) g_file_eject_mountable __attribute((alias("IA__g_file_eject_mountable"), visibility("default")));

#undef g_file_eject_mountable_finish 
extern __typeof (g_file_eject_mountable_finish) g_file_eject_mountable_finish __attribute((alias("IA__g_file_eject_mountable_finish"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_FILE_ENUMERATOR_H__)
#if IN_FILE(__G_FILE_ENUMERATOR_C__)
#undef g_file_enumerator_get_type 
extern __typeof (g_file_enumerator_get_type) g_file_enumerator_get_type __attribute((alias("IA__g_file_enumerator_get_type"), visibility("default")));

#undef g_file_enumerator_next_file 
extern __typeof (g_file_enumerator_next_file) g_file_enumerator_next_file __attribute((alias("IA__g_file_enumerator_next_file"), visibility("default")));

#undef g_file_enumerator_close 
extern __typeof (g_file_enumerator_close) g_file_enumerator_close __attribute((alias("IA__g_file_enumerator_close"), visibility("default")));

#undef g_file_enumerator_next_files_async 
extern __typeof (g_file_enumerator_next_files_async) g_file_enumerator_next_files_async __attribute((alias("IA__g_file_enumerator_next_files_async"), visibility("default")));

#undef g_file_enumerator_next_files_finish 
extern __typeof (g_file_enumerator_next_files_finish) g_file_enumerator_next_files_finish __attribute((alias("IA__g_file_enumerator_next_files_finish"), visibility("default")));

#undef g_file_enumerator_close_async 
extern __typeof (g_file_enumerator_close_async) g_file_enumerator_close_async __attribute((alias("IA__g_file_enumerator_close_async"), visibility("default")));

#undef g_file_enumerator_close_finish 
extern __typeof (g_file_enumerator_close_finish) g_file_enumerator_close_finish __attribute((alias("IA__g_file_enumerator_close_finish"), visibility("default")));

#undef g_file_enumerator_is_closed 
extern __typeof (g_file_enumerator_is_closed) g_file_enumerator_is_closed __attribute((alias("IA__g_file_enumerator_is_closed"), visibility("default")));

#undef g_file_enumerator_has_pending 
extern __typeof (g_file_enumerator_has_pending) g_file_enumerator_has_pending __attribute((alias("IA__g_file_enumerator_has_pending"), visibility("default")));

#undef g_file_enumerator_set_pending 
extern __typeof (g_file_enumerator_set_pending) g_file_enumerator_set_pending __attribute((alias("IA__g_file_enumerator_set_pending"), visibility("default")));

#undef g_file_enumerator_get_container 
extern __typeof (g_file_enumerator_get_container) g_file_enumerator_get_container __attribute((alias("IA__g_file_enumerator_get_container"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_ICON_H__)
#if IN_FILE(__G_FILE_ICON_C__)
#undef g_file_icon_get_type 
extern __typeof (g_file_icon_get_type) g_file_icon_get_type __attribute((alias("IA__g_file_icon_get_type"), visibility("default")));

#undef g_file_icon_new 
extern __typeof (g_file_icon_new) g_file_icon_new __attribute((alias("IA__g_file_icon_new"), visibility("default")));

#undef g_file_icon_get_file 
extern __typeof (g_file_icon_get_file) g_file_icon_get_file __attribute((alias("IA__g_file_icon_get_file"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_INFO_H__)
#if IN_FILE(__G_FILE_INFO_C__)
#undef g_file_info_get_type 
extern __typeof (g_file_info_get_type) g_file_info_get_type __attribute((alias("IA__g_file_info_get_type"), visibility("default")));

#undef g_file_info_new 
extern __typeof (g_file_info_new) g_file_info_new __attribute((alias("IA__g_file_info_new"), visibility("default")));

#undef g_file_info_dup 
extern __typeof (g_file_info_dup) g_file_info_dup __attribute((alias("IA__g_file_info_dup"), visibility("default")));

#undef g_file_info_copy_into 
extern __typeof (g_file_info_copy_into) g_file_info_copy_into __attribute((alias("IA__g_file_info_copy_into"), visibility("default")));

#undef g_file_info_has_attribute 
extern __typeof (g_file_info_has_attribute) g_file_info_has_attribute __attribute((alias("IA__g_file_info_has_attribute"), visibility("default")));

#undef g_file_info_has_namespace 
extern __typeof (g_file_info_has_namespace) g_file_info_has_namespace __attribute((alias("IA__g_file_info_has_namespace"), visibility("default")));

#undef g_file_info_list_attributes 
extern __typeof (g_file_info_list_attributes) g_file_info_list_attributes __attribute((alias("IA__g_file_info_list_attributes"), visibility("default")));

#undef g_file_info_get_attribute_type 
extern __typeof (g_file_info_get_attribute_type) g_file_info_get_attribute_type __attribute((alias("IA__g_file_info_get_attribute_type"), visibility("default")));

#undef g_file_info_remove_attribute 
extern __typeof (g_file_info_remove_attribute) g_file_info_remove_attribute __attribute((alias("IA__g_file_info_remove_attribute"), visibility("default")));

#undef g_file_info_get_attribute_status 
extern __typeof (g_file_info_get_attribute_status) g_file_info_get_attribute_status __attribute((alias("IA__g_file_info_get_attribute_status"), visibility("default")));

#undef g_file_info_get_attribute_data 
extern __typeof (g_file_info_get_attribute_data) g_file_info_get_attribute_data __attribute((alias("IA__g_file_info_get_attribute_data"), visibility("default")));

#undef g_file_info_get_attribute_as_string 
extern __typeof (g_file_info_get_attribute_as_string) g_file_info_get_attribute_as_string __attribute((alias("IA__g_file_info_get_attribute_as_string"), visibility("default")));

#undef g_file_info_get_attribute_string 
extern __typeof (g_file_info_get_attribute_string) g_file_info_get_attribute_string __attribute((alias("IA__g_file_info_get_attribute_string"), visibility("default")));

#undef g_file_info_get_attribute_byte_string 
extern __typeof (g_file_info_get_attribute_byte_string) g_file_info_get_attribute_byte_string __attribute((alias("IA__g_file_info_get_attribute_byte_string"), visibility("default")));

#undef g_file_info_get_attribute_boolean 
extern __typeof (g_file_info_get_attribute_boolean) g_file_info_get_attribute_boolean __attribute((alias("IA__g_file_info_get_attribute_boolean"), visibility("default")));

#undef g_file_info_get_attribute_uint32 
extern __typeof (g_file_info_get_attribute_uint32) g_file_info_get_attribute_uint32 __attribute((alias("IA__g_file_info_get_attribute_uint32"), visibility("default")));

#undef g_file_info_get_attribute_int32 
extern __typeof (g_file_info_get_attribute_int32) g_file_info_get_attribute_int32 __attribute((alias("IA__g_file_info_get_attribute_int32"), visibility("default")));

#undef g_file_info_get_attribute_uint64 
extern __typeof (g_file_info_get_attribute_uint64) g_file_info_get_attribute_uint64 __attribute((alias("IA__g_file_info_get_attribute_uint64"), visibility("default")));

#undef g_file_info_get_attribute_int64 
extern __typeof (g_file_info_get_attribute_int64) g_file_info_get_attribute_int64 __attribute((alias("IA__g_file_info_get_attribute_int64"), visibility("default")));

#undef g_file_info_get_attribute_object 
extern __typeof (g_file_info_get_attribute_object) g_file_info_get_attribute_object __attribute((alias("IA__g_file_info_get_attribute_object"), visibility("default")));

#undef g_file_info_get_attribute_stringv 
extern __typeof (g_file_info_get_attribute_stringv) g_file_info_get_attribute_stringv __attribute((alias("IA__g_file_info_get_attribute_stringv"), visibility("default")));

#undef g_file_info_set_attribute_status 
extern __typeof (g_file_info_set_attribute_status) g_file_info_set_attribute_status __attribute((alias("IA__g_file_info_set_attribute_status"), visibility("default")));

#undef g_file_info_set_attribute 
extern __typeof (g_file_info_set_attribute) g_file_info_set_attribute __attribute((alias("IA__g_file_info_set_attribute"), visibility("default")));

#undef g_file_info_set_attribute_string 
extern __typeof (g_file_info_set_attribute_string) g_file_info_set_attribute_string __attribute((alias("IA__g_file_info_set_attribute_string"), visibility("default")));

#undef g_file_info_set_attribute_byte_string 
extern __typeof (g_file_info_set_attribute_byte_string) g_file_info_set_attribute_byte_string __attribute((alias("IA__g_file_info_set_attribute_byte_string"), visibility("default")));

#undef g_file_info_set_attribute_boolean 
extern __typeof (g_file_info_set_attribute_boolean) g_file_info_set_attribute_boolean __attribute((alias("IA__g_file_info_set_attribute_boolean"), visibility("default")));

#undef g_file_info_set_attribute_uint32 
extern __typeof (g_file_info_set_attribute_uint32) g_file_info_set_attribute_uint32 __attribute((alias("IA__g_file_info_set_attribute_uint32"), visibility("default")));

#undef g_file_info_set_attribute_int32 
extern __typeof (g_file_info_set_attribute_int32) g_file_info_set_attribute_int32 __attribute((alias("IA__g_file_info_set_attribute_int32"), visibility("default")));

#undef g_file_info_set_attribute_uint64 
extern __typeof (g_file_info_set_attribute_uint64) g_file_info_set_attribute_uint64 __attribute((alias("IA__g_file_info_set_attribute_uint64"), visibility("default")));

#undef g_file_info_set_attribute_int64 
extern __typeof (g_file_info_set_attribute_int64) g_file_info_set_attribute_int64 __attribute((alias("IA__g_file_info_set_attribute_int64"), visibility("default")));

#undef g_file_info_set_attribute_object 
extern __typeof (g_file_info_set_attribute_object) g_file_info_set_attribute_object __attribute((alias("IA__g_file_info_set_attribute_object"), visibility("default")));

#undef g_file_info_set_attribute_stringv 
extern __typeof (g_file_info_set_attribute_stringv) g_file_info_set_attribute_stringv __attribute((alias("IA__g_file_info_set_attribute_stringv"), visibility("default")));

#undef g_file_info_clear_status 
extern __typeof (g_file_info_clear_status) g_file_info_clear_status __attribute((alias("IA__g_file_info_clear_status"), visibility("default")));

#undef g_file_info_get_file_type 
extern __typeof (g_file_info_get_file_type) g_file_info_get_file_type __attribute((alias("IA__g_file_info_get_file_type"), visibility("default")));

#undef g_file_info_get_is_hidden 
extern __typeof (g_file_info_get_is_hidden) g_file_info_get_is_hidden __attribute((alias("IA__g_file_info_get_is_hidden"), visibility("default")));

#undef g_file_info_get_is_backup 
extern __typeof (g_file_info_get_is_backup) g_file_info_get_is_backup __attribute((alias("IA__g_file_info_get_is_backup"), visibility("default")));

#undef g_file_info_get_is_symlink 
extern __typeof (g_file_info_get_is_symlink) g_file_info_get_is_symlink __attribute((alias("IA__g_file_info_get_is_symlink"), visibility("default")));

#undef g_file_info_get_name 
extern __typeof (g_file_info_get_name) g_file_info_get_name __attribute((alias("IA__g_file_info_get_name"), visibility("default")));

#undef g_file_info_get_display_name 
extern __typeof (g_file_info_get_display_name) g_file_info_get_display_name __attribute((alias("IA__g_file_info_get_display_name"), visibility("default")));

#undef g_file_info_get_edit_name 
extern __typeof (g_file_info_get_edit_name) g_file_info_get_edit_name __attribute((alias("IA__g_file_info_get_edit_name"), visibility("default")));

#undef g_file_info_get_icon 
extern __typeof (g_file_info_get_icon) g_file_info_get_icon __attribute((alias("IA__g_file_info_get_icon"), visibility("default")));

#undef g_file_info_get_content_type 
extern __typeof (g_file_info_get_content_type) g_file_info_get_content_type __attribute((alias("IA__g_file_info_get_content_type"), visibility("default")));

#undef g_file_info_get_size 
extern __typeof (g_file_info_get_size) g_file_info_get_size __attribute((alias("IA__g_file_info_get_size"), visibility("default")));

#undef g_file_info_get_modification_time 
extern __typeof (g_file_info_get_modification_time) g_file_info_get_modification_time __attribute((alias("IA__g_file_info_get_modification_time"), visibility("default")));

#undef g_file_info_get_symlink_target 
extern __typeof (g_file_info_get_symlink_target) g_file_info_get_symlink_target __attribute((alias("IA__g_file_info_get_symlink_target"), visibility("default")));

#undef g_file_info_get_etag 
extern __typeof (g_file_info_get_etag) g_file_info_get_etag __attribute((alias("IA__g_file_info_get_etag"), visibility("default")));

#undef g_file_info_get_sort_order 
extern __typeof (g_file_info_get_sort_order) g_file_info_get_sort_order __attribute((alias("IA__g_file_info_get_sort_order"), visibility("default")));

#undef g_file_info_set_attribute_mask 
extern __typeof (g_file_info_set_attribute_mask) g_file_info_set_attribute_mask __attribute((alias("IA__g_file_info_set_attribute_mask"), visibility("default")));

#undef g_file_info_unset_attribute_mask 
extern __typeof (g_file_info_unset_attribute_mask) g_file_info_unset_attribute_mask __attribute((alias("IA__g_file_info_unset_attribute_mask"), visibility("default")));

#undef g_file_info_set_file_type 
extern __typeof (g_file_info_set_file_type) g_file_info_set_file_type __attribute((alias("IA__g_file_info_set_file_type"), visibility("default")));

#undef g_file_info_set_is_hidden 
extern __typeof (g_file_info_set_is_hidden) g_file_info_set_is_hidden __attribute((alias("IA__g_file_info_set_is_hidden"), visibility("default")));

#undef g_file_info_set_is_symlink 
extern __typeof (g_file_info_set_is_symlink) g_file_info_set_is_symlink __attribute((alias("IA__g_file_info_set_is_symlink"), visibility("default")));

#undef g_file_info_set_name 
extern __typeof (g_file_info_set_name) g_file_info_set_name __attribute((alias("IA__g_file_info_set_name"), visibility("default")));

#undef g_file_info_set_display_name 
extern __typeof (g_file_info_set_display_name) g_file_info_set_display_name __attribute((alias("IA__g_file_info_set_display_name"), visibility("default")));

#undef g_file_info_set_edit_name 
extern __typeof (g_file_info_set_edit_name) g_file_info_set_edit_name __attribute((alias("IA__g_file_info_set_edit_name"), visibility("default")));

#undef g_file_info_set_icon 
extern __typeof (g_file_info_set_icon) g_file_info_set_icon __attribute((alias("IA__g_file_info_set_icon"), visibility("default")));

#undef g_file_info_set_content_type 
extern __typeof (g_file_info_set_content_type) g_file_info_set_content_type __attribute((alias("IA__g_file_info_set_content_type"), visibility("default")));

#undef g_file_info_set_size 
extern __typeof (g_file_info_set_size) g_file_info_set_size __attribute((alias("IA__g_file_info_set_size"), visibility("default")));

#undef g_file_info_set_modification_time 
extern __typeof (g_file_info_set_modification_time) g_file_info_set_modification_time __attribute((alias("IA__g_file_info_set_modification_time"), visibility("default")));

#undef g_file_info_set_symlink_target 
extern __typeof (g_file_info_set_symlink_target) g_file_info_set_symlink_target __attribute((alias("IA__g_file_info_set_symlink_target"), visibility("default")));

#undef g_file_info_set_sort_order 
extern __typeof (g_file_info_set_sort_order) g_file_info_set_sort_order __attribute((alias("IA__g_file_info_set_sort_order"), visibility("default")));

#undef g_file_attribute_matcher_new 
extern __typeof (g_file_attribute_matcher_new) g_file_attribute_matcher_new __attribute((alias("IA__g_file_attribute_matcher_new"), visibility("default")));

#undef g_file_attribute_matcher_ref 
extern __typeof (g_file_attribute_matcher_ref) g_file_attribute_matcher_ref __attribute((alias("IA__g_file_attribute_matcher_ref"), visibility("default")));

#undef g_file_attribute_matcher_unref 
extern __typeof (g_file_attribute_matcher_unref) g_file_attribute_matcher_unref __attribute((alias("IA__g_file_attribute_matcher_unref"), visibility("default")));

#undef g_file_attribute_matcher_matches 
extern __typeof (g_file_attribute_matcher_matches) g_file_attribute_matcher_matches __attribute((alias("IA__g_file_attribute_matcher_matches"), visibility("default")));

#undef g_file_attribute_matcher_matches_only 
extern __typeof (g_file_attribute_matcher_matches_only) g_file_attribute_matcher_matches_only __attribute((alias("IA__g_file_attribute_matcher_matches_only"), visibility("default")));

#undef g_file_attribute_matcher_enumerate_namespace 
extern __typeof (g_file_attribute_matcher_enumerate_namespace) g_file_attribute_matcher_enumerate_namespace __attribute((alias("IA__g_file_attribute_matcher_enumerate_namespace"), visibility("default")));

#undef g_file_attribute_matcher_enumerate_next 
extern __typeof (g_file_attribute_matcher_enumerate_next) g_file_attribute_matcher_enumerate_next __attribute((alias("IA__g_file_attribute_matcher_enumerate_next"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_INPUT_STREAM_H__)
#if IN_FILE(__G_FILE_INPUT_STREAM_C__)
#undef g_file_input_stream_get_type 
extern __typeof (g_file_input_stream_get_type) g_file_input_stream_get_type __attribute((alias("IA__g_file_input_stream_get_type"), visibility("default")));

#undef g_file_input_stream_query_info 
extern __typeof (g_file_input_stream_query_info) g_file_input_stream_query_info __attribute((alias("IA__g_file_input_stream_query_info"), visibility("default")));

#undef g_file_input_stream_query_info_async 
extern __typeof (g_file_input_stream_query_info_async) g_file_input_stream_query_info_async __attribute((alias("IA__g_file_input_stream_query_info_async"), visibility("default")));

#undef g_file_input_stream_query_info_finish 
extern __typeof (g_file_input_stream_query_info_finish) g_file_input_stream_query_info_finish __attribute((alias("IA__g_file_input_stream_query_info_finish"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_MONITOR_H__)
#if IN_FILE(__G_FILE_MONITOR_C__)
#undef g_file_monitor_get_type 
extern __typeof (g_file_monitor_get_type) g_file_monitor_get_type __attribute((alias("IA__g_file_monitor_get_type"), visibility("default")));

#undef g_file_monitor_cancel 
extern __typeof (g_file_monitor_cancel) g_file_monitor_cancel __attribute((alias("IA__g_file_monitor_cancel"), visibility("default")));

#undef g_file_monitor_is_cancelled 
extern __typeof (g_file_monitor_is_cancelled) g_file_monitor_is_cancelled __attribute((alias("IA__g_file_monitor_is_cancelled"), visibility("default")));

#undef g_file_monitor_set_rate_limit 
extern __typeof (g_file_monitor_set_rate_limit) g_file_monitor_set_rate_limit __attribute((alias("IA__g_file_monitor_set_rate_limit"), visibility("default")));

#undef g_file_monitor_emit_event 
extern __typeof (g_file_monitor_emit_event) g_file_monitor_emit_event __attribute((alias("IA__g_file_monitor_emit_event"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILENAME_COMPLETER_H__)
#if IN_FILE(__G_FILENAME_COMPLETER_C__)
#undef g_filename_completer_get_type 
extern __typeof (g_filename_completer_get_type) g_filename_completer_get_type __attribute((alias("IA__g_filename_completer_get_type"), visibility("default")));

#undef g_filename_completer_new 
extern __typeof (g_filename_completer_new) g_filename_completer_new __attribute((alias("IA__g_filename_completer_new"), visibility("default")));

#undef g_filename_completer_get_completion_suffix 
extern __typeof (g_filename_completer_get_completion_suffix) g_filename_completer_get_completion_suffix __attribute((alias("IA__g_filename_completer_get_completion_suffix"), visibility("default")));

#undef g_filename_completer_get_completions 
extern __typeof (g_filename_completer_get_completions) g_filename_completer_get_completions __attribute((alias("IA__g_filename_completer_get_completions"), visibility("default")));

#undef g_filename_completer_set_dirs_only 
extern __typeof (g_filename_completer_set_dirs_only) g_filename_completer_set_dirs_only __attribute((alias("IA__g_filename_completer_set_dirs_only"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_OUTPUT_STREAM_H__)
#if IN_FILE(__G_FILE_OUTPUT_STREAM_C__)
#undef g_file_output_stream_get_type 
extern __typeof (g_file_output_stream_get_type) g_file_output_stream_get_type __attribute((alias("IA__g_file_output_stream_get_type"), visibility("default")));

#undef g_file_output_stream_query_info 
extern __typeof (g_file_output_stream_query_info) g_file_output_stream_query_info __attribute((alias("IA__g_file_output_stream_query_info"), visibility("default")));

#undef g_file_output_stream_query_info_async 
extern __typeof (g_file_output_stream_query_info_async) g_file_output_stream_query_info_async __attribute((alias("IA__g_file_output_stream_query_info_async"), visibility("default")));

#undef g_file_output_stream_query_info_finish 
extern __typeof (g_file_output_stream_query_info_finish) g_file_output_stream_query_info_finish __attribute((alias("IA__g_file_output_stream_query_info_finish"), visibility("default")));

#undef g_file_output_stream_get_etag 
extern __typeof (g_file_output_stream_get_etag) g_file_output_stream_get_etag __attribute((alias("IA__g_file_output_stream_get_etag"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_IO_STREAM_H__)
#if IN_FILE(__G_FILE_IO_STREAM_C__)
#undef g_file_io_stream_get_type 
extern __typeof (g_file_io_stream_get_type) g_file_io_stream_get_type __attribute((alias("IA__g_file_io_stream_get_type"), visibility("default")));

#undef g_file_io_stream_query_info 
extern __typeof (g_file_io_stream_query_info) g_file_io_stream_query_info __attribute((alias("IA__g_file_io_stream_query_info"), visibility("default")));

#undef g_file_io_stream_query_info_async 
extern __typeof (g_file_io_stream_query_info_async) g_file_io_stream_query_info_async __attribute((alias("IA__g_file_io_stream_query_info_async"), visibility("default")));

#undef g_file_io_stream_query_info_finish 
extern __typeof (g_file_io_stream_query_info_finish) g_file_io_stream_query_info_finish __attribute((alias("IA__g_file_io_stream_query_info_finish"), visibility("default")));

#undef g_file_io_stream_get_etag 
extern __typeof (g_file_io_stream_get_etag) g_file_io_stream_get_etag __attribute((alias("IA__g_file_io_stream_get_etag"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILTER_INPUT_STREAM_H__)
#if IN_FILE(__G_FILTER_INPUT_STREAM_C__)
#undef g_filter_input_stream_get_type 
extern __typeof (g_filter_input_stream_get_type) g_filter_input_stream_get_type __attribute((alias("IA__g_filter_input_stream_get_type"), visibility("default")));

#undef g_filter_input_stream_get_base_stream 
extern __typeof (g_filter_input_stream_get_base_stream) g_filter_input_stream_get_base_stream __attribute((alias("IA__g_filter_input_stream_get_base_stream"), visibility("default")));

#undef g_filter_input_stream_get_close_base_stream 
extern __typeof (g_filter_input_stream_get_close_base_stream) g_filter_input_stream_get_close_base_stream __attribute((alias("IA__g_filter_input_stream_get_close_base_stream"), visibility("default")));

#undef g_filter_input_stream_set_close_base_stream 
extern __typeof (g_filter_input_stream_set_close_base_stream) g_filter_input_stream_set_close_base_stream __attribute((alias("IA__g_filter_input_stream_set_close_base_stream"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILTER_OUTPUT_STREAM_H__)
#if IN_FILE(__G_FILTER_OUTPUT_STREAM_C__)
#undef g_filter_output_stream_get_type 
extern __typeof (g_filter_output_stream_get_type) g_filter_output_stream_get_type __attribute((alias("IA__g_filter_output_stream_get_type"), visibility("default")));

#undef g_filter_output_stream_get_base_stream 
extern __typeof (g_filter_output_stream_get_base_stream) g_filter_output_stream_get_base_stream __attribute((alias("IA__g_filter_output_stream_get_base_stream"), visibility("default")));

#undef g_filter_output_stream_get_close_base_stream 
extern __typeof (g_filter_output_stream_get_close_base_stream) g_filter_output_stream_get_close_base_stream __attribute((alias("IA__g_filter_output_stream_get_close_base_stream"), visibility("default")));

#undef g_filter_output_stream_set_close_base_stream 
extern __typeof (g_filter_output_stream_set_close_base_stream) g_filter_output_stream_set_close_base_stream __attribute((alias("IA__g_filter_output_stream_set_close_base_stream"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_ICON_H__)
#if IN_FILE(__G_ICON_C__)
#undef g_icon_get_type 
extern __typeof (g_icon_get_type) g_icon_get_type __attribute((alias("IA__g_icon_get_type"), visibility("default")));

#undef g_icon_hash 
extern __typeof (g_icon_hash) g_icon_hash __attribute((alias("IA__g_icon_hash"), visibility("default")));

#undef g_icon_equal 
extern __typeof (g_icon_equal) g_icon_equal __attribute((alias("IA__g_icon_equal"), visibility("default")));

#undef g_icon_to_string 
extern __typeof (g_icon_to_string) g_icon_to_string __attribute((alias("IA__g_icon_to_string"), visibility("default")));

#undef g_icon_new_for_string 
extern __typeof (g_icon_new_for_string) g_icon_new_for_string __attribute((alias("IA__g_icon_new_for_string"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_INPUT_STREAM_H__)
#if IN_FILE(__G_INPUT_STREAM_C__)
#undef g_input_stream_get_type 
extern __typeof (g_input_stream_get_type) g_input_stream_get_type __attribute((alias("IA__g_input_stream_get_type"), visibility("default")));

#undef g_input_stream_read 
extern __typeof (g_input_stream_read) g_input_stream_read __attribute((alias("IA__g_input_stream_read"), visibility("default")));

#undef g_input_stream_read_all 
extern __typeof (g_input_stream_read_all) g_input_stream_read_all __attribute((alias("IA__g_input_stream_read_all"), visibility("default")));

#undef g_input_stream_skip 
extern __typeof (g_input_stream_skip) g_input_stream_skip __attribute((alias("IA__g_input_stream_skip"), visibility("default")));

#undef g_input_stream_close 
extern __typeof (g_input_stream_close) g_input_stream_close __attribute((alias("IA__g_input_stream_close"), visibility("default")));

#undef g_input_stream_read_async 
extern __typeof (g_input_stream_read_async) g_input_stream_read_async __attribute((alias("IA__g_input_stream_read_async"), visibility("default")));

#undef g_input_stream_read_finish 
extern __typeof (g_input_stream_read_finish) g_input_stream_read_finish __attribute((alias("IA__g_input_stream_read_finish"), visibility("default")));

#undef g_input_stream_skip_async 
extern __typeof (g_input_stream_skip_async) g_input_stream_skip_async __attribute((alias("IA__g_input_stream_skip_async"), visibility("default")));

#undef g_input_stream_skip_finish 
extern __typeof (g_input_stream_skip_finish) g_input_stream_skip_finish __attribute((alias("IA__g_input_stream_skip_finish"), visibility("default")));

#undef g_input_stream_close_async 
extern __typeof (g_input_stream_close_async) g_input_stream_close_async __attribute((alias("IA__g_input_stream_close_async"), visibility("default")));

#undef g_input_stream_close_finish 
extern __typeof (g_input_stream_close_finish) g_input_stream_close_finish __attribute((alias("IA__g_input_stream_close_finish"), visibility("default")));

#undef g_input_stream_is_closed 
extern __typeof (g_input_stream_is_closed) g_input_stream_is_closed __attribute((alias("IA__g_input_stream_is_closed"), visibility("default")));

#undef g_input_stream_has_pending 
extern __typeof (g_input_stream_has_pending) g_input_stream_has_pending __attribute((alias("IA__g_input_stream_has_pending"), visibility("default")));

#undef g_input_stream_set_pending 
extern __typeof (g_input_stream_set_pending) g_input_stream_set_pending __attribute((alias("IA__g_input_stream_set_pending"), visibility("default")));

#undef g_input_stream_clear_pending 
extern __typeof (g_input_stream_clear_pending) g_input_stream_clear_pending __attribute((alias("IA__g_input_stream_clear_pending"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_IO_STREAM_H__)
#if IN_FILE(__G_IO_STREAM_C__)
#undef g_io_stream_get_type 
extern __typeof (g_io_stream_get_type) g_io_stream_get_type __attribute((alias("IA__g_io_stream_get_type"), visibility("default")));

#undef g_io_stream_get_input_stream 
extern __typeof (g_io_stream_get_input_stream) g_io_stream_get_input_stream __attribute((alias("IA__g_io_stream_get_input_stream"), visibility("default")));

#undef g_io_stream_get_output_stream 
extern __typeof (g_io_stream_get_output_stream) g_io_stream_get_output_stream __attribute((alias("IA__g_io_stream_get_output_stream"), visibility("default")));

#undef g_io_stream_close 
extern __typeof (g_io_stream_close) g_io_stream_close __attribute((alias("IA__g_io_stream_close"), visibility("default")));

#undef g_io_stream_close_async 
extern __typeof (g_io_stream_close_async) g_io_stream_close_async __attribute((alias("IA__g_io_stream_close_async"), visibility("default")));

#undef g_io_stream_close_finish 
extern __typeof (g_io_stream_close_finish) g_io_stream_close_finish __attribute((alias("IA__g_io_stream_close_finish"), visibility("default")));

#undef g_io_stream_is_closed 
extern __typeof (g_io_stream_is_closed) g_io_stream_is_closed __attribute((alias("IA__g_io_stream_is_closed"), visibility("default")));

#undef g_io_stream_has_pending 
extern __typeof (g_io_stream_has_pending) g_io_stream_has_pending __attribute((alias("IA__g_io_stream_has_pending"), visibility("default")));

#undef g_io_stream_set_pending 
extern __typeof (g_io_stream_set_pending) g_io_stream_set_pending __attribute((alias("IA__g_io_stream_set_pending"), visibility("default")));

#undef g_io_stream_clear_pending 
extern __typeof (g_io_stream_clear_pending) g_io_stream_clear_pending __attribute((alias("IA__g_io_stream_clear_pending"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_IO_ERROR_H__)
#if IN_FILE(__G_IO_ERROR_C__)
#undef g_io_error_quark 
extern __typeof (g_io_error_quark) g_io_error_quark __attribute((alias("IA__g_io_error_quark"), visibility("default")));

#undef g_io_error_from_errno 
extern __typeof (g_io_error_from_errno) g_io_error_from_errno __attribute((alias("IA__g_io_error_from_errno"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_IO_MODULE_H__)
#if IN_FILE(__G_IO_MODULE_C__)
#undef g_io_module_get_type 
extern __typeof (g_io_module_get_type) g_io_module_get_type __attribute((alias("IA__g_io_module_get_type"), visibility("default")));

#undef g_io_module_new 
extern __typeof (g_io_module_new) g_io_module_new __attribute((alias("IA__g_io_module_new"), visibility("default")));

#undef g_io_modules_scan_all_in_directory 
extern __typeof (g_io_modules_scan_all_in_directory) g_io_modules_scan_all_in_directory __attribute((alias("IA__g_io_modules_scan_all_in_directory"), visibility("default")));

#undef g_io_modules_load_all_in_directory 
extern __typeof (g_io_modules_load_all_in_directory) g_io_modules_load_all_in_directory __attribute((alias("IA__g_io_modules_load_all_in_directory"), visibility("default")));

#undef g_io_extension_point_register 
extern __typeof (g_io_extension_point_register) g_io_extension_point_register __attribute((alias("IA__g_io_extension_point_register"), visibility("default")));

#undef g_io_extension_point_lookup 
extern __typeof (g_io_extension_point_lookup) g_io_extension_point_lookup __attribute((alias("IA__g_io_extension_point_lookup"), visibility("default")));

#undef g_io_extension_point_set_required_type 
extern __typeof (g_io_extension_point_set_required_type) g_io_extension_point_set_required_type __attribute((alias("IA__g_io_extension_point_set_required_type"), visibility("default")));

#undef g_io_extension_point_get_required_type 
extern __typeof (g_io_extension_point_get_required_type) g_io_extension_point_get_required_type __attribute((alias("IA__g_io_extension_point_get_required_type"), visibility("default")));

#undef g_io_extension_point_get_extensions 
extern __typeof (g_io_extension_point_get_extensions) g_io_extension_point_get_extensions __attribute((alias("IA__g_io_extension_point_get_extensions"), visibility("default")));

#undef g_io_extension_point_get_extension_by_name 
extern __typeof (g_io_extension_point_get_extension_by_name) g_io_extension_point_get_extension_by_name __attribute((alias("IA__g_io_extension_point_get_extension_by_name"), visibility("default")));

#undef g_io_extension_point_implement 
extern __typeof (g_io_extension_point_implement) g_io_extension_point_implement __attribute((alias("IA__g_io_extension_point_implement"), visibility("default")));

#undef g_io_extension_get_type 
extern __typeof (g_io_extension_get_type) g_io_extension_get_type __attribute((alias("IA__g_io_extension_get_type"), visibility("default")));

#undef g_io_extension_get_name 
extern __typeof (g_io_extension_get_name) g_io_extension_get_name __attribute((alias("IA__g_io_extension_get_name"), visibility("default")));

#undef g_io_extension_get_priority 
extern __typeof (g_io_extension_get_priority) g_io_extension_get_priority __attribute((alias("IA__g_io_extension_get_priority"), visibility("default")));

#undef g_io_extension_ref_class 
extern __typeof (g_io_extension_ref_class) g_io_extension_ref_class __attribute((alias("IA__g_io_extension_ref_class"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_IO_SCHEDULER_H__)
#if IN_FILE(__G_IO_SCHEDULER_C__)
#undef g_io_scheduler_push_job 
extern __typeof (g_io_scheduler_push_job) g_io_scheduler_push_job __attribute((alias("IA__g_io_scheduler_push_job"), visibility("default")));

#undef g_io_scheduler_cancel_all_jobs 
extern __typeof (g_io_scheduler_cancel_all_jobs) g_io_scheduler_cancel_all_jobs __attribute((alias("IA__g_io_scheduler_cancel_all_jobs"), visibility("default")));

#undef g_io_scheduler_job_send_to_mainloop 
extern __typeof (g_io_scheduler_job_send_to_mainloop) g_io_scheduler_job_send_to_mainloop __attribute((alias("IA__g_io_scheduler_job_send_to_mainloop"), visibility("default")));

#undef g_io_scheduler_job_send_to_mainloop_async 
extern __typeof (g_io_scheduler_job_send_to_mainloop_async) g_io_scheduler_job_send_to_mainloop_async __attribute((alias("IA__g_io_scheduler_job_send_to_mainloop_async"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_LOADABLE_ICON_H__)
#if IN_FILE(__G_LOADABLE_ICON_C__)
#undef g_loadable_icon_get_type 
extern __typeof (g_loadable_icon_get_type) g_loadable_icon_get_type __attribute((alias("IA__g_loadable_icon_get_type"), visibility("default")));

#undef g_loadable_icon_load 
extern __typeof (g_loadable_icon_load) g_loadable_icon_load __attribute((alias("IA__g_loadable_icon_load"), visibility("default")));

#undef g_loadable_icon_load_async 
extern __typeof (g_loadable_icon_load_async) g_loadable_icon_load_async __attribute((alias("IA__g_loadable_icon_load_async"), visibility("default")));

#undef g_loadable_icon_load_finish 
extern __typeof (g_loadable_icon_load_finish) g_loadable_icon_load_finish __attribute((alias("IA__g_loadable_icon_load_finish"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_MEMORY_INPUT_STREAM_H__)
#if IN_FILE(__G_MEMORY_INPUT_STREAM_C__)
#undef g_memory_input_stream_get_type 
extern __typeof (g_memory_input_stream_get_type) g_memory_input_stream_get_type __attribute((alias("IA__g_memory_input_stream_get_type"), visibility("default")));

#undef g_memory_input_stream_new 
extern __typeof (g_memory_input_stream_new) g_memory_input_stream_new __attribute((alias("IA__g_memory_input_stream_new"), visibility("default")));

#undef g_memory_input_stream_new_from_data 
extern __typeof (g_memory_input_stream_new_from_data) g_memory_input_stream_new_from_data __attribute((alias("IA__g_memory_input_stream_new_from_data"), visibility("default")));

#undef g_memory_input_stream_add_data 
extern __typeof (g_memory_input_stream_add_data) g_memory_input_stream_add_data __attribute((alias("IA__g_memory_input_stream_add_data"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_MEMORY_OUTPUT_STREAM_H__)
#if IN_FILE(__G_MEMORY_OUTPUT_STREAM_C__)
#undef g_memory_output_stream_get_type 
extern __typeof (g_memory_output_stream_get_type) g_memory_output_stream_get_type __attribute((alias("IA__g_memory_output_stream_get_type"), visibility("default")));

#undef g_memory_output_stream_new 
extern __typeof (g_memory_output_stream_new) g_memory_output_stream_new __attribute((alias("IA__g_memory_output_stream_new"), visibility("default")));

#undef g_memory_output_stream_get_data 
extern __typeof (g_memory_output_stream_get_data) g_memory_output_stream_get_data __attribute((alias("IA__g_memory_output_stream_get_data"), visibility("default")));

#undef g_memory_output_stream_get_data_size 
extern __typeof (g_memory_output_stream_get_data_size) g_memory_output_stream_get_data_size __attribute((alias("IA__g_memory_output_stream_get_data_size"), visibility("default")));

#undef g_memory_output_stream_get_size 
extern __typeof (g_memory_output_stream_get_size) g_memory_output_stream_get_size __attribute((alias("IA__g_memory_output_stream_get_size"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_MOUNT_OPERATION_H__)
#if IN_FILE(__G_MOUNT_OPERATION_C__)
#undef g_mount_operation_get_type 
extern __typeof (g_mount_operation_get_type) g_mount_operation_get_type __attribute((alias("IA__g_mount_operation_get_type"), visibility("default")));

#undef g_mount_operation_new 
extern __typeof (g_mount_operation_new) g_mount_operation_new __attribute((alias("IA__g_mount_operation_new"), visibility("default")));

#undef g_mount_operation_get_username 
extern __typeof (g_mount_operation_get_username) g_mount_operation_get_username __attribute((alias("IA__g_mount_operation_get_username"), visibility("default")));

#undef g_mount_operation_set_username 
extern __typeof (g_mount_operation_set_username) g_mount_operation_set_username __attribute((alias("IA__g_mount_operation_set_username"), visibility("default")));

#undef g_mount_operation_get_password 
extern __typeof (g_mount_operation_get_password) g_mount_operation_get_password __attribute((alias("IA__g_mount_operation_get_password"), visibility("default")));

#undef g_mount_operation_set_password 
extern __typeof (g_mount_operation_set_password) g_mount_operation_set_password __attribute((alias("IA__g_mount_operation_set_password"), visibility("default")));

#undef g_mount_operation_get_anonymous 
extern __typeof (g_mount_operation_get_anonymous) g_mount_operation_get_anonymous __attribute((alias("IA__g_mount_operation_get_anonymous"), visibility("default")));

#undef g_mount_operation_set_anonymous 
extern __typeof (g_mount_operation_set_anonymous) g_mount_operation_set_anonymous __attribute((alias("IA__g_mount_operation_set_anonymous"), visibility("default")));

#undef g_mount_operation_get_domain 
extern __typeof (g_mount_operation_get_domain) g_mount_operation_get_domain __attribute((alias("IA__g_mount_operation_get_domain"), visibility("default")));

#undef g_mount_operation_set_domain 
extern __typeof (g_mount_operation_set_domain) g_mount_operation_set_domain __attribute((alias("IA__g_mount_operation_set_domain"), visibility("default")));

#undef g_mount_operation_get_password_save 
extern __typeof (g_mount_operation_get_password_save) g_mount_operation_get_password_save __attribute((alias("IA__g_mount_operation_get_password_save"), visibility("default")));

#undef g_mount_operation_set_password_save 
extern __typeof (g_mount_operation_set_password_save) g_mount_operation_set_password_save __attribute((alias("IA__g_mount_operation_set_password_save"), visibility("default")));

#undef g_mount_operation_get_choice 
extern __typeof (g_mount_operation_get_choice) g_mount_operation_get_choice __attribute((alias("IA__g_mount_operation_get_choice"), visibility("default")));

#undef g_mount_operation_set_choice 
extern __typeof (g_mount_operation_set_choice) g_mount_operation_set_choice __attribute((alias("IA__g_mount_operation_set_choice"), visibility("default")));

#undef g_mount_operation_reply 
extern __typeof (g_mount_operation_reply) g_mount_operation_reply __attribute((alias("IA__g_mount_operation_reply"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_OUTPUT_STREAM_H__)
#if IN_FILE(__G_OUTPUT_STREAM_C__)
#undef g_output_stream_get_type 
extern __typeof (g_output_stream_get_type) g_output_stream_get_type __attribute((alias("IA__g_output_stream_get_type"), visibility("default")));

#undef g_output_stream_write 
extern __typeof (g_output_stream_write) g_output_stream_write __attribute((alias("IA__g_output_stream_write"), visibility("default")));

#undef g_output_stream_write_all 
extern __typeof (g_output_stream_write_all) g_output_stream_write_all __attribute((alias("IA__g_output_stream_write_all"), visibility("default")));

#undef g_output_stream_splice 
extern __typeof (g_output_stream_splice) g_output_stream_splice __attribute((alias("IA__g_output_stream_splice"), visibility("default")));

#undef g_output_stream_flush 
extern __typeof (g_output_stream_flush) g_output_stream_flush __attribute((alias("IA__g_output_stream_flush"), visibility("default")));

#undef g_output_stream_close 
extern __typeof (g_output_stream_close) g_output_stream_close __attribute((alias("IA__g_output_stream_close"), visibility("default")));

#undef g_output_stream_write_async 
extern __typeof (g_output_stream_write_async) g_output_stream_write_async __attribute((alias("IA__g_output_stream_write_async"), visibility("default")));

#undef g_output_stream_write_finish 
extern __typeof (g_output_stream_write_finish) g_output_stream_write_finish __attribute((alias("IA__g_output_stream_write_finish"), visibility("default")));

#undef g_output_stream_splice_async 
extern __typeof (g_output_stream_splice_async) g_output_stream_splice_async __attribute((alias("IA__g_output_stream_splice_async"), visibility("default")));

#undef g_output_stream_splice_finish 
extern __typeof (g_output_stream_splice_finish) g_output_stream_splice_finish __attribute((alias("IA__g_output_stream_splice_finish"), visibility("default")));

#undef g_output_stream_flush_async 
extern __typeof (g_output_stream_flush_async) g_output_stream_flush_async __attribute((alias("IA__g_output_stream_flush_async"), visibility("default")));

#undef g_output_stream_flush_finish 
extern __typeof (g_output_stream_flush_finish) g_output_stream_flush_finish __attribute((alias("IA__g_output_stream_flush_finish"), visibility("default")));

#undef g_output_stream_close_async 
extern __typeof (g_output_stream_close_async) g_output_stream_close_async __attribute((alias("IA__g_output_stream_close_async"), visibility("default")));

#undef g_output_stream_close_finish 
extern __typeof (g_output_stream_close_finish) g_output_stream_close_finish __attribute((alias("IA__g_output_stream_close_finish"), visibility("default")));

#undef g_output_stream_is_closed 
extern __typeof (g_output_stream_is_closed) g_output_stream_is_closed __attribute((alias("IA__g_output_stream_is_closed"), visibility("default")));

#undef g_output_stream_is_closing 
extern __typeof (g_output_stream_is_closing) g_output_stream_is_closing __attribute((alias("IA__g_output_stream_is_closing"), visibility("default")));

#undef g_output_stream_has_pending 
extern __typeof (g_output_stream_has_pending) g_output_stream_has_pending __attribute((alias("IA__g_output_stream_has_pending"), visibility("default")));

#undef g_output_stream_set_pending 
extern __typeof (g_output_stream_set_pending) g_output_stream_set_pending __attribute((alias("IA__g_output_stream_set_pending"), visibility("default")));

#undef g_output_stream_clear_pending 
extern __typeof (g_output_stream_clear_pending) g_output_stream_clear_pending __attribute((alias("IA__g_output_stream_clear_pending"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SEEKABLE_H__)
#if IN_FILE(__G_SEEKABLE_C__)
#undef g_seekable_get_type 
extern __typeof (g_seekable_get_type) g_seekable_get_type __attribute((alias("IA__g_seekable_get_type"), visibility("default")));

#undef g_seekable_tell 
extern __typeof (g_seekable_tell) g_seekable_tell __attribute((alias("IA__g_seekable_tell"), visibility("default")));

#undef g_seekable_can_seek 
extern __typeof (g_seekable_can_seek) g_seekable_can_seek __attribute((alias("IA__g_seekable_can_seek"), visibility("default")));

#undef g_seekable_seek 
extern __typeof (g_seekable_seek) g_seekable_seek __attribute((alias("IA__g_seekable_seek"), visibility("default")));

#undef g_seekable_can_truncate 
extern __typeof (g_seekable_can_truncate) g_seekable_can_truncate __attribute((alias("IA__g_seekable_can_truncate"), visibility("default")));

#undef g_seekable_truncate 
extern __typeof (g_seekable_truncate) g_seekable_truncate __attribute((alias("IA__g_seekable_truncate"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SIMPLE_ASYNC_RESULT_H__)
#if IN_FILE(__G_SIMPLE_ASYNC_RESULT_C__)
#undef g_simple_async_result_get_type 
extern __typeof (g_simple_async_result_get_type) g_simple_async_result_get_type __attribute((alias("IA__g_simple_async_result_get_type"), visibility("default")));

#undef g_simple_async_result_new 
extern __typeof (g_simple_async_result_new) g_simple_async_result_new __attribute((alias("IA__g_simple_async_result_new"), visibility("default")));

#undef g_simple_async_result_new_error 
extern __typeof (g_simple_async_result_new_error) g_simple_async_result_new_error __attribute((alias("IA__g_simple_async_result_new_error"), visibility("default")));

#undef g_simple_async_result_new_from_error 
extern __typeof (g_simple_async_result_new_from_error) g_simple_async_result_new_from_error __attribute((alias("IA__g_simple_async_result_new_from_error"), visibility("default")));

#undef g_simple_async_result_set_op_res_gpointer 
extern __typeof (g_simple_async_result_set_op_res_gpointer) g_simple_async_result_set_op_res_gpointer __attribute((alias("IA__g_simple_async_result_set_op_res_gpointer"), visibility("default")));

#undef g_simple_async_result_get_op_res_gpointer 
extern __typeof (g_simple_async_result_get_op_res_gpointer) g_simple_async_result_get_op_res_gpointer __attribute((alias("IA__g_simple_async_result_get_op_res_gpointer"), visibility("default")));

#undef g_simple_async_result_set_op_res_gssize 
extern __typeof (g_simple_async_result_set_op_res_gssize) g_simple_async_result_set_op_res_gssize __attribute((alias("IA__g_simple_async_result_set_op_res_gssize"), visibility("default")));

#undef g_simple_async_result_get_op_res_gssize 
extern __typeof (g_simple_async_result_get_op_res_gssize) g_simple_async_result_get_op_res_gssize __attribute((alias("IA__g_simple_async_result_get_op_res_gssize"), visibility("default")));

#undef g_simple_async_result_set_op_res_gboolean 
extern __typeof (g_simple_async_result_set_op_res_gboolean) g_simple_async_result_set_op_res_gboolean __attribute((alias("IA__g_simple_async_result_set_op_res_gboolean"), visibility("default")));

#undef g_simple_async_result_get_op_res_gboolean 
extern __typeof (g_simple_async_result_get_op_res_gboolean) g_simple_async_result_get_op_res_gboolean __attribute((alias("IA__g_simple_async_result_get_op_res_gboolean"), visibility("default")));

#undef g_simple_async_result_get_source_tag 
extern __typeof (g_simple_async_result_get_source_tag) g_simple_async_result_get_source_tag __attribute((alias("IA__g_simple_async_result_get_source_tag"), visibility("default")));

#undef g_simple_async_result_set_handle_cancellation 
extern __typeof (g_simple_async_result_set_handle_cancellation) g_simple_async_result_set_handle_cancellation __attribute((alias("IA__g_simple_async_result_set_handle_cancellation"), visibility("default")));

#undef g_simple_async_result_complete 
extern __typeof (g_simple_async_result_complete) g_simple_async_result_complete __attribute((alias("IA__g_simple_async_result_complete"), visibility("default")));

#undef g_simple_async_result_complete_in_idle 
extern __typeof (g_simple_async_result_complete_in_idle) g_simple_async_result_complete_in_idle __attribute((alias("IA__g_simple_async_result_complete_in_idle"), visibility("default")));

#undef g_simple_async_result_run_in_thread 
extern __typeof (g_simple_async_result_run_in_thread) g_simple_async_result_run_in_thread __attribute((alias("IA__g_simple_async_result_run_in_thread"), visibility("default")));

#undef g_simple_async_result_set_from_error 
extern __typeof (g_simple_async_result_set_from_error) g_simple_async_result_set_from_error __attribute((alias("IA__g_simple_async_result_set_from_error"), visibility("default")));

#undef g_simple_async_result_propagate_error 
extern __typeof (g_simple_async_result_propagate_error) g_simple_async_result_propagate_error __attribute((alias("IA__g_simple_async_result_propagate_error"), visibility("default")));

#undef g_simple_async_result_set_error 
extern __typeof (g_simple_async_result_set_error) g_simple_async_result_set_error __attribute((alias("IA__g_simple_async_result_set_error"), visibility("default")));

#undef g_simple_async_result_set_error_va 
extern __typeof (g_simple_async_result_set_error_va) g_simple_async_result_set_error_va __attribute((alias("IA__g_simple_async_result_set_error_va"), visibility("default")));

#undef g_simple_async_result_is_valid 
extern __typeof (g_simple_async_result_is_valid) g_simple_async_result_is_valid __attribute((alias("IA__g_simple_async_result_is_valid"), visibility("default")));

#undef g_simple_async_report_error_in_idle 
extern __typeof (g_simple_async_report_error_in_idle) g_simple_async_report_error_in_idle __attribute((alias("IA__g_simple_async_report_error_in_idle"), visibility("default")));

#undef g_simple_async_report_gerror_in_idle 
extern __typeof (g_simple_async_report_gerror_in_idle) g_simple_async_report_gerror_in_idle __attribute((alias("IA__g_simple_async_report_gerror_in_idle"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_THEMED_ICON_H__)
#if IN_FILE(__G_THEMED_ICON_C__)
#undef g_themed_icon_get_type 
extern __typeof (g_themed_icon_get_type) g_themed_icon_get_type __attribute((alias("IA__g_themed_icon_get_type"), visibility("default")));

#undef g_themed_icon_new 
extern __typeof (g_themed_icon_new) g_themed_icon_new __attribute((alias("IA__g_themed_icon_new"), visibility("default")));

#undef g_themed_icon_new_with_default_fallbacks 
extern __typeof (g_themed_icon_new_with_default_fallbacks) g_themed_icon_new_with_default_fallbacks __attribute((alias("IA__g_themed_icon_new_with_default_fallbacks"), visibility("default")));

#undef g_themed_icon_new_from_names 
extern __typeof (g_themed_icon_new_from_names) g_themed_icon_new_from_names __attribute((alias("IA__g_themed_icon_new_from_names"), visibility("default")));

#undef g_themed_icon_get_names 
extern __typeof (g_themed_icon_get_names) g_themed_icon_get_names __attribute((alias("IA__g_themed_icon_get_names"), visibility("default")));

#undef g_themed_icon_prepend_name 
extern __typeof (g_themed_icon_prepend_name) g_themed_icon_prepend_name __attribute((alias("IA__g_themed_icon_prepend_name"), visibility("default")));

#undef g_themed_icon_append_name 
extern __typeof (g_themed_icon_append_name) g_themed_icon_append_name __attribute((alias("IA__g_themed_icon_append_name"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_UNIX_MOUNTS_H__)
#if IN_FILE(__G_UNIX_MOUNTS_C__)
#ifdef G_OS_UNIX
#undef g_unix_mount_free 
extern __typeof (g_unix_mount_free) g_unix_mount_free __attribute((alias("IA__g_unix_mount_free"), visibility("default")));

#undef g_unix_mount_point_free 
extern __typeof (g_unix_mount_point_free) g_unix_mount_point_free __attribute((alias("IA__g_unix_mount_point_free"), visibility("default")));

#undef g_unix_mount_compare 
extern __typeof (g_unix_mount_compare) g_unix_mount_compare __attribute((alias("IA__g_unix_mount_compare"), visibility("default")));

#undef g_unix_mount_get_mount_path 
extern __typeof (g_unix_mount_get_mount_path) g_unix_mount_get_mount_path __attribute((alias("IA__g_unix_mount_get_mount_path"), visibility("default")));

#undef g_unix_mount_get_device_path 
extern __typeof (g_unix_mount_get_device_path) g_unix_mount_get_device_path __attribute((alias("IA__g_unix_mount_get_device_path"), visibility("default")));

#undef g_unix_mount_get_fs_type 
extern __typeof (g_unix_mount_get_fs_type) g_unix_mount_get_fs_type __attribute((alias("IA__g_unix_mount_get_fs_type"), visibility("default")));

#undef g_unix_mount_is_readonly 
extern __typeof (g_unix_mount_is_readonly) g_unix_mount_is_readonly __attribute((alias("IA__g_unix_mount_is_readonly"), visibility("default")));

#undef g_unix_mount_is_system_internal 
extern __typeof (g_unix_mount_is_system_internal) g_unix_mount_is_system_internal __attribute((alias("IA__g_unix_mount_is_system_internal"), visibility("default")));

#undef g_unix_mount_guess_can_eject 
extern __typeof (g_unix_mount_guess_can_eject) g_unix_mount_guess_can_eject __attribute((alias("IA__g_unix_mount_guess_can_eject"), visibility("default")));

#undef g_unix_mount_guess_should_display 
extern __typeof (g_unix_mount_guess_should_display) g_unix_mount_guess_should_display __attribute((alias("IA__g_unix_mount_guess_should_display"), visibility("default")));

#undef g_unix_mount_guess_name 
extern __typeof (g_unix_mount_guess_name) g_unix_mount_guess_name __attribute((alias("IA__g_unix_mount_guess_name"), visibility("default")));

#undef g_unix_mount_guess_icon 
extern __typeof (g_unix_mount_guess_icon) g_unix_mount_guess_icon __attribute((alias("IA__g_unix_mount_guess_icon"), visibility("default")));

#undef g_unix_mount_point_compare 
extern __typeof (g_unix_mount_point_compare) g_unix_mount_point_compare __attribute((alias("IA__g_unix_mount_point_compare"), visibility("default")));

#undef g_unix_mount_point_get_mount_path 
extern __typeof (g_unix_mount_point_get_mount_path) g_unix_mount_point_get_mount_path __attribute((alias("IA__g_unix_mount_point_get_mount_path"), visibility("default")));

#undef g_unix_mount_point_get_device_path 
extern __typeof (g_unix_mount_point_get_device_path) g_unix_mount_point_get_device_path __attribute((alias("IA__g_unix_mount_point_get_device_path"), visibility("default")));

#undef g_unix_mount_point_get_fs_type 
extern __typeof (g_unix_mount_point_get_fs_type) g_unix_mount_point_get_fs_type __attribute((alias("IA__g_unix_mount_point_get_fs_type"), visibility("default")));

#undef g_unix_mount_point_is_readonly 
extern __typeof (g_unix_mount_point_is_readonly) g_unix_mount_point_is_readonly __attribute((alias("IA__g_unix_mount_point_is_readonly"), visibility("default")));

#undef g_unix_mount_point_is_user_mountable 
extern __typeof (g_unix_mount_point_is_user_mountable) g_unix_mount_point_is_user_mountable __attribute((alias("IA__g_unix_mount_point_is_user_mountable"), visibility("default")));

#undef g_unix_mount_point_is_loopback 
extern __typeof (g_unix_mount_point_is_loopback) g_unix_mount_point_is_loopback __attribute((alias("IA__g_unix_mount_point_is_loopback"), visibility("default")));

#undef g_unix_mount_point_guess_can_eject 
extern __typeof (g_unix_mount_point_guess_can_eject) g_unix_mount_point_guess_can_eject __attribute((alias("IA__g_unix_mount_point_guess_can_eject"), visibility("default")));

#undef g_unix_mount_point_guess_name 
extern __typeof (g_unix_mount_point_guess_name) g_unix_mount_point_guess_name __attribute((alias("IA__g_unix_mount_point_guess_name"), visibility("default")));

#undef g_unix_mount_point_guess_icon 
extern __typeof (g_unix_mount_point_guess_icon) g_unix_mount_point_guess_icon __attribute((alias("IA__g_unix_mount_point_guess_icon"), visibility("default")));

#undef g_unix_mount_points_get 
extern __typeof (g_unix_mount_points_get) g_unix_mount_points_get __attribute((alias("IA__g_unix_mount_points_get"), visibility("default")));

#undef g_unix_mounts_get 
extern __typeof (g_unix_mounts_get) g_unix_mounts_get __attribute((alias("IA__g_unix_mounts_get"), visibility("default")));

#undef g_unix_mount_at 
extern __typeof (g_unix_mount_at) g_unix_mount_at __attribute((alias("IA__g_unix_mount_at"), visibility("default")));

#undef g_unix_mounts_changed_since 
extern __typeof (g_unix_mounts_changed_since) g_unix_mounts_changed_since __attribute((alias("IA__g_unix_mounts_changed_since"), visibility("default")));

#undef g_unix_mount_points_changed_since 
extern __typeof (g_unix_mount_points_changed_since) g_unix_mount_points_changed_since __attribute((alias("IA__g_unix_mount_points_changed_since"), visibility("default")));

#undef g_unix_mount_monitor_get_type 
extern __typeof (g_unix_mount_monitor_get_type) g_unix_mount_monitor_get_type __attribute((alias("IA__g_unix_mount_monitor_get_type"), visibility("default")));

#undef g_unix_mount_monitor_new 
extern __typeof (g_unix_mount_monitor_new) g_unix_mount_monitor_new __attribute((alias("IA__g_unix_mount_monitor_new"), visibility("default")));

#undef g_unix_mount_monitor_set_rate_limit 
extern __typeof (g_unix_mount_monitor_set_rate_limit) g_unix_mount_monitor_set_rate_limit __attribute((alias("IA__g_unix_mount_monitor_set_rate_limit"), visibility("default")));

#undef g_unix_is_mount_path_system_internal 
extern __typeof (g_unix_is_mount_path_system_internal) g_unix_is_mount_path_system_internal __attribute((alias("IA__g_unix_is_mount_path_system_internal"), visibility("default")));

#endif /* G_OS_UNIX */
#endif
#endif
#if IN_HEADER(__G_UNIX_INPUT_STREAM_H__)
#if IN_FILE(__G_UNIX_INPUT_STREAM_C__)
#ifdef G_OS_UNIX
#undef g_unix_input_stream_get_type 
extern __typeof (g_unix_input_stream_get_type) g_unix_input_stream_get_type __attribute((alias("IA__g_unix_input_stream_get_type"), visibility("default")));

#undef g_unix_input_stream_new 
extern __typeof (g_unix_input_stream_new) g_unix_input_stream_new __attribute((alias("IA__g_unix_input_stream_new"), visibility("default")));

#undef g_unix_input_stream_set_close_fd 
extern __typeof (g_unix_input_stream_set_close_fd) g_unix_input_stream_set_close_fd __attribute((alias("IA__g_unix_input_stream_set_close_fd"), visibility("default")));

#undef g_unix_input_stream_get_close_fd 
extern __typeof (g_unix_input_stream_get_close_fd) g_unix_input_stream_get_close_fd __attribute((alias("IA__g_unix_input_stream_get_close_fd"), visibility("default")));

#undef g_unix_input_stream_get_fd 
extern __typeof (g_unix_input_stream_get_fd) g_unix_input_stream_get_fd __attribute((alias("IA__g_unix_input_stream_get_fd"), visibility("default")));

#endif /* G_OS_UNIX */
#endif
#endif
#if IN_HEADER(__G_UNIX_OUTPUT_STREAM_H__)
#if IN_FILE(__G_UNIX_OUTPUT_STREAM_C__)
#ifdef G_OS_UNIX
#undef g_unix_output_stream_get_type 
extern __typeof (g_unix_output_stream_get_type) g_unix_output_stream_get_type __attribute((alias("IA__g_unix_output_stream_get_type"), visibility("default")));

#undef g_unix_output_stream_new 
extern __typeof (g_unix_output_stream_new) g_unix_output_stream_new __attribute((alias("IA__g_unix_output_stream_new"), visibility("default")));

#undef g_unix_output_stream_set_close_fd 
extern __typeof (g_unix_output_stream_set_close_fd) g_unix_output_stream_set_close_fd __attribute((alias("IA__g_unix_output_stream_set_close_fd"), visibility("default")));

#undef g_unix_output_stream_get_close_fd 
extern __typeof (g_unix_output_stream_get_close_fd) g_unix_output_stream_get_close_fd __attribute((alias("IA__g_unix_output_stream_get_close_fd"), visibility("default")));

#undef g_unix_output_stream_get_fd 
extern __typeof (g_unix_output_stream_get_fd) g_unix_output_stream_get_fd __attribute((alias("IA__g_unix_output_stream_get_fd"), visibility("default")));

#endif /* G_OS_UNIX */
#endif
#endif
#if IN_HEADER(__G_MOUNT_H__)
#if IN_FILE(__G_MOUNT_C__)
#undef g_mount_get_type 
extern __typeof (g_mount_get_type) g_mount_get_type __attribute((alias("IA__g_mount_get_type"), visibility("default")));

#undef g_mount_get_root 
extern __typeof (g_mount_get_root) g_mount_get_root __attribute((alias("IA__g_mount_get_root"), visibility("default")));

#undef g_mount_get_name 
extern __typeof (g_mount_get_name) g_mount_get_name __attribute((alias("IA__g_mount_get_name"), visibility("default")));

#undef g_mount_get_icon 
extern __typeof (g_mount_get_icon) g_mount_get_icon __attribute((alias("IA__g_mount_get_icon"), visibility("default")));

#undef g_mount_get_uuid 
extern __typeof (g_mount_get_uuid) g_mount_get_uuid __attribute((alias("IA__g_mount_get_uuid"), visibility("default")));

#undef g_mount_get_volume 
extern __typeof (g_mount_get_volume) g_mount_get_volume __attribute((alias("IA__g_mount_get_volume"), visibility("default")));

#undef g_mount_get_drive 
extern __typeof (g_mount_get_drive) g_mount_get_drive __attribute((alias("IA__g_mount_get_drive"), visibility("default")));

#undef g_mount_can_unmount 
extern __typeof (g_mount_can_unmount) g_mount_can_unmount __attribute((alias("IA__g_mount_can_unmount"), visibility("default")));

#undef g_mount_can_eject 
extern __typeof (g_mount_can_eject) g_mount_can_eject __attribute((alias("IA__g_mount_can_eject"), visibility("default")));

#undef g_mount_unmount_with_operation 
extern __typeof (g_mount_unmount_with_operation) g_mount_unmount_with_operation __attribute((alias("IA__g_mount_unmount_with_operation"), visibility("default")));

#undef g_mount_unmount_with_operation_finish 
extern __typeof (g_mount_unmount_with_operation_finish) g_mount_unmount_with_operation_finish __attribute((alias("IA__g_mount_unmount_with_operation_finish"), visibility("default")));

#undef g_mount_eject_with_operation 
extern __typeof (g_mount_eject_with_operation) g_mount_eject_with_operation __attribute((alias("IA__g_mount_eject_with_operation"), visibility("default")));

#undef g_mount_eject_with_operation_finish 
extern __typeof (g_mount_eject_with_operation_finish) g_mount_eject_with_operation_finish __attribute((alias("IA__g_mount_eject_with_operation_finish"), visibility("default")));

#undef g_mount_get_default_location 
extern __typeof (g_mount_get_default_location) g_mount_get_default_location __attribute((alias("IA__g_mount_get_default_location"), visibility("default")));

#undef g_mount_remount 
extern __typeof (g_mount_remount) g_mount_remount __attribute((alias("IA__g_mount_remount"), visibility("default")));

#undef g_mount_remount_finish 
extern __typeof (g_mount_remount_finish) g_mount_remount_finish __attribute((alias("IA__g_mount_remount_finish"), visibility("default")));

#undef g_mount_guess_content_type 
extern __typeof (g_mount_guess_content_type) g_mount_guess_content_type __attribute((alias("IA__g_mount_guess_content_type"), visibility("default")));

#undef g_mount_guess_content_type_finish 
extern __typeof (g_mount_guess_content_type_finish) g_mount_guess_content_type_finish __attribute((alias("IA__g_mount_guess_content_type_finish"), visibility("default")));

#undef g_mount_guess_content_type_sync 
extern __typeof (g_mount_guess_content_type_sync) g_mount_guess_content_type_sync __attribute((alias("IA__g_mount_guess_content_type_sync"), visibility("default")));

#undef g_mount_is_shadowed 
extern __typeof (g_mount_is_shadowed) g_mount_is_shadowed __attribute((alias("IA__g_mount_is_shadowed"), visibility("default")));

#undef g_mount_shadow 
extern __typeof (g_mount_shadow) g_mount_shadow __attribute((alias("IA__g_mount_shadow"), visibility("default")));

#undef g_mount_unshadow 
extern __typeof (g_mount_unshadow) g_mount_unshadow __attribute((alias("IA__g_mount_unshadow"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_mount_unmount 
extern __typeof (g_mount_unmount) g_mount_unmount __attribute((alias("IA__g_mount_unmount"), visibility("default")));

#undef g_mount_unmount_finish 
extern __typeof (g_mount_unmount_finish) g_mount_unmount_finish __attribute((alias("IA__g_mount_unmount_finish"), visibility("default")));

#undef g_mount_eject 
extern __typeof (g_mount_eject) g_mount_eject __attribute((alias("IA__g_mount_eject"), visibility("default")));

#undef g_mount_eject_finish 
extern __typeof (g_mount_eject_finish) g_mount_eject_finish __attribute((alias("IA__g_mount_eject_finish"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_VOLUME_H__)
#if IN_FILE(__G_VOLUME_C__)
#undef g_volume_get_type 
extern __typeof (g_volume_get_type) g_volume_get_type __attribute((alias("IA__g_volume_get_type"), visibility("default")));

#undef g_volume_get_name 
extern __typeof (g_volume_get_name) g_volume_get_name __attribute((alias("IA__g_volume_get_name"), visibility("default")));

#undef g_volume_get_icon 
extern __typeof (g_volume_get_icon) g_volume_get_icon __attribute((alias("IA__g_volume_get_icon"), visibility("default")));

#undef g_volume_get_uuid 
extern __typeof (g_volume_get_uuid) g_volume_get_uuid __attribute((alias("IA__g_volume_get_uuid"), visibility("default")));

#undef g_volume_get_drive 
extern __typeof (g_volume_get_drive) g_volume_get_drive __attribute((alias("IA__g_volume_get_drive"), visibility("default")));

#undef g_volume_get_mount 
extern __typeof (g_volume_get_mount) g_volume_get_mount __attribute((alias("IA__g_volume_get_mount"), visibility("default")));

#undef g_volume_should_automount 
extern __typeof (g_volume_should_automount) g_volume_should_automount __attribute((alias("IA__g_volume_should_automount"), visibility("default")));

#undef g_volume_can_mount 
extern __typeof (g_volume_can_mount) g_volume_can_mount __attribute((alias("IA__g_volume_can_mount"), visibility("default")));

#undef g_volume_can_eject 
extern __typeof (g_volume_can_eject) g_volume_can_eject __attribute((alias("IA__g_volume_can_eject"), visibility("default")));

#undef g_volume_mount 
extern __typeof (g_volume_mount) g_volume_mount __attribute((alias("IA__g_volume_mount"), visibility("default")));

#undef g_volume_mount_finish 
extern __typeof (g_volume_mount_finish) g_volume_mount_finish __attribute((alias("IA__g_volume_mount_finish"), visibility("default")));

#undef g_volume_eject_with_operation 
extern __typeof (g_volume_eject_with_operation) g_volume_eject_with_operation __attribute((alias("IA__g_volume_eject_with_operation"), visibility("default")));

#undef g_volume_eject_with_operation_finish 
extern __typeof (g_volume_eject_with_operation_finish) g_volume_eject_with_operation_finish __attribute((alias("IA__g_volume_eject_with_operation_finish"), visibility("default")));

#undef g_volume_get_identifier 
extern __typeof (g_volume_get_identifier) g_volume_get_identifier __attribute((alias("IA__g_volume_get_identifier"), visibility("default")));

#undef g_volume_enumerate_identifiers 
extern __typeof (g_volume_enumerate_identifiers) g_volume_enumerate_identifiers __attribute((alias("IA__g_volume_enumerate_identifiers"), visibility("default")));

#undef g_volume_get_activation_root 
extern __typeof (g_volume_get_activation_root) g_volume_get_activation_root __attribute((alias("IA__g_volume_get_activation_root"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_volume_eject 
extern __typeof (g_volume_eject) g_volume_eject __attribute((alias("IA__g_volume_eject"), visibility("default")));

#undef g_volume_eject_finish 
extern __typeof (g_volume_eject_finish) g_volume_eject_finish __attribute((alias("IA__g_volume_eject_finish"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_VOLUME_MONITOR_H__)
#if IN_FILE(__G_VOLUME_MONITOR_C__)
#undef g_volume_monitor_get_type 
extern __typeof (g_volume_monitor_get_type) g_volume_monitor_get_type __attribute((alias("IA__g_volume_monitor_get_type"), visibility("default")));

#undef g_volume_monitor_get_connected_drives 
extern __typeof (g_volume_monitor_get_connected_drives) g_volume_monitor_get_connected_drives __attribute((alias("IA__g_volume_monitor_get_connected_drives"), visibility("default")));

#undef g_volume_monitor_get_volume_for_uuid 
extern __typeof (g_volume_monitor_get_volume_for_uuid) g_volume_monitor_get_volume_for_uuid __attribute((alias("IA__g_volume_monitor_get_volume_for_uuid"), visibility("default")));

#undef g_volume_monitor_get_volumes 
extern __typeof (g_volume_monitor_get_volumes) g_volume_monitor_get_volumes __attribute((alias("IA__g_volume_monitor_get_volumes"), visibility("default")));

#undef g_volume_monitor_get_mounts 
extern __typeof (g_volume_monitor_get_mounts) g_volume_monitor_get_mounts __attribute((alias("IA__g_volume_monitor_get_mounts"), visibility("default")));

#undef g_volume_monitor_get_mount_for_uuid 
extern __typeof (g_volume_monitor_get_mount_for_uuid) g_volume_monitor_get_mount_for_uuid __attribute((alias("IA__g_volume_monitor_get_mount_for_uuid"), visibility("default")));

#endif
#if IN_FILE(__G_UNION_VOLUME_MONITOR_C__)
#undef g_volume_monitor_get 
extern __typeof (g_volume_monitor_get) g_volume_monitor_get __attribute((alias("IA__g_volume_monitor_get"), visibility("default")));

#ifndef G_DISABLE_DEPRECATED
#undef g_volume_monitor_adopt_orphan_mount 
extern __typeof (g_volume_monitor_adopt_orphan_mount) g_volume_monitor_adopt_orphan_mount __attribute((alias("IA__g_volume_monitor_adopt_orphan_mount"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_NATIVE_VOLUME_MONITOR_H__)
#if IN_FILE(__G_NATIVE_VOLUME_MONITOR_C__)
#undef g_native_volume_monitor_get_type 
extern __typeof (g_native_volume_monitor_get_type) g_native_volume_monitor_get_type __attribute((alias("IA__g_native_volume_monitor_get_type"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_LOCAL_FILE_MONITOR_H__)
#if IN_FILE(__G_LOCAL_FILE_MONITOR_C__)
#ifdef G_OS_UNIX
#undef g_local_file_monitor_get_type 
extern __typeof (g_local_file_monitor_get_type) g_local_file_monitor_get_type __attribute((alias("IA__g_local_file_monitor_get_type"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_LOCAL_DIRECTORY_MONITOR_H__)
#if IN_FILE(__G_LOCAL_DIRECTORY_MONITOR_C__)
#ifdef G_OS_UNIX
#undef g_local_directory_monitor_get_type 
extern __typeof (g_local_directory_monitor_get_type) g_local_directory_monitor_get_type __attribute((alias("IA__g_local_directory_monitor_get_type"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__GIO_ENUM_TYPES_H__)
#if IN_FILE(__GIO_ENUM_TYPES_C__)
#undef g_mount_unmount_flags_get_type 
extern __typeof (g_mount_unmount_flags_get_type) g_mount_unmount_flags_get_type __attribute((alias("IA__g_mount_unmount_flags_get_type"), visibility("default")));

#undef g_app_info_create_flags_get_type 
extern __typeof (g_app_info_create_flags_get_type) g_app_info_create_flags_get_type __attribute((alias("IA__g_app_info_create_flags_get_type"), visibility("default")));

#undef g_converter_flags_get_type 
extern __typeof (g_converter_flags_get_type) g_converter_flags_get_type __attribute((alias("IA__g_converter_flags_get_type"), visibility("default")));

#undef g_converter_result_get_type 
extern __typeof (g_converter_result_get_type) g_converter_result_get_type __attribute((alias("IA__g_converter_result_get_type"), visibility("default")));

#undef g_data_stream_byte_order_get_type 
extern __typeof (g_data_stream_byte_order_get_type) g_data_stream_byte_order_get_type __attribute((alias("IA__g_data_stream_byte_order_get_type"), visibility("default")));

#undef g_data_stream_newline_type_get_type 
extern __typeof (g_data_stream_newline_type_get_type) g_data_stream_newline_type_get_type __attribute((alias("IA__g_data_stream_newline_type_get_type"), visibility("default")));

#undef g_file_attribute_info_flags_get_type 
extern __typeof (g_file_attribute_info_flags_get_type) g_file_attribute_info_flags_get_type __attribute((alias("IA__g_file_attribute_info_flags_get_type"), visibility("default")));

#undef g_file_attribute_status_get_type 
extern __typeof (g_file_attribute_status_get_type) g_file_attribute_status_get_type __attribute((alias("IA__g_file_attribute_status_get_type"), visibility("default")));

#undef g_file_attribute_type_get_type 
extern __typeof (g_file_attribute_type_get_type) g_file_attribute_type_get_type __attribute((alias("IA__g_file_attribute_type_get_type"), visibility("default")));

#undef g_file_copy_flags_get_type 
extern __typeof (g_file_copy_flags_get_type) g_file_copy_flags_get_type __attribute((alias("IA__g_file_copy_flags_get_type"), visibility("default")));

#undef g_file_create_flags_get_type 
extern __typeof (g_file_create_flags_get_type) g_file_create_flags_get_type __attribute((alias("IA__g_file_create_flags_get_type"), visibility("default")));

#undef g_file_monitor_event_get_type 
extern __typeof (g_file_monitor_event_get_type) g_file_monitor_event_get_type __attribute((alias("IA__g_file_monitor_event_get_type"), visibility("default")));

#undef g_file_monitor_flags_get_type 
extern __typeof (g_file_monitor_flags_get_type) g_file_monitor_flags_get_type __attribute((alias("IA__g_file_monitor_flags_get_type"), visibility("default")));

#undef g_file_query_info_flags_get_type 
extern __typeof (g_file_query_info_flags_get_type) g_file_query_info_flags_get_type __attribute((alias("IA__g_file_query_info_flags_get_type"), visibility("default")));

#undef g_file_type_get_type 
extern __typeof (g_file_type_get_type) g_file_type_get_type __attribute((alias("IA__g_file_type_get_type"), visibility("default")));

#undef g_filesystem_preview_type_get_type 
extern __typeof (g_filesystem_preview_type_get_type) g_filesystem_preview_type_get_type __attribute((alias("IA__g_filesystem_preview_type_get_type"), visibility("default")));

#undef g_io_error_enum_get_type 
extern __typeof (g_io_error_enum_get_type) g_io_error_enum_get_type __attribute((alias("IA__g_io_error_enum_get_type"), visibility("default")));

#undef g_mount_mount_flags_get_type 
extern __typeof (g_mount_mount_flags_get_type) g_mount_mount_flags_get_type __attribute((alias("IA__g_mount_mount_flags_get_type"), visibility("default")));

#undef g_mount_operation_result_get_type 
extern __typeof (g_mount_operation_result_get_type) g_mount_operation_result_get_type __attribute((alias("IA__g_mount_operation_result_get_type"), visibility("default")));

#undef g_drive_start_flags_get_type 
extern __typeof (g_drive_start_flags_get_type) g_drive_start_flags_get_type __attribute((alias("IA__g_drive_start_flags_get_type"), visibility("default")));

#undef g_drive_start_stop_type_get_type 
extern __typeof (g_drive_start_stop_type_get_type) g_drive_start_stop_type_get_type __attribute((alias("IA__g_drive_start_stop_type_get_type"), visibility("default")));

#undef g_output_stream_splice_flags_get_type 
extern __typeof (g_output_stream_splice_flags_get_type) g_output_stream_splice_flags_get_type __attribute((alias("IA__g_output_stream_splice_flags_get_type"), visibility("default")));

#undef g_ask_password_flags_get_type 
extern __typeof (g_ask_password_flags_get_type) g_ask_password_flags_get_type __attribute((alias("IA__g_ask_password_flags_get_type"), visibility("default")));

#undef g_password_save_get_type 
extern __typeof (g_password_save_get_type) g_password_save_get_type __attribute((alias("IA__g_password_save_get_type"), visibility("default")));

#undef g_emblem_origin_get_type 
extern __typeof (g_emblem_origin_get_type) g_emblem_origin_get_type __attribute((alias("IA__g_emblem_origin_get_type"), visibility("default")));

#undef g_socket_family_get_type 
extern __typeof (g_socket_family_get_type) g_socket_family_get_type __attribute((alias("IA__g_socket_family_get_type"), visibility("default")));

#undef g_socket_type_get_type 
extern __typeof (g_socket_type_get_type) g_socket_type_get_type __attribute((alias("IA__g_socket_type_get_type"), visibility("default")));

#undef g_socket_protocol_get_type 
extern __typeof (g_socket_protocol_get_type) g_socket_protocol_get_type __attribute((alias("IA__g_socket_protocol_get_type"), visibility("default")));

#undef g_socket_msg_flags_get_type 
extern __typeof (g_socket_msg_flags_get_type) g_socket_msg_flags_get_type __attribute((alias("IA__g_socket_msg_flags_get_type"), visibility("default")));

#undef g_resolver_error_get_type 
extern __typeof (g_resolver_error_get_type) g_resolver_error_get_type __attribute((alias("IA__g_resolver_error_get_type"), visibility("default")));

#undef g_zlib_compressor_format_get_type 
extern __typeof (g_zlib_compressor_format_get_type) g_zlib_compressor_format_get_type __attribute((alias("IA__g_zlib_compressor_format_get_type"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_EMBLEMED_ICON_H__)
#if IN_FILE(__G_EMBLEMED_ICON_C__)
#undef g_emblemed_icon_get_type 
extern __typeof (g_emblemed_icon_get_type) g_emblemed_icon_get_type __attribute((alias("IA__g_emblemed_icon_get_type"), visibility("default")));

#undef g_emblemed_icon_new 
extern __typeof (g_emblemed_icon_new) g_emblemed_icon_new __attribute((alias("IA__g_emblemed_icon_new"), visibility("default")));

#undef g_emblemed_icon_get_icon 
extern __typeof (g_emblemed_icon_get_icon) g_emblemed_icon_get_icon __attribute((alias("IA__g_emblemed_icon_get_icon"), visibility("default")));

#undef g_emblemed_icon_get_emblems 
extern __typeof (g_emblemed_icon_get_emblems) g_emblemed_icon_get_emblems __attribute((alias("IA__g_emblemed_icon_get_emblems"), visibility("default")));

#undef g_emblemed_icon_add_emblem 
extern __typeof (g_emblemed_icon_add_emblem) g_emblemed_icon_add_emblem __attribute((alias("IA__g_emblemed_icon_add_emblem"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_EMBLEM_H__)
#if IN_FILE(__G_EMBLEM_C__)
#undef g_emblem_get_type 
extern __typeof (g_emblem_get_type) g_emblem_get_type __attribute((alias("IA__g_emblem_get_type"), visibility("default")));

#undef g_emblem_new 
extern __typeof (g_emblem_new) g_emblem_new __attribute((alias("IA__g_emblem_new"), visibility("default")));

#undef g_emblem_new_with_origin 
extern __typeof (g_emblem_new_with_origin) g_emblem_new_with_origin __attribute((alias("IA__g_emblem_new_with_origin"), visibility("default")));

#undef g_emblem_get_icon 
extern __typeof (g_emblem_get_icon) g_emblem_get_icon __attribute((alias("IA__g_emblem_get_icon"), visibility("default")));

#undef g_emblem_get_origin 
extern __typeof (g_emblem_get_origin) g_emblem_get_origin __attribute((alias("IA__g_emblem_get_origin"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_INET_ADDRESS_H__)
#if IN_FILE(__G_INET_ADDRESS_C__)
#undef g_inet_address_new_from_string 
extern __typeof (g_inet_address_new_from_string) g_inet_address_new_from_string __attribute((alias("IA__g_inet_address_new_from_string"), visibility("default")));

#undef g_inet_address_new_from_bytes 
extern __typeof (g_inet_address_new_from_bytes) g_inet_address_new_from_bytes __attribute((alias("IA__g_inet_address_new_from_bytes"), visibility("default")));

#undef g_inet_address_new_any 
extern __typeof (g_inet_address_new_any) g_inet_address_new_any __attribute((alias("IA__g_inet_address_new_any"), visibility("default")));

#undef g_inet_address_new_loopback 
extern __typeof (g_inet_address_new_loopback) g_inet_address_new_loopback __attribute((alias("IA__g_inet_address_new_loopback"), visibility("default")));

#undef g_inet_address_get_family 
extern __typeof (g_inet_address_get_family) g_inet_address_get_family __attribute((alias("IA__g_inet_address_get_family"), visibility("default")));

#undef g_inet_address_get_type 
extern __typeof (g_inet_address_get_type) g_inet_address_get_type __attribute((alias("IA__g_inet_address_get_type"), visibility("default")));

#undef g_inet_address_get_is_any 
extern __typeof (g_inet_address_get_is_any) g_inet_address_get_is_any __attribute((alias("IA__g_inet_address_get_is_any"), visibility("default")));

#undef g_inet_address_get_is_link_local 
extern __typeof (g_inet_address_get_is_link_local) g_inet_address_get_is_link_local __attribute((alias("IA__g_inet_address_get_is_link_local"), visibility("default")));

#undef g_inet_address_get_is_loopback 
extern __typeof (g_inet_address_get_is_loopback) g_inet_address_get_is_loopback __attribute((alias("IA__g_inet_address_get_is_loopback"), visibility("default")));

#undef g_inet_address_get_is_mc_global 
extern __typeof (g_inet_address_get_is_mc_global) g_inet_address_get_is_mc_global __attribute((alias("IA__g_inet_address_get_is_mc_global"), visibility("default")));

#undef g_inet_address_get_is_mc_link_local 
extern __typeof (g_inet_address_get_is_mc_link_local) g_inet_address_get_is_mc_link_local __attribute((alias("IA__g_inet_address_get_is_mc_link_local"), visibility("default")));

#undef g_inet_address_get_is_mc_node_local 
extern __typeof (g_inet_address_get_is_mc_node_local) g_inet_address_get_is_mc_node_local __attribute((alias("IA__g_inet_address_get_is_mc_node_local"), visibility("default")));

#undef g_inet_address_get_is_mc_org_local 
extern __typeof (g_inet_address_get_is_mc_org_local) g_inet_address_get_is_mc_org_local __attribute((alias("IA__g_inet_address_get_is_mc_org_local"), visibility("default")));

#undef g_inet_address_get_is_mc_site_local 
extern __typeof (g_inet_address_get_is_mc_site_local) g_inet_address_get_is_mc_site_local __attribute((alias("IA__g_inet_address_get_is_mc_site_local"), visibility("default")));

#undef g_inet_address_get_is_multicast 
extern __typeof (g_inet_address_get_is_multicast) g_inet_address_get_is_multicast __attribute((alias("IA__g_inet_address_get_is_multicast"), visibility("default")));

#undef g_inet_address_get_is_site_local 
extern __typeof (g_inet_address_get_is_site_local) g_inet_address_get_is_site_local __attribute((alias("IA__g_inet_address_get_is_site_local"), visibility("default")));

#undef g_inet_address_to_bytes 
extern __typeof (g_inet_address_to_bytes) g_inet_address_to_bytes __attribute((alias("IA__g_inet_address_to_bytes"), visibility("default")));

#undef g_inet_address_get_native_size 
extern __typeof (g_inet_address_get_native_size) g_inet_address_get_native_size __attribute((alias("IA__g_inet_address_get_native_size"), visibility("default")));

#undef g_inet_address_to_string 
extern __typeof (g_inet_address_to_string) g_inet_address_to_string __attribute((alias("IA__g_inet_address_to_string"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_INET_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_INET_SOCKET_ADDRESS_C__)
#undef g_inet_socket_address_get_address 
extern __typeof (g_inet_socket_address_get_address) g_inet_socket_address_get_address __attribute((alias("IA__g_inet_socket_address_get_address"), visibility("default")));

#undef g_inet_socket_address_get_port 
extern __typeof (g_inet_socket_address_get_port) g_inet_socket_address_get_port __attribute((alias("IA__g_inet_socket_address_get_port"), visibility("default")));

#undef g_inet_socket_address_get_type 
extern __typeof (g_inet_socket_address_get_type) g_inet_socket_address_get_type __attribute((alias("IA__g_inet_socket_address_get_type"), visibility("default")));

#undef g_inet_socket_address_new 
extern __typeof (g_inet_socket_address_new) g_inet_socket_address_new __attribute((alias("IA__g_inet_socket_address_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_UNIX_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_UNIX_SOCKET_ADDRESS_C__)
#ifdef G_OS_UNIX
#undef g_unix_socket_address_get_type 
extern __typeof (g_unix_socket_address_get_type) g_unix_socket_address_get_type __attribute((alias("IA__g_unix_socket_address_get_type"), visibility("default")));

#undef g_unix_socket_address_new 
extern __typeof (g_unix_socket_address_new) g_unix_socket_address_new __attribute((alias("IA__g_unix_socket_address_new"), visibility("default")));

#undef g_unix_socket_address_new_abstract 
extern __typeof (g_unix_socket_address_new_abstract) g_unix_socket_address_new_abstract __attribute((alias("IA__g_unix_socket_address_new_abstract"), visibility("default")));

#undef g_unix_socket_address_abstract_names_supported 
extern __typeof (g_unix_socket_address_abstract_names_supported) g_unix_socket_address_abstract_names_supported __attribute((alias("IA__g_unix_socket_address_abstract_names_supported"), visibility("default")));

#undef g_unix_socket_address_get_is_abstract 
extern __typeof (g_unix_socket_address_get_is_abstract) g_unix_socket_address_get_is_abstract __attribute((alias("IA__g_unix_socket_address_get_is_abstract"), visibility("default")));

#undef g_unix_socket_address_get_path 
extern __typeof (g_unix_socket_address_get_path) g_unix_socket_address_get_path __attribute((alias("IA__g_unix_socket_address_get_path"), visibility("default")));

#undef g_unix_socket_address_get_path_len 
extern __typeof (g_unix_socket_address_get_path_len) g_unix_socket_address_get_path_len __attribute((alias("IA__g_unix_socket_address_get_path_len"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_SOCKET_ADDRESS_C__)
#undef g_socket_address_new_from_native 
extern __typeof (g_socket_address_new_from_native) g_socket_address_new_from_native __attribute((alias("IA__g_socket_address_new_from_native"), visibility("default")));

#undef g_socket_address_get_type 
extern __typeof (g_socket_address_get_type) g_socket_address_get_type __attribute((alias("IA__g_socket_address_get_type"), visibility("default")));

#undef g_socket_address_get_family 
extern __typeof (g_socket_address_get_family) g_socket_address_get_family __attribute((alias("IA__g_socket_address_get_family"), visibility("default")));

#undef g_socket_address_get_native_size 
extern __typeof (g_socket_address_get_native_size) g_socket_address_get_native_size __attribute((alias("IA__g_socket_address_get_native_size"), visibility("default")));

#undef g_socket_address_to_native 
extern __typeof (g_socket_address_to_native) g_socket_address_to_native __attribute((alias("IA__g_socket_address_to_native"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_RESOLVER_H__)
#if IN_FILE(__G_RESOLVER_C__)
#undef g_resolver_error_quark 
extern __typeof (g_resolver_error_quark) g_resolver_error_quark __attribute((alias("IA__g_resolver_error_quark"), visibility("default")));

#undef g_resolver_free_addresses 
extern __typeof (g_resolver_free_addresses) g_resolver_free_addresses __attribute((alias("IA__g_resolver_free_addresses"), visibility("default")));

#undef g_resolver_free_targets 
extern __typeof (g_resolver_free_targets) g_resolver_free_targets __attribute((alias("IA__g_resolver_free_targets"), visibility("default")));

#undef g_resolver_get_type 
extern __typeof (g_resolver_get_type) g_resolver_get_type __attribute((alias("IA__g_resolver_get_type"), visibility("default")));

#undef g_resolver_get_default 
extern __typeof (g_resolver_get_default) g_resolver_get_default __attribute((alias("IA__g_resolver_get_default"), visibility("default")));

#undef g_resolver_set_default 
extern __typeof (g_resolver_set_default) g_resolver_set_default __attribute((alias("IA__g_resolver_set_default"), visibility("default")));

#undef g_resolver_lookup_by_name 
extern __typeof (g_resolver_lookup_by_name) g_resolver_lookup_by_name __attribute((alias("IA__g_resolver_lookup_by_name"), visibility("default")));

#undef g_resolver_lookup_by_name_async 
extern __typeof (g_resolver_lookup_by_name_async) g_resolver_lookup_by_name_async __attribute((alias("IA__g_resolver_lookup_by_name_async"), visibility("default")));

#undef g_resolver_lookup_by_name_finish 
extern __typeof (g_resolver_lookup_by_name_finish) g_resolver_lookup_by_name_finish __attribute((alias("IA__g_resolver_lookup_by_name_finish"), visibility("default")));

#undef g_resolver_lookup_by_address 
extern __typeof (g_resolver_lookup_by_address) g_resolver_lookup_by_address __attribute((alias("IA__g_resolver_lookup_by_address"), visibility("default")));

#undef g_resolver_lookup_by_address_async 
extern __typeof (g_resolver_lookup_by_address_async) g_resolver_lookup_by_address_async __attribute((alias("IA__g_resolver_lookup_by_address_async"), visibility("default")));

#undef g_resolver_lookup_by_address_finish 
extern __typeof (g_resolver_lookup_by_address_finish) g_resolver_lookup_by_address_finish __attribute((alias("IA__g_resolver_lookup_by_address_finish"), visibility("default")));

#undef g_resolver_lookup_service 
extern __typeof (g_resolver_lookup_service) g_resolver_lookup_service __attribute((alias("IA__g_resolver_lookup_service"), visibility("default")));

#undef g_resolver_lookup_service_async 
extern __typeof (g_resolver_lookup_service_async) g_resolver_lookup_service_async __attribute((alias("IA__g_resolver_lookup_service_async"), visibility("default")));

#undef g_resolver_lookup_service_finish 
extern __typeof (g_resolver_lookup_service_finish) g_resolver_lookup_service_finish __attribute((alias("IA__g_resolver_lookup_service_finish"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_THREADED_RESOLVER_H__)
#if IN_FILE(__G_THREADED_RESOLVER_C__)
#undef g_threaded_resolver_get_type 
extern __typeof (g_threaded_resolver_get_type) g_threaded_resolver_get_type __attribute((alias("IA__g_threaded_resolver_get_type"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_UNIX_RESOLVER_H__)
#if IN_FILE(__G_UNIX_RESOLVER_C__)
#ifdef G_OS_UNIX
#undef g_unix_resolver_get_type 
extern __typeof (g_unix_resolver_get_type) g_unix_resolver_get_type __attribute((alias("IA__g_unix_resolver_get_type"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_WIN32_RESOLVER_H__)
#if IN_FILE(__G_WIN32_RESOLVER_C__)
#ifdef G_OS_WIN32
#undef g_win32_resolver_get_type 
extern __typeof (g_win32_resolver_get_type) g_win32_resolver_get_type __attribute((alias("IA__g_win32_resolver_get_type"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_SRV_TARGET_H__)
#if IN_FILE(__G_SRV_TARGET_C__)
#undef g_srv_target_get_type 
extern __typeof (g_srv_target_get_type) g_srv_target_get_type __attribute((alias("IA__g_srv_target_get_type"), visibility("default")));

#undef g_srv_target_new 
extern __typeof (g_srv_target_new) g_srv_target_new __attribute((alias("IA__g_srv_target_new"), visibility("default")));

#undef g_srv_target_copy 
extern __typeof (g_srv_target_copy) g_srv_target_copy __attribute((alias("IA__g_srv_target_copy"), visibility("default")));

#undef g_srv_target_free 
extern __typeof (g_srv_target_free) g_srv_target_free __attribute((alias("IA__g_srv_target_free"), visibility("default")));

#undef g_srv_target_get_hostname 
extern __typeof (g_srv_target_get_hostname) g_srv_target_get_hostname __attribute((alias("IA__g_srv_target_get_hostname"), visibility("default")));

#undef g_srv_target_get_port 
extern __typeof (g_srv_target_get_port) g_srv_target_get_port __attribute((alias("IA__g_srv_target_get_port"), visibility("default")));

#undef g_srv_target_get_priority 
extern __typeof (g_srv_target_get_priority) g_srv_target_get_priority __attribute((alias("IA__g_srv_target_get_priority"), visibility("default")));

#undef g_srv_target_get_weight 
extern __typeof (g_srv_target_get_weight) g_srv_target_get_weight __attribute((alias("IA__g_srv_target_get_weight"), visibility("default")));

#undef g_srv_target_list_sort 
extern __typeof (g_srv_target_list_sort) g_srv_target_list_sort __attribute((alias("IA__g_srv_target_list_sort"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_NETWORK_ADDRESS_H__)
#if IN_FILE(__G_NETWORK_ADDRESS_C__)
#undef g_network_address_get_type 
extern __typeof (g_network_address_get_type) g_network_address_get_type __attribute((alias("IA__g_network_address_get_type"), visibility("default")));

#undef g_network_address_get_hostname 
extern __typeof (g_network_address_get_hostname) g_network_address_get_hostname __attribute((alias("IA__g_network_address_get_hostname"), visibility("default")));

#undef g_network_address_get_port 
extern __typeof (g_network_address_get_port) g_network_address_get_port __attribute((alias("IA__g_network_address_get_port"), visibility("default")));

#undef g_network_address_new 
extern __typeof (g_network_address_new) g_network_address_new __attribute((alias("IA__g_network_address_new"), visibility("default")));

#undef g_network_address_parse 
extern __typeof (g_network_address_parse) g_network_address_parse __attribute((alias("IA__g_network_address_parse"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_NETWORK_SERVICE_H__)
#if IN_FILE(__G_NETWORK_SERVICE_C__)
#undef g_network_service_get_type 
extern __typeof (g_network_service_get_type) g_network_service_get_type __attribute((alias("IA__g_network_service_get_type"), visibility("default")));

#undef g_network_service_get_service 
extern __typeof (g_network_service_get_service) g_network_service_get_service __attribute((alias("IA__g_network_service_get_service"), visibility("default")));

#undef g_network_service_get_protocol 
extern __typeof (g_network_service_get_protocol) g_network_service_get_protocol __attribute((alias("IA__g_network_service_get_protocol"), visibility("default")));

#undef g_network_service_get_domain 
extern __typeof (g_network_service_get_domain) g_network_service_get_domain __attribute((alias("IA__g_network_service_get_domain"), visibility("default")));

#undef g_network_service_new 
extern __typeof (g_network_service_new) g_network_service_new __attribute((alias("IA__g_network_service_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONNECTABLE_H__)
#if IN_FILE(__G_SOCKET_CONNECTABLE_C__)
#undef g_socket_connectable_enumerate 
extern __typeof (g_socket_connectable_enumerate) g_socket_connectable_enumerate __attribute((alias("IA__g_socket_connectable_enumerate"), visibility("default")));

#undef g_socket_connectable_get_type 
extern __typeof (g_socket_connectable_get_type) g_socket_connectable_get_type __attribute((alias("IA__g_socket_connectable_get_type"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_ADDRESS_ENUMERATOR_H__)
#if IN_FILE(__G_SOCKET_ADDRESS_ENUMERATOR_C__)
#undef g_socket_address_enumerator_get_type 
extern __typeof (g_socket_address_enumerator_get_type) g_socket_address_enumerator_get_type __attribute((alias("IA__g_socket_address_enumerator_get_type"), visibility("default")));

#undef g_socket_address_enumerator_next 
extern __typeof (g_socket_address_enumerator_next) g_socket_address_enumerator_next __attribute((alias("IA__g_socket_address_enumerator_next"), visibility("default")));

#undef g_socket_address_enumerator_next_async 
extern __typeof (g_socket_address_enumerator_next_async) g_socket_address_enumerator_next_async __attribute((alias("IA__g_socket_address_enumerator_next_async"), visibility("default")));

#undef g_socket_address_enumerator_next_finish 
extern __typeof (g_socket_address_enumerator_next_finish) g_socket_address_enumerator_next_finish __attribute((alias("IA__g_socket_address_enumerator_next_finish"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_ASYNC_INITABLE_H__)
#if IN_FILE(__G_ASYNC_INITABLE_C__)
#undef g_async_initable_get_type 
extern __typeof (g_async_initable_get_type) g_async_initable_get_type __attribute((alias("IA__g_async_initable_get_type"), visibility("default")));

#undef g_async_initable_init_async 
extern __typeof (g_async_initable_init_async) g_async_initable_init_async __attribute((alias("IA__g_async_initable_init_async"), visibility("default")));

#undef g_async_initable_init_finish 
extern __typeof (g_async_initable_init_finish) g_async_initable_init_finish __attribute((alias("IA__g_async_initable_init_finish"), visibility("default")));

#undef g_async_initable_new_async 
extern __typeof (g_async_initable_new_async) g_async_initable_new_async __attribute((alias("IA__g_async_initable_new_async"), visibility("default")));

#undef g_async_initable_new_finish 
extern __typeof (g_async_initable_new_finish) g_async_initable_new_finish __attribute((alias("IA__g_async_initable_new_finish"), visibility("default")));

#undef g_async_initable_new_valist_async 
extern __typeof (g_async_initable_new_valist_async) g_async_initable_new_valist_async __attribute((alias("IA__g_async_initable_new_valist_async"), visibility("default")));

#undef g_async_initable_newv_async 
extern __typeof (g_async_initable_newv_async) g_async_initable_newv_async __attribute((alias("IA__g_async_initable_newv_async"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_INITABLE_H__)
#if IN_FILE(__G_INITABLE_C__)
#undef g_initable_get_type 
extern __typeof (g_initable_get_type) g_initable_get_type __attribute((alias("IA__g_initable_get_type"), visibility("default")));

#undef g_initable_init 
extern __typeof (g_initable_init) g_initable_init __attribute((alias("IA__g_initable_init"), visibility("default")));

#undef g_initable_new 
extern __typeof (g_initable_new) g_initable_new __attribute((alias("IA__g_initable_new"), visibility("default")));

#undef g_initable_newv 
extern __typeof (g_initable_newv) g_initable_newv __attribute((alias("IA__g_initable_newv"), visibility("default")));

#undef g_initable_new_valist 
extern __typeof (g_initable_new_valist) g_initable_new_valist __attribute((alias("IA__g_initable_new_valist"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_H__)
#if IN_FILE(__G_SOCKET_C__)
#undef g_socket_get_type 
extern __typeof (g_socket_get_type) g_socket_get_type __attribute((alias("IA__g_socket_get_type"), visibility("default")));

#undef g_socket_accept 
extern __typeof (g_socket_accept) g_socket_accept __attribute((alias("IA__g_socket_accept"), visibility("default")));

#undef g_socket_bind 
extern __typeof (g_socket_bind) g_socket_bind __attribute((alias("IA__g_socket_bind"), visibility("default")));

#undef g_socket_check_connect_result 
extern __typeof (g_socket_check_connect_result) g_socket_check_connect_result __attribute((alias("IA__g_socket_check_connect_result"), visibility("default")));

#undef g_socket_close 
extern __typeof (g_socket_close) g_socket_close __attribute((alias("IA__g_socket_close"), visibility("default")));

#undef g_socket_shutdown 
extern __typeof (g_socket_shutdown) g_socket_shutdown __attribute((alias("IA__g_socket_shutdown"), visibility("default")));

#undef g_socket_condition_check 
extern __typeof (g_socket_condition_check) g_socket_condition_check __attribute((alias("IA__g_socket_condition_check"), visibility("default")));

#undef g_socket_condition_wait 
extern __typeof (g_socket_condition_wait) g_socket_condition_wait __attribute((alias("IA__g_socket_condition_wait"), visibility("default")));

#undef g_socket_connect 
extern __typeof (g_socket_connect) g_socket_connect __attribute((alias("IA__g_socket_connect"), visibility("default")));

#undef g_socket_create_source 
extern __typeof (g_socket_create_source) g_socket_create_source __attribute((alias("IA__g_socket_create_source"), visibility("default")));

#undef g_socket_get_blocking 
extern __typeof (g_socket_get_blocking) g_socket_get_blocking __attribute((alias("IA__g_socket_get_blocking"), visibility("default")));

#undef g_socket_get_family 
extern __typeof (g_socket_get_family) g_socket_get_family __attribute((alias("IA__g_socket_get_family"), visibility("default")));

#undef g_socket_get_fd 
extern __typeof (g_socket_get_fd) g_socket_get_fd __attribute((alias("IA__g_socket_get_fd"), visibility("default")));

#undef g_socket_get_keepalive 
extern __typeof (g_socket_get_keepalive) g_socket_get_keepalive __attribute((alias("IA__g_socket_get_keepalive"), visibility("default")));

#undef g_socket_get_listen_backlog 
extern __typeof (g_socket_get_listen_backlog) g_socket_get_listen_backlog __attribute((alias("IA__g_socket_get_listen_backlog"), visibility("default")));

#undef g_socket_get_local_address 
extern __typeof (g_socket_get_local_address) g_socket_get_local_address __attribute((alias("IA__g_socket_get_local_address"), visibility("default")));

#undef g_socket_get_protocol 
extern __typeof (g_socket_get_protocol) g_socket_get_protocol __attribute((alias("IA__g_socket_get_protocol"), visibility("default")));

#undef g_socket_get_remote_address 
extern __typeof (g_socket_get_remote_address) g_socket_get_remote_address __attribute((alias("IA__g_socket_get_remote_address"), visibility("default")));

#undef g_socket_get_socket_type 
extern __typeof (g_socket_get_socket_type) g_socket_get_socket_type __attribute((alias("IA__g_socket_get_socket_type"), visibility("default")));

#undef g_socket_is_closed 
extern __typeof (g_socket_is_closed) g_socket_is_closed __attribute((alias("IA__g_socket_is_closed"), visibility("default")));

#undef g_socket_is_connected 
extern __typeof (g_socket_is_connected) g_socket_is_connected __attribute((alias("IA__g_socket_is_connected"), visibility("default")));

#undef g_socket_listen 
extern __typeof (g_socket_listen) g_socket_listen __attribute((alias("IA__g_socket_listen"), visibility("default")));

#undef g_socket_new 
extern __typeof (g_socket_new) g_socket_new __attribute((alias("IA__g_socket_new"), visibility("default")));

#undef g_socket_new_from_fd 
extern __typeof (g_socket_new_from_fd) g_socket_new_from_fd __attribute((alias("IA__g_socket_new_from_fd"), visibility("default")));

#undef g_socket_receive 
extern __typeof (g_socket_receive) g_socket_receive __attribute((alias("IA__g_socket_receive"), visibility("default")));

#undef g_socket_receive_from 
extern __typeof (g_socket_receive_from) g_socket_receive_from __attribute((alias("IA__g_socket_receive_from"), visibility("default")));

#undef g_socket_receive_message 
extern __typeof (g_socket_receive_message) g_socket_receive_message __attribute((alias("IA__g_socket_receive_message"), visibility("default")));

#undef g_socket_send 
extern __typeof (g_socket_send) g_socket_send __attribute((alias("IA__g_socket_send"), visibility("default")));

#undef g_socket_send_message 
extern __typeof (g_socket_send_message) g_socket_send_message __attribute((alias("IA__g_socket_send_message"), visibility("default")));

#undef g_socket_send_to 
extern __typeof (g_socket_send_to) g_socket_send_to __attribute((alias("IA__g_socket_send_to"), visibility("default")));

#undef g_socket_set_blocking 
extern __typeof (g_socket_set_blocking) g_socket_set_blocking __attribute((alias("IA__g_socket_set_blocking"), visibility("default")));

#undef g_socket_set_keepalive 
extern __typeof (g_socket_set_keepalive) g_socket_set_keepalive __attribute((alias("IA__g_socket_set_keepalive"), visibility("default")));

#undef g_socket_set_listen_backlog 
extern __typeof (g_socket_set_listen_backlog) g_socket_set_listen_backlog __attribute((alias("IA__g_socket_set_listen_backlog"), visibility("default")));

#undef g_socket_speaks_ipv4 
extern __typeof (g_socket_speaks_ipv4) g_socket_speaks_ipv4 __attribute((alias("IA__g_socket_speaks_ipv4"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONTROL_MESSAGE_H__)
#if IN_FILE(__G_SOCKET_CONTROL_MESSAGE_C__)
#undef g_socket_control_message_get_type 
extern __typeof (g_socket_control_message_get_type) g_socket_control_message_get_type __attribute((alias("IA__g_socket_control_message_get_type"), visibility("default")));

#undef g_socket_control_message_deserialize 
extern __typeof (g_socket_control_message_deserialize) g_socket_control_message_deserialize __attribute((alias("IA__g_socket_control_message_deserialize"), visibility("default")));

#undef g_socket_control_message_get_level 
extern __typeof (g_socket_control_message_get_level) g_socket_control_message_get_level __attribute((alias("IA__g_socket_control_message_get_level"), visibility("default")));

#undef g_socket_control_message_get_msg_type 
extern __typeof (g_socket_control_message_get_msg_type) g_socket_control_message_get_msg_type __attribute((alias("IA__g_socket_control_message_get_msg_type"), visibility("default")));

#undef g_socket_control_message_get_size 
extern __typeof (g_socket_control_message_get_size) g_socket_control_message_get_size __attribute((alias("IA__g_socket_control_message_get_size"), visibility("default")));

#undef g_socket_control_message_serialize 
extern __typeof (g_socket_control_message_serialize) g_socket_control_message_serialize __attribute((alias("IA__g_socket_control_message_serialize"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_CLIENT_H__)
#if IN_FILE(__G_SOCKET_CLIENT_C__)
#undef g_socket_client_get_type 
extern __typeof (g_socket_client_get_type) g_socket_client_get_type __attribute((alias("IA__g_socket_client_get_type"), visibility("default")));

#undef g_socket_client_connect 
extern __typeof (g_socket_client_connect) g_socket_client_connect __attribute((alias("IA__g_socket_client_connect"), visibility("default")));

#undef g_socket_client_connect_async 
extern __typeof (g_socket_client_connect_async) g_socket_client_connect_async __attribute((alias("IA__g_socket_client_connect_async"), visibility("default")));

#undef g_socket_client_connect_finish 
extern __typeof (g_socket_client_connect_finish) g_socket_client_connect_finish __attribute((alias("IA__g_socket_client_connect_finish"), visibility("default")));

#undef g_socket_client_connect_to_host 
extern __typeof (g_socket_client_connect_to_host) g_socket_client_connect_to_host __attribute((alias("IA__g_socket_client_connect_to_host"), visibility("default")));

#undef g_socket_client_connect_to_host_async 
extern __typeof (g_socket_client_connect_to_host_async) g_socket_client_connect_to_host_async __attribute((alias("IA__g_socket_client_connect_to_host_async"), visibility("default")));

#undef g_socket_client_connect_to_host_finish 
extern __typeof (g_socket_client_connect_to_host_finish) g_socket_client_connect_to_host_finish __attribute((alias("IA__g_socket_client_connect_to_host_finish"), visibility("default")));

#undef g_socket_client_connect_to_service 
extern __typeof (g_socket_client_connect_to_service) g_socket_client_connect_to_service __attribute((alias("IA__g_socket_client_connect_to_service"), visibility("default")));

#undef g_socket_client_connect_to_service_async 
extern __typeof (g_socket_client_connect_to_service_async) g_socket_client_connect_to_service_async __attribute((alias("IA__g_socket_client_connect_to_service_async"), visibility("default")));

#undef g_socket_client_connect_to_service_finish 
extern __typeof (g_socket_client_connect_to_service_finish) g_socket_client_connect_to_service_finish __attribute((alias("IA__g_socket_client_connect_to_service_finish"), visibility("default")));

#undef g_socket_client_get_family 
extern __typeof (g_socket_client_get_family) g_socket_client_get_family __attribute((alias("IA__g_socket_client_get_family"), visibility("default")));

#undef g_socket_client_get_local_address 
extern __typeof (g_socket_client_get_local_address) g_socket_client_get_local_address __attribute((alias("IA__g_socket_client_get_local_address"), visibility("default")));

#undef g_socket_client_get_protocol 
extern __typeof (g_socket_client_get_protocol) g_socket_client_get_protocol __attribute((alias("IA__g_socket_client_get_protocol"), visibility("default")));

#undef g_socket_client_get_socket_type 
extern __typeof (g_socket_client_get_socket_type) g_socket_client_get_socket_type __attribute((alias("IA__g_socket_client_get_socket_type"), visibility("default")));

#undef g_socket_client_new 
extern __typeof (g_socket_client_new) g_socket_client_new __attribute((alias("IA__g_socket_client_new"), visibility("default")));

#undef g_socket_client_set_family 
extern __typeof (g_socket_client_set_family) g_socket_client_set_family __attribute((alias("IA__g_socket_client_set_family"), visibility("default")));

#undef g_socket_client_set_local_address 
extern __typeof (g_socket_client_set_local_address) g_socket_client_set_local_address __attribute((alias("IA__g_socket_client_set_local_address"), visibility("default")));

#undef g_socket_client_set_protocol 
extern __typeof (g_socket_client_set_protocol) g_socket_client_set_protocol __attribute((alias("IA__g_socket_client_set_protocol"), visibility("default")));

#undef g_socket_client_set_socket_type 
extern __typeof (g_socket_client_set_socket_type) g_socket_client_set_socket_type __attribute((alias("IA__g_socket_client_set_socket_type"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONNECTION_H__)
#if IN_FILE(__G_SOCKET_CONNECTION_C__)
#undef g_socket_connection_get_type 
extern __typeof (g_socket_connection_get_type) g_socket_connection_get_type __attribute((alias("IA__g_socket_connection_get_type"), visibility("default")));

#undef g_socket_connection_factory_create_connection 
extern __typeof (g_socket_connection_factory_create_connection) g_socket_connection_factory_create_connection __attribute((alias("IA__g_socket_connection_factory_create_connection"), visibility("default")));

#undef g_socket_connection_factory_lookup_type 
extern __typeof (g_socket_connection_factory_lookup_type) g_socket_connection_factory_lookup_type __attribute((alias("IA__g_socket_connection_factory_lookup_type"), visibility("default")));

#undef g_socket_connection_factory_register_type 
extern __typeof (g_socket_connection_factory_register_type) g_socket_connection_factory_register_type __attribute((alias("IA__g_socket_connection_factory_register_type"), visibility("default")));

#undef g_socket_connection_get_local_address 
extern __typeof (g_socket_connection_get_local_address) g_socket_connection_get_local_address __attribute((alias("IA__g_socket_connection_get_local_address"), visibility("default")));

#undef g_socket_connection_get_remote_address 
extern __typeof (g_socket_connection_get_remote_address) g_socket_connection_get_remote_address __attribute((alias("IA__g_socket_connection_get_remote_address"), visibility("default")));

#undef g_socket_connection_get_socket 
extern __typeof (g_socket_connection_get_socket) g_socket_connection_get_socket __attribute((alias("IA__g_socket_connection_get_socket"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_LISTENER_H__)
#if IN_FILE(__G_SOCKET_LISTENER_C__)
#undef g_socket_listener_get_type 
extern __typeof (g_socket_listener_get_type) g_socket_listener_get_type __attribute((alias("IA__g_socket_listener_get_type"), visibility("default")));

#undef g_socket_listener_accept 
extern __typeof (g_socket_listener_accept) g_socket_listener_accept __attribute((alias("IA__g_socket_listener_accept"), visibility("default")));

#undef g_socket_listener_accept_async 
extern __typeof (g_socket_listener_accept_async) g_socket_listener_accept_async __attribute((alias("IA__g_socket_listener_accept_async"), visibility("default")));

#undef g_socket_listener_accept_finish 
extern __typeof (g_socket_listener_accept_finish) g_socket_listener_accept_finish __attribute((alias("IA__g_socket_listener_accept_finish"), visibility("default")));

#undef g_socket_listener_accept_socket 
extern __typeof (g_socket_listener_accept_socket) g_socket_listener_accept_socket __attribute((alias("IA__g_socket_listener_accept_socket"), visibility("default")));

#undef g_socket_listener_accept_socket_async 
extern __typeof (g_socket_listener_accept_socket_async) g_socket_listener_accept_socket_async __attribute((alias("IA__g_socket_listener_accept_socket_async"), visibility("default")));

#undef g_socket_listener_accept_socket_finish 
extern __typeof (g_socket_listener_accept_socket_finish) g_socket_listener_accept_socket_finish __attribute((alias("IA__g_socket_listener_accept_socket_finish"), visibility("default")));

#undef g_socket_listener_add_address 
extern __typeof (g_socket_listener_add_address) g_socket_listener_add_address __attribute((alias("IA__g_socket_listener_add_address"), visibility("default")));

#undef g_socket_listener_add_inet_port 
extern __typeof (g_socket_listener_add_inet_port) g_socket_listener_add_inet_port __attribute((alias("IA__g_socket_listener_add_inet_port"), visibility("default")));

#undef g_socket_listener_add_any_inet_port 
extern __typeof (g_socket_listener_add_any_inet_port) g_socket_listener_add_any_inet_port __attribute((alias("IA__g_socket_listener_add_any_inet_port"), visibility("default")));

#undef g_socket_listener_add_socket 
extern __typeof (g_socket_listener_add_socket) g_socket_listener_add_socket __attribute((alias("IA__g_socket_listener_add_socket"), visibility("default")));

#undef g_socket_listener_close 
extern __typeof (g_socket_listener_close) g_socket_listener_close __attribute((alias("IA__g_socket_listener_close"), visibility("default")));

#undef g_socket_listener_new 
extern __typeof (g_socket_listener_new) g_socket_listener_new __attribute((alias("IA__g_socket_listener_new"), visibility("default")));

#undef g_socket_listener_set_backlog 
extern __typeof (g_socket_listener_set_backlog) g_socket_listener_set_backlog __attribute((alias("IA__g_socket_listener_set_backlog"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_SOCKET_SERVICE_H__)
#if IN_FILE(__G_SOCKET_SERVICE_C__)
#undef g_socket_service_get_type 
extern __typeof (g_socket_service_get_type) g_socket_service_get_type __attribute((alias("IA__g_socket_service_get_type"), visibility("default")));

#undef g_socket_service_is_active 
extern __typeof (g_socket_service_is_active) g_socket_service_is_active __attribute((alias("IA__g_socket_service_is_active"), visibility("default")));

#undef g_socket_service_new 
extern __typeof (g_socket_service_new) g_socket_service_new __attribute((alias("IA__g_socket_service_new"), visibility("default")));

#undef g_socket_service_start 
extern __typeof (g_socket_service_start) g_socket_service_start __attribute((alias("IA__g_socket_service_start"), visibility("default")));

#undef g_socket_service_stop 
extern __typeof (g_socket_service_stop) g_socket_service_stop __attribute((alias("IA__g_socket_service_stop"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_THREADED_SOCKET_SERVICE_H__)
#if IN_FILE(__G_THREADED_SOCKET_SERVICE_C__)
#undef g_threaded_socket_service_get_type 
extern __typeof (g_threaded_socket_service_get_type) g_threaded_socket_service_get_type __attribute((alias("IA__g_threaded_socket_service_get_type"), visibility("default")));

#undef g_threaded_socket_service_new 
extern __typeof (g_threaded_socket_service_new) g_threaded_socket_service_new __attribute((alias("IA__g_threaded_socket_service_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_TCP_CONNECTION_H__)
#if IN_FILE(__G_TCP_CONNECTION_C__)
#undef g_tcp_connection_get_type 
extern __typeof (g_tcp_connection_get_type) g_tcp_connection_get_type __attribute((alias("IA__g_tcp_connection_get_type"), visibility("default")));

#undef g_tcp_connection_set_graceful_disconnect 
extern __typeof (g_tcp_connection_set_graceful_disconnect) g_tcp_connection_set_graceful_disconnect __attribute((alias("IA__g_tcp_connection_set_graceful_disconnect"), visibility("default")));

#undef g_tcp_connection_get_graceful_disconnect 
extern __typeof (g_tcp_connection_get_graceful_disconnect) g_tcp_connection_get_graceful_disconnect __attribute((alias("IA__g_tcp_connection_get_graceful_disconnect"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_UNIX_CONNECTION_H__)
#if IN_FILE(__G_UNIX_CONNECTION_C__)
#ifndef G_OS_WIN32
#undef g_unix_connection_get_type 
extern __typeof (g_unix_connection_get_type) g_unix_connection_get_type __attribute((alias("IA__g_unix_connection_get_type"), visibility("default")));

#undef g_unix_connection_receive_fd 
extern __typeof (g_unix_connection_receive_fd) g_unix_connection_receive_fd __attribute((alias("IA__g_unix_connection_receive_fd"), visibility("default")));

#undef g_unix_connection_send_fd 
extern __typeof (g_unix_connection_send_fd) g_unix_connection_send_fd __attribute((alias("IA__g_unix_connection_send_fd"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_UNIX_FD_MESSAGE_H__)
#if IN_FILE(__G_UNIX_FD_MESSAGE_C__)
#ifndef G_OS_WIN32
#undef g_unix_fd_message_get_type 
extern __typeof (g_unix_fd_message_get_type) g_unix_fd_message_get_type __attribute((alias("IA__g_unix_fd_message_get_type"), visibility("default")));

#undef g_unix_fd_message_append_fd 
extern __typeof (g_unix_fd_message_append_fd) g_unix_fd_message_append_fd __attribute((alias("IA__g_unix_fd_message_append_fd"), visibility("default")));

#undef g_unix_fd_message_new 
extern __typeof (g_unix_fd_message_new) g_unix_fd_message_new __attribute((alias("IA__g_unix_fd_message_new"), visibility("default")));

#undef g_unix_fd_message_steal_fds 
extern __typeof (g_unix_fd_message_steal_fds) g_unix_fd_message_steal_fds __attribute((alias("IA__g_unix_fd_message_steal_fds"), visibility("default")));

#undef g_unix_fd_message_get_fd_list 
extern __typeof (g_unix_fd_message_get_fd_list) g_unix_fd_message_get_fd_list __attribute((alias("IA__g_unix_fd_message_get_fd_list"), visibility("default")));

#undef g_unix_fd_message_new_with_fd_list 
extern __typeof (g_unix_fd_message_new_with_fd_list) g_unix_fd_message_new_with_fd_list __attribute((alias("IA__g_unix_fd_message_new_with_fd_list"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_UNIX_FD_LIST_H__)
#if IN_FILE(__G_UNIX_FD_LIST_C__)
#ifndef G_OS_WIN32
#undef g_unix_fd_list_append 
extern __typeof (g_unix_fd_list_append) g_unix_fd_list_append __attribute((alias("IA__g_unix_fd_list_append"), visibility("default")));

#undef g_unix_fd_list_get 
extern __typeof (g_unix_fd_list_get) g_unix_fd_list_get __attribute((alias("IA__g_unix_fd_list_get"), visibility("default")));

#undef g_unix_fd_list_get_length 
extern __typeof (g_unix_fd_list_get_length) g_unix_fd_list_get_length __attribute((alias("IA__g_unix_fd_list_get_length"), visibility("default")));

#undef g_unix_fd_list_get_type 
extern __typeof (g_unix_fd_list_get_type) g_unix_fd_list_get_type __attribute((alias("IA__g_unix_fd_list_get_type"), visibility("default")));

#undef g_unix_fd_list_new 
extern __typeof (g_unix_fd_list_new) g_unix_fd_list_new __attribute((alias("IA__g_unix_fd_list_new"), visibility("default")));

#undef g_unix_fd_list_new_from_array 
extern __typeof (g_unix_fd_list_new_from_array) g_unix_fd_list_new_from_array __attribute((alias("IA__g_unix_fd_list_new_from_array"), visibility("default")));

#undef g_unix_fd_list_peek_fds 
extern __typeof (g_unix_fd_list_peek_fds) g_unix_fd_list_peek_fds __attribute((alias("IA__g_unix_fd_list_peek_fds"), visibility("default")));

#undef g_unix_fd_list_steal_fds 
extern __typeof (g_unix_fd_list_steal_fds) g_unix_fd_list_steal_fds __attribute((alias("IA__g_unix_fd_list_steal_fds"), visibility("default")));

#endif
#endif
#endif
#if IN_HEADER(__G_ZLIB_COMPRESSOR_H__)
#if IN_FILE(__G_ZLIB_COMPRESSOR_C__)
#undef g_zlib_compressor_get_type 
extern __typeof (g_zlib_compressor_get_type) g_zlib_compressor_get_type __attribute((alias("IA__g_zlib_compressor_get_type"), visibility("default")));

#undef g_zlib_compressor_new 
extern __typeof (g_zlib_compressor_new) g_zlib_compressor_new __attribute((alias("IA__g_zlib_compressor_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_ZLIB_DECOMPRESSOR_H__)
#if IN_FILE(__G_ZLIB_DECOMPRESSOR_C__)
#undef g_zlib_decompressor_get_type 
extern __typeof (g_zlib_decompressor_get_type) g_zlib_decompressor_get_type __attribute((alias("IA__g_zlib_decompressor_get_type"), visibility("default")));

#undef g_zlib_decompressor_new 
extern __typeof (g_zlib_decompressor_new) g_zlib_decompressor_new __attribute((alias("IA__g_zlib_decompressor_new"), visibility("default")));

#endif
#endif
#if IN_HEADER(__G_FILE_DESCRIPTOR_BASED_H__)
#if IN_FILE(__G_FILE_DESCRIPTOR_BASED_C__)
#undef g_file_descriptor_based_get_type 
extern __typeof (g_file_descriptor_based_get_type) g_file_descriptor_based_get_type __attribute((alias("IA__g_file_descriptor_based_get_type"), visibility("default")));

#undef g_file_descriptor_based_get_fd 
extern __typeof (g_file_descriptor_based_get_fd) g_file_descriptor_based_get_fd __attribute((alias("IA__g_file_descriptor_based_get_fd"), visibility("default")));

#endif
#endif

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