/* Generated by makegioalias.pl */

#ifndef DISABLE_VISIBILITY

#include "glib.h"

#ifdef G_HAVE_GNUC_VISIBILITY

#define IN_FILE(x) 1
#define IN_HEADER defined

#if IN_HEADER(__G_VFS_H__)
#if IN_FILE(__G_VFS_C__)
extern __typeof (g_vfs_get_type) IA__g_vfs_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_vfs_get_type IA__g_vfs_get_type

extern __typeof (g_vfs_is_active) IA__g_vfs_is_active __attribute((visibility("hidden")));
#define g_vfs_is_active IA__g_vfs_is_active

extern __typeof (g_vfs_get_file_for_path) IA__g_vfs_get_file_for_path __attribute((visibility("hidden")));
#define g_vfs_get_file_for_path IA__g_vfs_get_file_for_path

extern __typeof (g_vfs_get_file_for_uri) IA__g_vfs_get_file_for_uri __attribute((visibility("hidden")));
#define g_vfs_get_file_for_uri IA__g_vfs_get_file_for_uri

extern __typeof (g_vfs_get_supported_uri_schemes) IA__g_vfs_get_supported_uri_schemes __attribute((visibility("hidden")));
#define g_vfs_get_supported_uri_schemes IA__g_vfs_get_supported_uri_schemes

extern __typeof (g_vfs_parse_name) IA__g_vfs_parse_name __attribute((visibility("hidden")));
#define g_vfs_parse_name IA__g_vfs_parse_name

extern __typeof (g_vfs_get_default) IA__g_vfs_get_default __attribute((visibility("hidden")));
#define g_vfs_get_default IA__g_vfs_get_default

extern __typeof (g_vfs_get_local) IA__g_vfs_get_local __attribute((visibility("hidden")));
#define g_vfs_get_local IA__g_vfs_get_local

#endif
#endif
#if IN_HEADER(__G_APP_INFO_H__)
#if IN_FILE(__G_APP_INFO_C__)
extern __typeof (g_app_info_get_type) IA__g_app_info_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_app_info_get_type IA__g_app_info_get_type

extern __typeof (g_app_launch_context_get_type) IA__g_app_launch_context_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_app_launch_context_get_type IA__g_app_launch_context_get_type

extern __typeof (g_app_info_dup) IA__g_app_info_dup __attribute((visibility("hidden")));
#define g_app_info_dup IA__g_app_info_dup

extern __typeof (g_app_info_equal) IA__g_app_info_equal __attribute((visibility("hidden")));
#define g_app_info_equal IA__g_app_info_equal

extern __typeof (g_app_info_get_id) IA__g_app_info_get_id __attribute((visibility("hidden")));
#define g_app_info_get_id IA__g_app_info_get_id

extern __typeof (g_app_info_get_name) IA__g_app_info_get_name __attribute((visibility("hidden")));
#define g_app_info_get_name IA__g_app_info_get_name

extern __typeof (g_app_info_get_display_name) IA__g_app_info_get_display_name __attribute((visibility("hidden")));
#define g_app_info_get_display_name IA__g_app_info_get_display_name

extern __typeof (g_app_info_get_description) IA__g_app_info_get_description __attribute((visibility("hidden")));
#define g_app_info_get_description IA__g_app_info_get_description

extern __typeof (g_app_info_get_executable) IA__g_app_info_get_executable __attribute((visibility("hidden")));
#define g_app_info_get_executable IA__g_app_info_get_executable

extern __typeof (g_app_info_get_commandline) IA__g_app_info_get_commandline __attribute((visibility("hidden")));
#define g_app_info_get_commandline IA__g_app_info_get_commandline

extern __typeof (g_app_info_get_icon) IA__g_app_info_get_icon __attribute((visibility("hidden")));
#define g_app_info_get_icon IA__g_app_info_get_icon

extern __typeof (g_app_info_launch) IA__g_app_info_launch __attribute((visibility("hidden")));
#define g_app_info_launch IA__g_app_info_launch

extern __typeof (g_app_info_supports_uris) IA__g_app_info_supports_uris __attribute((visibility("hidden")));
#define g_app_info_supports_uris IA__g_app_info_supports_uris

extern __typeof (g_app_info_supports_files) IA__g_app_info_supports_files __attribute((visibility("hidden")));
#define g_app_info_supports_files IA__g_app_info_supports_files

extern __typeof (g_app_info_launch_uris) IA__g_app_info_launch_uris __attribute((visibility("hidden")));
#define g_app_info_launch_uris IA__g_app_info_launch_uris

extern __typeof (g_app_info_should_show) IA__g_app_info_should_show __attribute((visibility("hidden")));
#define g_app_info_should_show IA__g_app_info_should_show

extern __typeof (g_app_info_set_as_default_for_type) IA__g_app_info_set_as_default_for_type __attribute((visibility("hidden")));
#define g_app_info_set_as_default_for_type IA__g_app_info_set_as_default_for_type

extern __typeof (g_app_info_set_as_default_for_extension) IA__g_app_info_set_as_default_for_extension __attribute((visibility("hidden")));
#define g_app_info_set_as_default_for_extension IA__g_app_info_set_as_default_for_extension

extern __typeof (g_app_info_add_supports_type) IA__g_app_info_add_supports_type __attribute((visibility("hidden")));
#define g_app_info_add_supports_type IA__g_app_info_add_supports_type

extern __typeof (g_app_info_can_remove_supports_type) IA__g_app_info_can_remove_supports_type __attribute((visibility("hidden")));
#define g_app_info_can_remove_supports_type IA__g_app_info_can_remove_supports_type

extern __typeof (g_app_info_remove_supports_type) IA__g_app_info_remove_supports_type __attribute((visibility("hidden")));
#define g_app_info_remove_supports_type IA__g_app_info_remove_supports_type

extern __typeof (g_app_info_launch_default_for_uri) IA__g_app_info_launch_default_for_uri __attribute((visibility("hidden")));
#define g_app_info_launch_default_for_uri IA__g_app_info_launch_default_for_uri

extern __typeof (g_app_info_can_delete) IA__g_app_info_can_delete __attribute((visibility("hidden")));
#define g_app_info_can_delete IA__g_app_info_can_delete

extern __typeof (g_app_info_delete) IA__g_app_info_delete __attribute((visibility("hidden")));
#define g_app_info_delete IA__g_app_info_delete

extern __typeof (g_app_launch_context_new) IA__g_app_launch_context_new __attribute((visibility("hidden")));
#define g_app_launch_context_new IA__g_app_launch_context_new

extern __typeof (g_app_launch_context_get_display) IA__g_app_launch_context_get_display __attribute((visibility("hidden")));
#define g_app_launch_context_get_display IA__g_app_launch_context_get_display

extern __typeof (g_app_launch_context_get_startup_notify_id) IA__g_app_launch_context_get_startup_notify_id __attribute((visibility("hidden")));
#define g_app_launch_context_get_startup_notify_id IA__g_app_launch_context_get_startup_notify_id

extern __typeof (g_app_launch_context_launch_failed) IA__g_app_launch_context_launch_failed __attribute((visibility("hidden")));
#define g_app_launch_context_launch_failed IA__g_app_launch_context_launch_failed

#endif
#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
extern __typeof (g_app_info_create_from_commandline) IA__g_app_info_create_from_commandline __attribute((visibility("hidden")));
#define g_app_info_create_from_commandline IA__g_app_info_create_from_commandline

extern __typeof (g_app_info_get_all) IA__g_app_info_get_all __attribute((visibility("hidden")));
#define g_app_info_get_all IA__g_app_info_get_all

extern __typeof (g_app_info_get_all_for_type) IA__g_app_info_get_all_for_type __attribute((visibility("hidden")));
#define g_app_info_get_all_for_type IA__g_app_info_get_all_for_type

extern __typeof (g_app_info_get_default_for_type) IA__g_app_info_get_default_for_type __attribute((visibility("hidden")));
#define g_app_info_get_default_for_type IA__g_app_info_get_default_for_type

extern __typeof (g_app_info_get_default_for_uri_scheme) IA__g_app_info_get_default_for_uri_scheme __attribute((visibility("hidden")));
#define g_app_info_get_default_for_uri_scheme IA__g_app_info_get_default_for_uri_scheme

extern __typeof (g_app_info_reset_type_associations) IA__g_app_info_reset_type_associations __attribute((visibility("hidden")));
#define g_app_info_reset_type_associations IA__g_app_info_reset_type_associations

#endif
#endif
#if IN_HEADER(__G_DESKTOP_APP_INFO_H__)
#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
#ifdef G_OS_UNIX
extern __typeof (g_desktop_app_info_new_from_filename) IA__g_desktop_app_info_new_from_filename __attribute((visibility("hidden")));
#define g_desktop_app_info_new_from_filename IA__g_desktop_app_info_new_from_filename

extern __typeof (g_desktop_app_info_new_from_keyfile) IA__g_desktop_app_info_new_from_keyfile __attribute((visibility("hidden")));
#define g_desktop_app_info_new_from_keyfile IA__g_desktop_app_info_new_from_keyfile

extern __typeof (g_desktop_app_info_new) IA__g_desktop_app_info_new __attribute((visibility("hidden")));
#define g_desktop_app_info_new IA__g_desktop_app_info_new

extern __typeof (g_desktop_app_info_get_filename) IA__g_desktop_app_info_get_filename __attribute((visibility("hidden")));
#define g_desktop_app_info_get_filename IA__g_desktop_app_info_get_filename

extern __typeof (g_desktop_app_info_get_type) IA__g_desktop_app_info_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_desktop_app_info_get_type IA__g_desktop_app_info_get_type

extern __typeof (g_desktop_app_info_get_is_hidden) IA__g_desktop_app_info_get_is_hidden __attribute((visibility("hidden")));
#define g_desktop_app_info_get_is_hidden IA__g_desktop_app_info_get_is_hidden

extern __typeof (g_desktop_app_info_set_desktop_env) IA__g_desktop_app_info_set_desktop_env __attribute((visibility("hidden")));
#define g_desktop_app_info_set_desktop_env IA__g_desktop_app_info_set_desktop_env

extern __typeof (g_desktop_app_info_lookup_get_type) IA__g_desktop_app_info_lookup_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_desktop_app_info_lookup_get_type IA__g_desktop_app_info_lookup_get_type

extern __typeof (g_desktop_app_info_lookup_get_default_for_uri_scheme) IA__g_desktop_app_info_lookup_get_default_for_uri_scheme __attribute((visibility("hidden")));
#define g_desktop_app_info_lookup_get_default_for_uri_scheme IA__g_desktop_app_info_lookup_get_default_for_uri_scheme

#endif
#endif
#endif
#if IN_HEADER(__G_ASYNC_RESULT_H__)
#if IN_FILE(__G_ASYNC_RESULT_C__)
extern __typeof (g_async_result_get_type) IA__g_async_result_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_async_result_get_type IA__g_async_result_get_type

extern __typeof (g_async_result_get_user_data) IA__g_async_result_get_user_data __attribute((visibility("hidden")));
#define g_async_result_get_user_data IA__g_async_result_get_user_data

extern __typeof (g_async_result_get_source_object) IA__g_async_result_get_source_object __attribute((visibility("hidden")));
#define g_async_result_get_source_object IA__g_async_result_get_source_object

#endif
#endif
#if IN_HEADER(__G_BUFFERED_INPUT_STREAM_H__)
#if IN_FILE(__G_BUFFERED_INPUT_STREAM_C__)
extern __typeof (g_buffered_input_stream_get_type) IA__g_buffered_input_stream_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_buffered_input_stream_get_type IA__g_buffered_input_stream_get_type

extern __typeof (g_buffered_input_stream_new) IA__g_buffered_input_stream_new __attribute((visibility("hidden")));
#define g_buffered_input_stream_new IA__g_buffered_input_stream_new

extern __typeof (g_buffered_input_stream_new_sized) IA__g_buffered_input_stream_new_sized __attribute((visibility("hidden")));
#define g_buffered_input_stream_new_sized IA__g_buffered_input_stream_new_sized

extern __typeof (g_buffered_input_stream_get_buffer_size) IA__g_buffered_input_stream_get_buffer_size __attribute((visibility("hidden")));
#define g_buffered_input_stream_get_buffer_size IA__g_buffered_input_stream_get_buffer_size

extern __typeof (g_buffered_input_stream_set_buffer_size) IA__g_buffered_input_stream_set_buffer_size __attribute((visibility("hidden")));
#define g_buffered_input_stream_set_buffer_size IA__g_buffered_input_stream_set_buffer_size

extern __typeof (g_buffered_input_stream_get_available) IA__g_buffered_input_stream_get_available __attribute((visibility("hidden")));
#define g_buffered_input_stream_get_available IA__g_buffered_input_stream_get_available

extern __typeof (g_buffered_input_stream_peek) IA__g_buffered_input_stream_peek __attribute((visibility("hidden")));
#define g_buffered_input_stream_peek IA__g_buffered_input_stream_peek

extern __typeof (g_buffered_input_stream_peek_buffer) IA__g_buffered_input_stream_peek_buffer __attribute((visibility("hidden")));
#define g_buffered_input_stream_peek_buffer IA__g_buffered_input_stream_peek_buffer

extern __typeof (g_buffered_input_stream_fill) IA__g_buffered_input_stream_fill __attribute((visibility("hidden")));
#define g_buffered_input_stream_fill IA__g_buffered_input_stream_fill

extern __typeof (g_buffered_input_stream_fill_async) IA__g_buffered_input_stream_fill_async __attribute((visibility("hidden")));
#define g_buffered_input_stream_fill_async IA__g_buffered_input_stream_fill_async

extern __typeof (g_buffered_input_stream_fill_finish) IA__g_buffered_input_stream_fill_finish __attribute((visibility("hidden")));
#define g_buffered_input_stream_fill_finish IA__g_buffered_input_stream_fill_finish

extern __typeof (g_buffered_input_stream_read_byte) IA__g_buffered_input_stream_read_byte __attribute((visibility("hidden")));
#define g_buffered_input_stream_read_byte IA__g_buffered_input_stream_read_byte

#endif
#endif
#if IN_HEADER(__G_BUFFERED_OUTPUT_STREAM_H__)
#if IN_FILE(__G_BUFFERED_OUTPUT_STREAM_C__)
extern __typeof (g_buffered_output_stream_get_type) IA__g_buffered_output_stream_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;;
#define g_buffered_output_stream_get_type IA__g_buffered_output_stream_get_type

extern __typeof (g_buffered_output_stream_new) IA__g_buffered_output_stream_new __attribute((visibility("hidden")));
#define g_buffered_output_stream_new IA__g_buffered_output_stream_new

extern __typeof (g_buffered_output_stream_new_sized) IA__g_buffered_output_stream_new_sized __attribute((visibility("hidden")));
#define g_buffered_output_stream_new_sized IA__g_buffered_output_stream_new_sized

extern __typeof (g_buffered_output_stream_get_buffer_size) IA__g_buffered_output_stream_get_buffer_size __attribute((visibility("hidden")));
#define g_buffered_output_stream_get_buffer_size IA__g_buffered_output_stream_get_buffer_size

extern __typeof (g_buffered_output_stream_set_buffer_size) IA__g_buffered_output_stream_set_buffer_size __attribute((visibility("hidden")));
#define g_buffered_output_stream_set_buffer_size IA__g_buffered_output_stream_set_buffer_size

extern __typeof (g_buffered_output_stream_get_auto_grow) IA__g_buffered_output_stream_get_auto_grow __attribute((visibility("hidden")));
#define g_buffered_output_stream_get_auto_grow IA__g_buffered_output_stream_get_auto_grow

extern __typeof (g_buffered_output_stream_set_auto_grow) IA__g_buffered_output_stream_set_auto_grow __attribute((visibility("hidden")));
#define g_buffered_output_stream_set_auto_grow IA__g_buffered_output_stream_set_auto_grow

#endif
#endif
#if IN_HEADER(__G_CANCELLABLE_H__)
#if IN_FILE(__G_CANCELLABLE_C__)
extern __typeof (g_cancellable_get_type) IA__g_cancellable_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_cancellable_get_type IA__g_cancellable_get_type

extern __typeof (g_cancellable_new) IA__g_cancellable_new __attribute((visibility("hidden")));
#define g_cancellable_new IA__g_cancellable_new

extern __typeof (g_cancellable_is_cancelled) IA__g_cancellable_is_cancelled __attribute((visibility("hidden")));
#define g_cancellable_is_cancelled IA__g_cancellable_is_cancelled

extern __typeof (g_cancellable_set_error_if_cancelled) IA__g_cancellable_set_error_if_cancelled __attribute((visibility("hidden")));
#define g_cancellable_set_error_if_cancelled IA__g_cancellable_set_error_if_cancelled

extern __typeof (g_cancellable_get_fd) IA__g_cancellable_get_fd __attribute((visibility("hidden")));
#define g_cancellable_get_fd IA__g_cancellable_get_fd

extern __typeof (g_cancellable_make_pollfd) IA__g_cancellable_make_pollfd __attribute((visibility("hidden")));
#define g_cancellable_make_pollfd IA__g_cancellable_make_pollfd

extern __typeof (g_cancellable_release_fd) IA__g_cancellable_release_fd __attribute((visibility("hidden")));
#define g_cancellable_release_fd IA__g_cancellable_release_fd

extern __typeof (g_cancellable_get_current) IA__g_cancellable_get_current __attribute((visibility("hidden")));
#define g_cancellable_get_current IA__g_cancellable_get_current

extern __typeof (g_cancellable_push_current) IA__g_cancellable_push_current __attribute((visibility("hidden")));
#define g_cancellable_push_current IA__g_cancellable_push_current

extern __typeof (g_cancellable_pop_current) IA__g_cancellable_pop_current __attribute((visibility("hidden")));
#define g_cancellable_pop_current IA__g_cancellable_pop_current

extern __typeof (g_cancellable_reset) IA__g_cancellable_reset __attribute((visibility("hidden")));
#define g_cancellable_reset IA__g_cancellable_reset

extern __typeof (g_cancellable_cancel) IA__g_cancellable_cancel __attribute((visibility("hidden")));
#define g_cancellable_cancel IA__g_cancellable_cancel

extern __typeof (g_cancellable_connect) IA__g_cancellable_connect __attribute((visibility("hidden")));
#define g_cancellable_connect IA__g_cancellable_connect

extern __typeof (g_cancellable_disconnect) IA__g_cancellable_disconnect __attribute((visibility("hidden")));
#define g_cancellable_disconnect IA__g_cancellable_disconnect

#endif
#endif
#if IN_HEADER(__G_CONTENT_TYPE_H__)
#if IN_FILE(__G_CONTENT_TYPE_C__)
extern __typeof (g_content_type_equals) IA__g_content_type_equals __attribute((visibility("hidden")));
#define g_content_type_equals IA__g_content_type_equals

extern __typeof (g_content_type_is_a) IA__g_content_type_is_a __attribute((visibility("hidden")));
#define g_content_type_is_a IA__g_content_type_is_a

extern __typeof (g_content_type_is_unknown) IA__g_content_type_is_unknown __attribute((visibility("hidden")));
#define g_content_type_is_unknown IA__g_content_type_is_unknown

extern __typeof (g_content_type_get_description) IA__g_content_type_get_description __attribute((visibility("hidden")));
#define g_content_type_get_description IA__g_content_type_get_description

extern __typeof (g_content_type_get_mime_type) IA__g_content_type_get_mime_type __attribute((visibility("hidden")));
#define g_content_type_get_mime_type IA__g_content_type_get_mime_type

extern __typeof (g_content_type_get_icon) IA__g_content_type_get_icon __attribute((visibility("hidden")));
#define g_content_type_get_icon IA__g_content_type_get_icon

extern __typeof (g_content_type_can_be_executable) IA__g_content_type_can_be_executable __attribute((visibility("hidden")));
#define g_content_type_can_be_executable IA__g_content_type_can_be_executable

extern __typeof (g_content_type_from_mime_type) IA__g_content_type_from_mime_type __attribute((visibility("hidden")));
#define g_content_type_from_mime_type IA__g_content_type_from_mime_type

extern __typeof (g_content_type_guess) IA__g_content_type_guess __attribute((visibility("hidden")));
#define g_content_type_guess IA__g_content_type_guess

extern __typeof (g_content_type_guess_for_tree) IA__g_content_type_guess_for_tree __attribute((visibility("hidden")));
#define g_content_type_guess_for_tree IA__g_content_type_guess_for_tree

extern __typeof (g_content_types_get_registered) IA__g_content_types_get_registered __attribute((visibility("hidden")));
#define g_content_types_get_registered IA__g_content_types_get_registered

#endif
#endif
#if IN_HEADER(__G_CONVERTER_H__)
#if IN_FILE(__G_CONVERTER_C__)
extern __typeof (g_converter_get_type) IA__g_converter_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_converter_get_type IA__g_converter_get_type

extern __typeof (g_converter_reset) IA__g_converter_reset __attribute((visibility("hidden")));
#define g_converter_reset IA__g_converter_reset

extern __typeof (g_converter_convert) IA__g_converter_convert __attribute((visibility("hidden")));
#define g_converter_convert IA__g_converter_convert

#endif
#endif
#if IN_HEADER(__G_CONVERTER_INPUT_STREAM_H__)
#if IN_FILE(__G_CONVERTER_INPUT_STREAM_C__)
extern __typeof (g_converter_input_stream_get_type) IA__g_converter_input_stream_get_type __attribute((visibility("hidden")));
#define g_converter_input_stream_get_type IA__g_converter_input_stream_get_type

extern __typeof (g_converter_input_stream_new) IA__g_converter_input_stream_new __attribute((visibility("hidden")));
#define g_converter_input_stream_new IA__g_converter_input_stream_new

extern __typeof (g_converter_input_stream_get_converter) IA__g_converter_input_stream_get_converter __attribute((visibility("hidden")));
#define g_converter_input_stream_get_converter IA__g_converter_input_stream_get_converter

#endif
#endif
#if IN_HEADER(__G_CONVERTER_OUTPUT_STREAM_H__)
#if IN_FILE(__G_CONVERTER_OUTPUT_STREAM_C__)
extern __typeof (g_converter_output_stream_get_type) IA__g_converter_output_stream_get_type __attribute((visibility("hidden")));
#define g_converter_output_stream_get_type IA__g_converter_output_stream_get_type

extern __typeof (g_converter_output_stream_new) IA__g_converter_output_stream_new __attribute((visibility("hidden")));
#define g_converter_output_stream_new IA__g_converter_output_stream_new

extern __typeof (g_converter_output_stream_get_converter) IA__g_converter_output_stream_get_converter __attribute((visibility("hidden")));
#define g_converter_output_stream_get_converter IA__g_converter_output_stream_get_converter

#endif
#endif
#if IN_HEADER(__G_CHARSET_CONVERTER_H__)
#if IN_FILE(__G_CHARSET_CONVERTER_C__)
extern __typeof (g_charset_converter_get_type) IA__g_charset_converter_get_type __attribute((visibility("hidden")));
#define g_charset_converter_get_type IA__g_charset_converter_get_type

extern __typeof (g_charset_converter_new) IA__g_charset_converter_new __attribute((visibility("hidden")));
#define g_charset_converter_new IA__g_charset_converter_new

extern __typeof (g_charset_converter_get_num_fallbacks) IA__g_charset_converter_get_num_fallbacks __attribute((visibility("hidden")));
#define g_charset_converter_get_num_fallbacks IA__g_charset_converter_get_num_fallbacks

extern __typeof (g_charset_converter_get_use_fallback) IA__g_charset_converter_get_use_fallback __attribute((visibility("hidden")));
#define g_charset_converter_get_use_fallback IA__g_charset_converter_get_use_fallback

extern __typeof (g_charset_converter_set_use_fallback) IA__g_charset_converter_set_use_fallback __attribute((visibility("hidden")));
#define g_charset_converter_set_use_fallback IA__g_charset_converter_set_use_fallback

#endif
#endif
#if IN_HEADER(__G_DATA_INPUT_STREAM_H__)
#if IN_FILE(__G_DATA_INPUT_STREAM_C__)
extern __typeof (g_data_input_stream_get_type) IA__g_data_input_stream_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_data_input_stream_get_type IA__g_data_input_stream_get_type

extern __typeof (g_data_input_stream_new) IA__g_data_input_stream_new __attribute((visibility("hidden")));
#define g_data_input_stream_new IA__g_data_input_stream_new

extern __typeof (g_data_input_stream_set_byte_order) IA__g_data_input_stream_set_byte_order __attribute((visibility("hidden")));
#define g_data_input_stream_set_byte_order IA__g_data_input_stream_set_byte_order

extern __typeof (g_data_input_stream_get_byte_order) IA__g_data_input_stream_get_byte_order __attribute((visibility("hidden")));
#define g_data_input_stream_get_byte_order IA__g_data_input_stream_get_byte_order

extern __typeof (g_data_input_stream_set_newline_type) IA__g_data_input_stream_set_newline_type __attribute((visibility("hidden")));
#define g_data_input_stream_set_newline_type IA__g_data_input_stream_set_newline_type

extern __typeof (g_data_input_stream_get_newline_type) IA__g_data_input_stream_get_newline_type __attribute((visibility("hidden")));
#define g_data_input_stream_get_newline_type IA__g_data_input_stream_get_newline_type

extern __typeof (g_data_input_stream_read_byte) IA__g_data_input_stream_read_byte __attribute((visibility("hidden")));
#define g_data_input_stream_read_byte IA__g_data_input_stream_read_byte

extern __typeof (g_data_input_stream_read_int16) IA__g_data_input_stream_read_int16 __attribute((visibility("hidden")));
#define g_data_input_stream_read_int16 IA__g_data_input_stream_read_int16

extern __typeof (g_data_input_stream_read_uint16) IA__g_data_input_stream_read_uint16 __attribute((visibility("hidden")));
#define g_data_input_stream_read_uint16 IA__g_data_input_stream_read_uint16

extern __typeof (g_data_input_stream_read_int32) IA__g_data_input_stream_read_int32 __attribute((visibility("hidden")));
#define g_data_input_stream_read_int32 IA__g_data_input_stream_read_int32

extern __typeof (g_data_input_stream_read_uint32) IA__g_data_input_stream_read_uint32 __attribute((visibility("hidden")));
#define g_data_input_stream_read_uint32 IA__g_data_input_stream_read_uint32

extern __typeof (g_data_input_stream_read_int64) IA__g_data_input_stream_read_int64 __attribute((visibility("hidden")));
#define g_data_input_stream_read_int64 IA__g_data_input_stream_read_int64

extern __typeof (g_data_input_stream_read_uint64) IA__g_data_input_stream_read_uint64 __attribute((visibility("hidden")));
#define g_data_input_stream_read_uint64 IA__g_data_input_stream_read_uint64

extern __typeof (g_data_input_stream_read_line) IA__g_data_input_stream_read_line __attribute((visibility("hidden")));
#define g_data_input_stream_read_line IA__g_data_input_stream_read_line

extern __typeof (g_data_input_stream_read_line_async) IA__g_data_input_stream_read_line_async __attribute((visibility("hidden")));
#define g_data_input_stream_read_line_async IA__g_data_input_stream_read_line_async

extern __typeof (g_data_input_stream_read_line_finish) IA__g_data_input_stream_read_line_finish __attribute((visibility("hidden")));
#define g_data_input_stream_read_line_finish IA__g_data_input_stream_read_line_finish

extern __typeof (g_data_input_stream_read_until) IA__g_data_input_stream_read_until __attribute((visibility("hidden")));
#define g_data_input_stream_read_until IA__g_data_input_stream_read_until

extern __typeof (g_data_input_stream_read_until_async) IA__g_data_input_stream_read_until_async __attribute((visibility("hidden")));
#define g_data_input_stream_read_until_async IA__g_data_input_stream_read_until_async

extern __typeof (g_data_input_stream_read_until_finish) IA__g_data_input_stream_read_until_finish __attribute((visibility("hidden")));
#define g_data_input_stream_read_until_finish IA__g_data_input_stream_read_until_finish

#endif
#endif
#if IN_HEADER(__G_DATA_OUTPUT_STREAM_H__)
#if IN_FILE(__G_DATA_OUTPUT_STREAM_C__)
extern __typeof (g_data_output_stream_get_type) IA__g_data_output_stream_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_data_output_stream_get_type IA__g_data_output_stream_get_type

extern __typeof (g_data_output_stream_new) IA__g_data_output_stream_new __attribute((visibility("hidden")));
#define g_data_output_stream_new IA__g_data_output_stream_new

extern __typeof (g_data_output_stream_set_byte_order) IA__g_data_output_stream_set_byte_order __attribute((visibility("hidden")));
#define g_data_output_stream_set_byte_order IA__g_data_output_stream_set_byte_order

extern __typeof (g_data_output_stream_get_byte_order) IA__g_data_output_stream_get_byte_order __attribute((visibility("hidden")));
#define g_data_output_stream_get_byte_order IA__g_data_output_stream_get_byte_order

extern __typeof (g_data_output_stream_put_byte) IA__g_data_output_stream_put_byte __attribute((visibility("hidden")));
#define g_data_output_stream_put_byte IA__g_data_output_stream_put_byte

extern __typeof (g_data_output_stream_put_int16) IA__g_data_output_stream_put_int16 __attribute((visibility("hidden")));
#define g_data_output_stream_put_int16 IA__g_data_output_stream_put_int16

extern __typeof (g_data_output_stream_put_uint16) IA__g_data_output_stream_put_uint16 __attribute((visibility("hidden")));
#define g_data_output_stream_put_uint16 IA__g_data_output_stream_put_uint16

extern __typeof (g_data_output_stream_put_int32) IA__g_data_output_stream_put_int32 __attribute((visibility("hidden")));
#define g_data_output_stream_put_int32 IA__g_data_output_stream_put_int32

extern __typeof (g_data_output_stream_put_uint32) IA__g_data_output_stream_put_uint32 __attribute((visibility("hidden")));
#define g_data_output_stream_put_uint32 IA__g_data_output_stream_put_uint32

extern __typeof (g_data_output_stream_put_int64) IA__g_data_output_stream_put_int64 __attribute((visibility("hidden")));
#define g_data_output_stream_put_int64 IA__g_data_output_stream_put_int64

extern __typeof (g_data_output_stream_put_uint64) IA__g_data_output_stream_put_uint64 __attribute((visibility("hidden")));
#define g_data_output_stream_put_uint64 IA__g_data_output_stream_put_uint64

extern __typeof (g_data_output_stream_put_string) IA__g_data_output_stream_put_string __attribute((visibility("hidden")));
#define g_data_output_stream_put_string IA__g_data_output_stream_put_string

#endif
#endif
#if IN_HEADER(__G_DRIVE_H__)
#if IN_FILE(__G_DRIVE_C__)
extern __typeof (g_drive_get_type) IA__g_drive_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_drive_get_type IA__g_drive_get_type

extern __typeof (g_drive_get_name) IA__g_drive_get_name __attribute((visibility("hidden")));
#define g_drive_get_name IA__g_drive_get_name

extern __typeof (g_drive_get_icon) IA__g_drive_get_icon __attribute((visibility("hidden")));
#define g_drive_get_icon IA__g_drive_get_icon

extern __typeof (g_drive_has_volumes) IA__g_drive_has_volumes __attribute((visibility("hidden")));
#define g_drive_has_volumes IA__g_drive_has_volumes

extern __typeof (g_drive_get_volumes) IA__g_drive_get_volumes __attribute((visibility("hidden")));
#define g_drive_get_volumes IA__g_drive_get_volumes

extern __typeof (g_drive_is_media_removable) IA__g_drive_is_media_removable __attribute((visibility("hidden")));
#define g_drive_is_media_removable IA__g_drive_is_media_removable

extern __typeof (g_drive_has_media) IA__g_drive_has_media __attribute((visibility("hidden")));
#define g_drive_has_media IA__g_drive_has_media

extern __typeof (g_drive_is_media_check_automatic) IA__g_drive_is_media_check_automatic __attribute((visibility("hidden")));
#define g_drive_is_media_check_automatic IA__g_drive_is_media_check_automatic

extern __typeof (g_drive_can_poll_for_media) IA__g_drive_can_poll_for_media __attribute((visibility("hidden")));
#define g_drive_can_poll_for_media IA__g_drive_can_poll_for_media

extern __typeof (g_drive_can_eject) IA__g_drive_can_eject __attribute((visibility("hidden")));
#define g_drive_can_eject IA__g_drive_can_eject

extern __typeof (g_drive_eject_with_operation) IA__g_drive_eject_with_operation __attribute((visibility("hidden")));
#define g_drive_eject_with_operation IA__g_drive_eject_with_operation

extern __typeof (g_drive_eject_with_operation_finish) IA__g_drive_eject_with_operation_finish __attribute((visibility("hidden")));
#define g_drive_eject_with_operation_finish IA__g_drive_eject_with_operation_finish

extern __typeof (g_drive_poll_for_media) IA__g_drive_poll_for_media __attribute((visibility("hidden")));
#define g_drive_poll_for_media IA__g_drive_poll_for_media

extern __typeof (g_drive_poll_for_media_finish) IA__g_drive_poll_for_media_finish __attribute((visibility("hidden")));
#define g_drive_poll_for_media_finish IA__g_drive_poll_for_media_finish

extern __typeof (g_drive_get_identifier) IA__g_drive_get_identifier __attribute((visibility("hidden")));
#define g_drive_get_identifier IA__g_drive_get_identifier

extern __typeof (g_drive_enumerate_identifiers) IA__g_drive_enumerate_identifiers __attribute((visibility("hidden")));
#define g_drive_enumerate_identifiers IA__g_drive_enumerate_identifiers

extern __typeof (g_drive_get_start_stop_type) IA__g_drive_get_start_stop_type __attribute((visibility("hidden")));
#define g_drive_get_start_stop_type IA__g_drive_get_start_stop_type

extern __typeof (g_drive_can_start) IA__g_drive_can_start __attribute((visibility("hidden")));
#define g_drive_can_start IA__g_drive_can_start

extern __typeof (g_drive_can_start_degraded) IA__g_drive_can_start_degraded __attribute((visibility("hidden")));
#define g_drive_can_start_degraded IA__g_drive_can_start_degraded

extern __typeof (g_drive_start) IA__g_drive_start __attribute((visibility("hidden")));
#define g_drive_start IA__g_drive_start

extern __typeof (g_drive_start_finish) IA__g_drive_start_finish __attribute((visibility("hidden")));
#define g_drive_start_finish IA__g_drive_start_finish

extern __typeof (g_drive_can_stop) IA__g_drive_can_stop __attribute((visibility("hidden")));
#define g_drive_can_stop IA__g_drive_can_stop

extern __typeof (g_drive_stop) IA__g_drive_stop __attribute((visibility("hidden")));
#define g_drive_stop IA__g_drive_stop

extern __typeof (g_drive_stop_finish) IA__g_drive_stop_finish __attribute((visibility("hidden")));
#define g_drive_stop_finish IA__g_drive_stop_finish

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_drive_eject) IA__g_drive_eject __attribute((visibility("hidden")));
#define g_drive_eject IA__g_drive_eject

extern __typeof (g_drive_eject_finish) IA__g_drive_eject_finish __attribute((visibility("hidden")));
#define g_drive_eject_finish IA__g_drive_eject_finish

#endif
#endif
#endif
#if IN_HEADER(__G_FILE_ATTRIBUTE_H__)
#if IN_FILE(__G_FILE_ATTRIBUTE_C__)
extern __typeof (g_file_attribute_info_list_new) IA__g_file_attribute_info_list_new __attribute((visibility("hidden")));
#define g_file_attribute_info_list_new IA__g_file_attribute_info_list_new

extern __typeof (g_file_attribute_info_list_ref) IA__g_file_attribute_info_list_ref __attribute((visibility("hidden")));
#define g_file_attribute_info_list_ref IA__g_file_attribute_info_list_ref

extern __typeof (g_file_attribute_info_list_unref) IA__g_file_attribute_info_list_unref __attribute((visibility("hidden")));
#define g_file_attribute_info_list_unref IA__g_file_attribute_info_list_unref

extern __typeof (g_file_attribute_info_list_dup) IA__g_file_attribute_info_list_dup __attribute((visibility("hidden")));
#define g_file_attribute_info_list_dup IA__g_file_attribute_info_list_dup

extern __typeof (g_file_attribute_info_list_get_type) IA__g_file_attribute_info_list_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_attribute_info_list_get_type IA__g_file_attribute_info_list_get_type

extern __typeof (g_file_attribute_info_list_lookup) IA__g_file_attribute_info_list_lookup __attribute((visibility("hidden")));
#define g_file_attribute_info_list_lookup IA__g_file_attribute_info_list_lookup

extern __typeof (g_file_attribute_info_list_add) IA__g_file_attribute_info_list_add __attribute((visibility("hidden")));
#define g_file_attribute_info_list_add IA__g_file_attribute_info_list_add

#endif
#endif
#if IN_HEADER(__G_FILE_H__)
#if IN_FILE(__G_FILE_C__)
extern __typeof (g_file_get_type) IA__g_file_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_get_type IA__g_file_get_type

extern __typeof (g_file_new_for_path) IA__g_file_new_for_path __attribute((visibility("hidden")));
#define g_file_new_for_path IA__g_file_new_for_path

extern __typeof (g_file_new_for_uri) IA__g_file_new_for_uri __attribute((visibility("hidden")));
#define g_file_new_for_uri IA__g_file_new_for_uri

extern __typeof (g_file_new_for_commandline_arg) IA__g_file_new_for_commandline_arg __attribute((visibility("hidden")));
#define g_file_new_for_commandline_arg IA__g_file_new_for_commandline_arg

extern __typeof (g_file_parse_name) IA__g_file_parse_name __attribute((visibility("hidden")));
#define g_file_parse_name IA__g_file_parse_name

extern __typeof (g_file_dup) IA__g_file_dup __attribute((visibility("hidden")));
#define g_file_dup IA__g_file_dup

extern __typeof (g_file_hash) IA__g_file_hash __attribute((visibility("hidden")));
#define g_file_hash IA__g_file_hash

extern __typeof (g_file_equal) IA__g_file_equal __attribute((visibility("hidden")));
#define g_file_equal IA__g_file_equal

extern __typeof (g_file_get_basename) IA__g_file_get_basename __attribute((visibility("hidden")));
#define g_file_get_basename IA__g_file_get_basename

extern __typeof (g_file_get_path) IA__g_file_get_path __attribute((visibility("hidden")));
#define g_file_get_path IA__g_file_get_path

extern __typeof (g_file_get_uri) IA__g_file_get_uri __attribute((visibility("hidden")));
#define g_file_get_uri IA__g_file_get_uri

extern __typeof (g_file_get_parse_name) IA__g_file_get_parse_name __attribute((visibility("hidden")));
#define g_file_get_parse_name IA__g_file_get_parse_name

extern __typeof (g_file_get_parent) IA__g_file_get_parent __attribute((visibility("hidden")));
#define g_file_get_parent IA__g_file_get_parent

extern __typeof (g_file_has_parent) IA__g_file_has_parent __attribute((visibility("hidden")));
#define g_file_has_parent IA__g_file_has_parent

extern __typeof (g_file_get_child) IA__g_file_get_child __attribute((visibility("hidden")));
#define g_file_get_child IA__g_file_get_child

extern __typeof (g_file_get_child_for_display_name) IA__g_file_get_child_for_display_name __attribute((visibility("hidden")));
#define g_file_get_child_for_display_name IA__g_file_get_child_for_display_name

extern __typeof (g_file_has_prefix) IA__g_file_has_prefix __attribute((visibility("hidden")));
#define g_file_has_prefix IA__g_file_has_prefix

extern __typeof (g_file_get_relative_path) IA__g_file_get_relative_path __attribute((visibility("hidden")));
#define g_file_get_relative_path IA__g_file_get_relative_path

extern __typeof (g_file_resolve_relative_path) IA__g_file_resolve_relative_path __attribute((visibility("hidden")));
#define g_file_resolve_relative_path IA__g_file_resolve_relative_path

extern __typeof (g_file_is_native) IA__g_file_is_native __attribute((visibility("hidden")));
#define g_file_is_native IA__g_file_is_native

extern __typeof (g_file_has_uri_scheme) IA__g_file_has_uri_scheme __attribute((visibility("hidden")));
#define g_file_has_uri_scheme IA__g_file_has_uri_scheme

extern __typeof (g_file_get_uri_scheme) IA__g_file_get_uri_scheme __attribute((visibility("hidden")));
#define g_file_get_uri_scheme IA__g_file_get_uri_scheme

extern __typeof (g_file_read) IA__g_file_read __attribute((visibility("hidden")));
#define g_file_read IA__g_file_read

extern __typeof (g_file_read_async) IA__g_file_read_async __attribute((visibility("hidden")));
#define g_file_read_async IA__g_file_read_async

extern __typeof (g_file_read_finish) IA__g_file_read_finish __attribute((visibility("hidden")));
#define g_file_read_finish IA__g_file_read_finish

extern __typeof (g_file_append_to) IA__g_file_append_to __attribute((visibility("hidden")));
#define g_file_append_to IA__g_file_append_to

extern __typeof (g_file_create) IA__g_file_create __attribute((visibility("hidden")));
#define g_file_create IA__g_file_create

extern __typeof (g_file_replace) IA__g_file_replace __attribute((visibility("hidden")));
#define g_file_replace IA__g_file_replace

extern __typeof (g_file_append_to_async) IA__g_file_append_to_async __attribute((visibility("hidden")));
#define g_file_append_to_async IA__g_file_append_to_async

extern __typeof (g_file_append_to_finish) IA__g_file_append_to_finish __attribute((visibility("hidden")));
#define g_file_append_to_finish IA__g_file_append_to_finish

extern __typeof (g_file_create_async) IA__g_file_create_async __attribute((visibility("hidden")));
#define g_file_create_async IA__g_file_create_async

extern __typeof (g_file_create_finish) IA__g_file_create_finish __attribute((visibility("hidden")));
#define g_file_create_finish IA__g_file_create_finish

extern __typeof (g_file_replace_async) IA__g_file_replace_async __attribute((visibility("hidden")));
#define g_file_replace_async IA__g_file_replace_async

extern __typeof (g_file_replace_finish) IA__g_file_replace_finish __attribute((visibility("hidden")));
#define g_file_replace_finish IA__g_file_replace_finish

extern __typeof (g_file_query_exists) IA__g_file_query_exists __attribute((visibility("hidden")));
#define g_file_query_exists IA__g_file_query_exists

extern __typeof (g_file_query_info) IA__g_file_query_info __attribute((visibility("hidden")));
#define g_file_query_info IA__g_file_query_info

extern __typeof (g_file_query_info_async) IA__g_file_query_info_async __attribute((visibility("hidden")));
#define g_file_query_info_async IA__g_file_query_info_async

extern __typeof (g_file_query_info_finish) IA__g_file_query_info_finish __attribute((visibility("hidden")));
#define g_file_query_info_finish IA__g_file_query_info_finish

extern __typeof (g_file_query_file_type) IA__g_file_query_file_type __attribute((visibility("hidden")));
#define g_file_query_file_type IA__g_file_query_file_type

extern __typeof (g_file_query_filesystem_info) IA__g_file_query_filesystem_info __attribute((visibility("hidden")));
#define g_file_query_filesystem_info IA__g_file_query_filesystem_info

extern __typeof (g_file_query_filesystem_info_async) IA__g_file_query_filesystem_info_async __attribute((visibility("hidden")));
#define g_file_query_filesystem_info_async IA__g_file_query_filesystem_info_async

extern __typeof (g_file_query_filesystem_info_finish) IA__g_file_query_filesystem_info_finish __attribute((visibility("hidden")));
#define g_file_query_filesystem_info_finish IA__g_file_query_filesystem_info_finish

extern __typeof (g_file_find_enclosing_mount) IA__g_file_find_enclosing_mount __attribute((visibility("hidden")));
#define g_file_find_enclosing_mount IA__g_file_find_enclosing_mount

extern __typeof (g_file_find_enclosing_mount_async) IA__g_file_find_enclosing_mount_async __attribute((visibility("hidden")));
#define g_file_find_enclosing_mount_async IA__g_file_find_enclosing_mount_async

extern __typeof (g_file_find_enclosing_mount_finish) IA__g_file_find_enclosing_mount_finish __attribute((visibility("hidden")));
#define g_file_find_enclosing_mount_finish IA__g_file_find_enclosing_mount_finish

extern __typeof (g_file_enumerate_children) IA__g_file_enumerate_children __attribute((visibility("hidden")));
#define g_file_enumerate_children IA__g_file_enumerate_children

extern __typeof (g_file_enumerate_children_async) IA__g_file_enumerate_children_async __attribute((visibility("hidden")));
#define g_file_enumerate_children_async IA__g_file_enumerate_children_async

extern __typeof (g_file_enumerate_children_finish) IA__g_file_enumerate_children_finish __attribute((visibility("hidden")));
#define g_file_enumerate_children_finish IA__g_file_enumerate_children_finish

extern __typeof (g_file_set_display_name) IA__g_file_set_display_name __attribute((visibility("hidden")));
#define g_file_set_display_name IA__g_file_set_display_name

extern __typeof (g_file_set_display_name_async) IA__g_file_set_display_name_async __attribute((visibility("hidden")));
#define g_file_set_display_name_async IA__g_file_set_display_name_async

extern __typeof (g_file_set_display_name_finish) IA__g_file_set_display_name_finish __attribute((visibility("hidden")));
#define g_file_set_display_name_finish IA__g_file_set_display_name_finish

extern __typeof (g_file_delete) IA__g_file_delete __attribute((visibility("hidden")));
#define g_file_delete IA__g_file_delete

extern __typeof (g_file_trash) IA__g_file_trash __attribute((visibility("hidden")));
#define g_file_trash IA__g_file_trash

extern __typeof (g_file_copy) IA__g_file_copy __attribute((visibility("hidden")));
#define g_file_copy IA__g_file_copy

extern __typeof (g_file_copy_async) IA__g_file_copy_async __attribute((visibility("hidden")));
#define g_file_copy_async IA__g_file_copy_async

extern __typeof (g_file_copy_finish) IA__g_file_copy_finish __attribute((visibility("hidden")));
#define g_file_copy_finish IA__g_file_copy_finish

extern __typeof (g_file_move) IA__g_file_move __attribute((visibility("hidden")));
#define g_file_move IA__g_file_move

extern __typeof (g_file_make_directory) IA__g_file_make_directory __attribute((visibility("hidden")));
#define g_file_make_directory IA__g_file_make_directory

extern __typeof (g_file_make_directory_with_parents) IA__g_file_make_directory_with_parents __attribute((visibility("hidden")));
#define g_file_make_directory_with_parents IA__g_file_make_directory_with_parents

extern __typeof (g_file_make_symbolic_link) IA__g_file_make_symbolic_link __attribute((visibility("hidden")));
#define g_file_make_symbolic_link IA__g_file_make_symbolic_link

extern __typeof (g_file_query_settable_attributes) IA__g_file_query_settable_attributes __attribute((visibility("hidden")));
#define g_file_query_settable_attributes IA__g_file_query_settable_attributes

extern __typeof (g_file_query_writable_namespaces) IA__g_file_query_writable_namespaces __attribute((visibility("hidden")));
#define g_file_query_writable_namespaces IA__g_file_query_writable_namespaces

extern __typeof (g_file_set_attribute) IA__g_file_set_attribute __attribute((visibility("hidden")));
#define g_file_set_attribute IA__g_file_set_attribute

extern __typeof (g_file_set_attributes_from_info) IA__g_file_set_attributes_from_info __attribute((visibility("hidden")));
#define g_file_set_attributes_from_info IA__g_file_set_attributes_from_info

extern __typeof (g_file_set_attributes_async) IA__g_file_set_attributes_async __attribute((visibility("hidden")));
#define g_file_set_attributes_async IA__g_file_set_attributes_async

extern __typeof (g_file_set_attributes_finish) IA__g_file_set_attributes_finish __attribute((visibility("hidden")));
#define g_file_set_attributes_finish IA__g_file_set_attributes_finish

extern __typeof (g_file_set_attribute_string) IA__g_file_set_attribute_string __attribute((visibility("hidden")));
#define g_file_set_attribute_string IA__g_file_set_attribute_string

extern __typeof (g_file_set_attribute_byte_string) IA__g_file_set_attribute_byte_string __attribute((visibility("hidden")));
#define g_file_set_attribute_byte_string IA__g_file_set_attribute_byte_string

extern __typeof (g_file_set_attribute_uint32) IA__g_file_set_attribute_uint32 __attribute((visibility("hidden")));
#define g_file_set_attribute_uint32 IA__g_file_set_attribute_uint32

extern __typeof (g_file_set_attribute_int32) IA__g_file_set_attribute_int32 __attribute((visibility("hidden")));
#define g_file_set_attribute_int32 IA__g_file_set_attribute_int32

extern __typeof (g_file_set_attribute_uint64) IA__g_file_set_attribute_uint64 __attribute((visibility("hidden")));
#define g_file_set_attribute_uint64 IA__g_file_set_attribute_uint64

extern __typeof (g_file_set_attribute_int64) IA__g_file_set_attribute_int64 __attribute((visibility("hidden")));
#define g_file_set_attribute_int64 IA__g_file_set_attribute_int64

extern __typeof (g_file_mount_enclosing_volume) IA__g_file_mount_enclosing_volume __attribute((visibility("hidden")));
#define g_file_mount_enclosing_volume IA__g_file_mount_enclosing_volume

extern __typeof (g_file_mount_enclosing_volume_finish) IA__g_file_mount_enclosing_volume_finish __attribute((visibility("hidden")));
#define g_file_mount_enclosing_volume_finish IA__g_file_mount_enclosing_volume_finish

extern __typeof (g_file_mount_mountable) IA__g_file_mount_mountable __attribute((visibility("hidden")));
#define g_file_mount_mountable IA__g_file_mount_mountable

extern __typeof (g_file_mount_mountable_finish) IA__g_file_mount_mountable_finish __attribute((visibility("hidden")));
#define g_file_mount_mountable_finish IA__g_file_mount_mountable_finish

extern __typeof (g_file_unmount_mountable_with_operation) IA__g_file_unmount_mountable_with_operation __attribute((visibility("hidden")));
#define g_file_unmount_mountable_with_operation IA__g_file_unmount_mountable_with_operation

extern __typeof (g_file_unmount_mountable_with_operation_finish) IA__g_file_unmount_mountable_with_operation_finish __attribute((visibility("hidden")));
#define g_file_unmount_mountable_with_operation_finish IA__g_file_unmount_mountable_with_operation_finish

extern __typeof (g_file_eject_mountable_with_operation) IA__g_file_eject_mountable_with_operation __attribute((visibility("hidden")));
#define g_file_eject_mountable_with_operation IA__g_file_eject_mountable_with_operation

extern __typeof (g_file_eject_mountable_with_operation_finish) IA__g_file_eject_mountable_with_operation_finish __attribute((visibility("hidden")));
#define g_file_eject_mountable_with_operation_finish IA__g_file_eject_mountable_with_operation_finish

extern __typeof (g_file_copy_attributes) IA__g_file_copy_attributes __attribute((visibility("hidden")));
#define g_file_copy_attributes IA__g_file_copy_attributes

extern __typeof (g_file_monitor_directory) IA__g_file_monitor_directory __attribute((visibility("hidden")));
#define g_file_monitor_directory IA__g_file_monitor_directory

extern __typeof (g_file_monitor_file) IA__g_file_monitor_file __attribute((visibility("hidden")));
#define g_file_monitor_file IA__g_file_monitor_file

extern __typeof (g_file_monitor) IA__g_file_monitor __attribute((visibility("hidden")));
#define g_file_monitor IA__g_file_monitor

extern __typeof (g_file_query_default_handler) IA__g_file_query_default_handler __attribute((visibility("hidden")));
#define g_file_query_default_handler IA__g_file_query_default_handler

extern __typeof (g_file_load_contents) IA__g_file_load_contents __attribute((visibility("hidden")));
#define g_file_load_contents IA__g_file_load_contents

extern __typeof (g_file_load_contents_async) IA__g_file_load_contents_async __attribute((visibility("hidden")));
#define g_file_load_contents_async IA__g_file_load_contents_async

extern __typeof (g_file_load_contents_finish) IA__g_file_load_contents_finish __attribute((visibility("hidden")));
#define g_file_load_contents_finish IA__g_file_load_contents_finish

extern __typeof (g_file_load_partial_contents_async) IA__g_file_load_partial_contents_async __attribute((visibility("hidden")));
#define g_file_load_partial_contents_async IA__g_file_load_partial_contents_async

extern __typeof (g_file_load_partial_contents_finish) IA__g_file_load_partial_contents_finish __attribute((visibility("hidden")));
#define g_file_load_partial_contents_finish IA__g_file_load_partial_contents_finish

extern __typeof (g_file_replace_contents) IA__g_file_replace_contents __attribute((visibility("hidden")));
#define g_file_replace_contents IA__g_file_replace_contents

extern __typeof (g_file_replace_contents_async) IA__g_file_replace_contents_async __attribute((visibility("hidden")));
#define g_file_replace_contents_async IA__g_file_replace_contents_async

extern __typeof (g_file_replace_contents_finish) IA__g_file_replace_contents_finish __attribute((visibility("hidden")));
#define g_file_replace_contents_finish IA__g_file_replace_contents_finish

extern __typeof (g_file_create_readwrite) IA__g_file_create_readwrite __attribute((visibility("hidden")));
#define g_file_create_readwrite IA__g_file_create_readwrite

extern __typeof (g_file_create_readwrite_async) IA__g_file_create_readwrite_async __attribute((visibility("hidden")));
#define g_file_create_readwrite_async IA__g_file_create_readwrite_async

extern __typeof (g_file_create_readwrite_finish) IA__g_file_create_readwrite_finish __attribute((visibility("hidden")));
#define g_file_create_readwrite_finish IA__g_file_create_readwrite_finish

extern __typeof (g_file_open_readwrite) IA__g_file_open_readwrite __attribute((visibility("hidden")));
#define g_file_open_readwrite IA__g_file_open_readwrite

extern __typeof (g_file_open_readwrite_async) IA__g_file_open_readwrite_async __attribute((visibility("hidden")));
#define g_file_open_readwrite_async IA__g_file_open_readwrite_async

extern __typeof (g_file_open_readwrite_finish) IA__g_file_open_readwrite_finish __attribute((visibility("hidden")));
#define g_file_open_readwrite_finish IA__g_file_open_readwrite_finish

extern __typeof (g_file_replace_readwrite) IA__g_file_replace_readwrite __attribute((visibility("hidden")));
#define g_file_replace_readwrite IA__g_file_replace_readwrite

extern __typeof (g_file_replace_readwrite_async) IA__g_file_replace_readwrite_async __attribute((visibility("hidden")));
#define g_file_replace_readwrite_async IA__g_file_replace_readwrite_async

extern __typeof (g_file_replace_readwrite_finish) IA__g_file_replace_readwrite_finish __attribute((visibility("hidden")));
#define g_file_replace_readwrite_finish IA__g_file_replace_readwrite_finish

extern __typeof (g_file_start_mountable) IA__g_file_start_mountable __attribute((visibility("hidden")));
#define g_file_start_mountable IA__g_file_start_mountable

extern __typeof (g_file_start_mountable_finish) IA__g_file_start_mountable_finish __attribute((visibility("hidden")));
#define g_file_start_mountable_finish IA__g_file_start_mountable_finish

extern __typeof (g_file_stop_mountable) IA__g_file_stop_mountable __attribute((visibility("hidden")));
#define g_file_stop_mountable IA__g_file_stop_mountable

extern __typeof (g_file_stop_mountable_finish) IA__g_file_stop_mountable_finish __attribute((visibility("hidden")));
#define g_file_stop_mountable_finish IA__g_file_stop_mountable_finish

extern __typeof (g_file_supports_thread_contexts) IA__g_file_supports_thread_contexts __attribute((visibility("hidden")));
#define g_file_supports_thread_contexts IA__g_file_supports_thread_contexts

extern __typeof (g_file_poll_mountable) IA__g_file_poll_mountable __attribute((visibility("hidden")));
#define g_file_poll_mountable IA__g_file_poll_mountable

extern __typeof (g_file_poll_mountable_finish) IA__g_file_poll_mountable_finish __attribute((visibility("hidden")));
#define g_file_poll_mountable_finish IA__g_file_poll_mountable_finish

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_file_unmount_mountable) IA__g_file_unmount_mountable __attribute((visibility("hidden")));
#define g_file_unmount_mountable IA__g_file_unmount_mountable

extern __typeof (g_file_unmount_mountable_finish) IA__g_file_unmount_mountable_finish __attribute((visibility("hidden")));
#define g_file_unmount_mountable_finish IA__g_file_unmount_mountable_finish

extern __typeof (g_file_eject_mountable) IA__g_file_eject_mountable __attribute((visibility("hidden")));
#define g_file_eject_mountable IA__g_file_eject_mountable

extern __typeof (g_file_eject_mountable_finish) IA__g_file_eject_mountable_finish __attribute((visibility("hidden")));
#define g_file_eject_mountable_finish IA__g_file_eject_mountable_finish

#endif
#endif
#endif
#if IN_HEADER(__G_FILE_ENUMERATOR_H__)
#if IN_FILE(__G_FILE_ENUMERATOR_C__)
extern __typeof (g_file_enumerator_get_type) IA__g_file_enumerator_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_enumerator_get_type IA__g_file_enumerator_get_type

extern __typeof (g_file_enumerator_next_file) IA__g_file_enumerator_next_file __attribute((visibility("hidden")));
#define g_file_enumerator_next_file IA__g_file_enumerator_next_file

extern __typeof (g_file_enumerator_close) IA__g_file_enumerator_close __attribute((visibility("hidden")));
#define g_file_enumerator_close IA__g_file_enumerator_close

extern __typeof (g_file_enumerator_next_files_async) IA__g_file_enumerator_next_files_async __attribute((visibility("hidden")));
#define g_file_enumerator_next_files_async IA__g_file_enumerator_next_files_async

extern __typeof (g_file_enumerator_next_files_finish) IA__g_file_enumerator_next_files_finish __attribute((visibility("hidden")));
#define g_file_enumerator_next_files_finish IA__g_file_enumerator_next_files_finish

extern __typeof (g_file_enumerator_close_async) IA__g_file_enumerator_close_async __attribute((visibility("hidden")));
#define g_file_enumerator_close_async IA__g_file_enumerator_close_async

extern __typeof (g_file_enumerator_close_finish) IA__g_file_enumerator_close_finish __attribute((visibility("hidden")));
#define g_file_enumerator_close_finish IA__g_file_enumerator_close_finish

extern __typeof (g_file_enumerator_is_closed) IA__g_file_enumerator_is_closed __attribute((visibility("hidden")));
#define g_file_enumerator_is_closed IA__g_file_enumerator_is_closed

extern __typeof (g_file_enumerator_has_pending) IA__g_file_enumerator_has_pending __attribute((visibility("hidden")));
#define g_file_enumerator_has_pending IA__g_file_enumerator_has_pending

extern __typeof (g_file_enumerator_set_pending) IA__g_file_enumerator_set_pending __attribute((visibility("hidden")));
#define g_file_enumerator_set_pending IA__g_file_enumerator_set_pending

extern __typeof (g_file_enumerator_get_container) IA__g_file_enumerator_get_container __attribute((visibility("hidden")));
#define g_file_enumerator_get_container IA__g_file_enumerator_get_container

#endif
#endif
#if IN_HEADER(__G_FILE_ICON_H__)
#if IN_FILE(__G_FILE_ICON_C__)
extern __typeof (g_file_icon_get_type) IA__g_file_icon_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_icon_get_type IA__g_file_icon_get_type

extern __typeof (g_file_icon_new) IA__g_file_icon_new __attribute((visibility("hidden")));
#define g_file_icon_new IA__g_file_icon_new

extern __typeof (g_file_icon_get_file) IA__g_file_icon_get_file __attribute((visibility("hidden")));
#define g_file_icon_get_file IA__g_file_icon_get_file

#endif
#endif
#if IN_HEADER(__G_FILE_INFO_H__)
#if IN_FILE(__G_FILE_INFO_C__)
extern __typeof (g_file_info_get_type) IA__g_file_info_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_file_info_get_type IA__g_file_info_get_type

extern __typeof (g_file_info_new) IA__g_file_info_new __attribute((visibility("hidden")));
#define g_file_info_new IA__g_file_info_new

extern __typeof (g_file_info_dup) IA__g_file_info_dup __attribute((visibility("hidden")));
#define g_file_info_dup IA__g_file_info_dup

extern __typeof (g_file_info_copy_into) IA__g_file_info_copy_into __attribute((visibility("hidden")));
#define g_file_info_copy_into IA__g_file_info_copy_into

extern __typeof (g_file_info_has_attribute) IA__g_file_info_has_attribute __attribute((visibility("hidden")));
#define g_file_info_has_attribute IA__g_file_info_has_attribute

extern __typeof (g_file_info_has_namespace) IA__g_file_info_has_namespace __attribute((visibility("hidden")));
#define g_file_info_has_namespace IA__g_file_info_has_namespace

extern __typeof (g_file_info_list_attributes) IA__g_file_info_list_attributes __attribute((visibility("hidden")));
#define g_file_info_list_attributes IA__g_file_info_list_attributes

extern __typeof (g_file_info_get_attribute_type) IA__g_file_info_get_attribute_type __attribute((visibility("hidden")));
#define g_file_info_get_attribute_type IA__g_file_info_get_attribute_type

extern __typeof (g_file_info_remove_attribute) IA__g_file_info_remove_attribute __attribute((visibility("hidden")));
#define g_file_info_remove_attribute IA__g_file_info_remove_attribute

extern __typeof (g_file_info_get_attribute_status) IA__g_file_info_get_attribute_status __attribute((visibility("hidden")));
#define g_file_info_get_attribute_status IA__g_file_info_get_attribute_status

extern __typeof (g_file_info_get_attribute_data) IA__g_file_info_get_attribute_data __attribute((visibility("hidden")));
#define g_file_info_get_attribute_data IA__g_file_info_get_attribute_data

extern __typeof (g_file_info_get_attribute_as_string) IA__g_file_info_get_attribute_as_string __attribute((visibility("hidden")));
#define g_file_info_get_attribute_as_string IA__g_file_info_get_attribute_as_string

extern __typeof (g_file_info_get_attribute_string) IA__g_file_info_get_attribute_string __attribute((visibility("hidden")));
#define g_file_info_get_attribute_string IA__g_file_info_get_attribute_string

extern __typeof (g_file_info_get_attribute_byte_string) IA__g_file_info_get_attribute_byte_string __attribute((visibility("hidden")));
#define g_file_info_get_attribute_byte_string IA__g_file_info_get_attribute_byte_string

extern __typeof (g_file_info_get_attribute_boolean) IA__g_file_info_get_attribute_boolean __attribute((visibility("hidden")));
#define g_file_info_get_attribute_boolean IA__g_file_info_get_attribute_boolean

extern __typeof (g_file_info_get_attribute_uint32) IA__g_file_info_get_attribute_uint32 __attribute((visibility("hidden")));
#define g_file_info_get_attribute_uint32 IA__g_file_info_get_attribute_uint32

extern __typeof (g_file_info_get_attribute_int32) IA__g_file_info_get_attribute_int32 __attribute((visibility("hidden")));
#define g_file_info_get_attribute_int32 IA__g_file_info_get_attribute_int32

extern __typeof (g_file_info_get_attribute_uint64) IA__g_file_info_get_attribute_uint64 __attribute((visibility("hidden")));
#define g_file_info_get_attribute_uint64 IA__g_file_info_get_attribute_uint64

extern __typeof (g_file_info_get_attribute_int64) IA__g_file_info_get_attribute_int64 __attribute((visibility("hidden")));
#define g_file_info_get_attribute_int64 IA__g_file_info_get_attribute_int64

extern __typeof (g_file_info_get_attribute_object) IA__g_file_info_get_attribute_object __attribute((visibility("hidden")));
#define g_file_info_get_attribute_object IA__g_file_info_get_attribute_object

extern __typeof (g_file_info_get_attribute_stringv) IA__g_file_info_get_attribute_stringv __attribute((visibility("hidden")));
#define g_file_info_get_attribute_stringv IA__g_file_info_get_attribute_stringv

extern __typeof (g_file_info_set_attribute_status) IA__g_file_info_set_attribute_status __attribute((visibility("hidden")));
#define g_file_info_set_attribute_status IA__g_file_info_set_attribute_status

extern __typeof (g_file_info_set_attribute) IA__g_file_info_set_attribute __attribute((visibility("hidden")));
#define g_file_info_set_attribute IA__g_file_info_set_attribute

extern __typeof (g_file_info_set_attribute_string) IA__g_file_info_set_attribute_string __attribute((visibility("hidden")));
#define g_file_info_set_attribute_string IA__g_file_info_set_attribute_string

extern __typeof (g_file_info_set_attribute_byte_string) IA__g_file_info_set_attribute_byte_string __attribute((visibility("hidden")));
#define g_file_info_set_attribute_byte_string IA__g_file_info_set_attribute_byte_string

extern __typeof (g_file_info_set_attribute_boolean) IA__g_file_info_set_attribute_boolean __attribute((visibility("hidden")));
#define g_file_info_set_attribute_boolean IA__g_file_info_set_attribute_boolean

extern __typeof (g_file_info_set_attribute_uint32) IA__g_file_info_set_attribute_uint32 __attribute((visibility("hidden")));
#define g_file_info_set_attribute_uint32 IA__g_file_info_set_attribute_uint32

extern __typeof (g_file_info_set_attribute_int32) IA__g_file_info_set_attribute_int32 __attribute((visibility("hidden")));
#define g_file_info_set_attribute_int32 IA__g_file_info_set_attribute_int32

extern __typeof (g_file_info_set_attribute_uint64) IA__g_file_info_set_attribute_uint64 __attribute((visibility("hidden")));
#define g_file_info_set_attribute_uint64 IA__g_file_info_set_attribute_uint64

extern __typeof (g_file_info_set_attribute_int64) IA__g_file_info_set_attribute_int64 __attribute((visibility("hidden")));
#define g_file_info_set_attribute_int64 IA__g_file_info_set_attribute_int64

extern __typeof (g_file_info_set_attribute_object) IA__g_file_info_set_attribute_object __attribute((visibility("hidden")));
#define g_file_info_set_attribute_object IA__g_file_info_set_attribute_object

extern __typeof (g_file_info_set_attribute_stringv) IA__g_file_info_set_attribute_stringv __attribute((visibility("hidden")));
#define g_file_info_set_attribute_stringv IA__g_file_info_set_attribute_stringv

extern __typeof (g_file_info_clear_status) IA__g_file_info_clear_status __attribute((visibility("hidden")));
#define g_file_info_clear_status IA__g_file_info_clear_status

extern __typeof (g_file_info_get_file_type) IA__g_file_info_get_file_type __attribute((visibility("hidden")));
#define g_file_info_get_file_type IA__g_file_info_get_file_type

extern __typeof (g_file_info_get_is_hidden) IA__g_file_info_get_is_hidden __attribute((visibility("hidden")));
#define g_file_info_get_is_hidden IA__g_file_info_get_is_hidden

extern __typeof (g_file_info_get_is_backup) IA__g_file_info_get_is_backup __attribute((visibility("hidden")));
#define g_file_info_get_is_backup IA__g_file_info_get_is_backup

extern __typeof (g_file_info_get_is_symlink) IA__g_file_info_get_is_symlink __attribute((visibility("hidden")));
#define g_file_info_get_is_symlink IA__g_file_info_get_is_symlink

extern __typeof (g_file_info_get_name) IA__g_file_info_get_name __attribute((visibility("hidden")));
#define g_file_info_get_name IA__g_file_info_get_name

extern __typeof (g_file_info_get_display_name) IA__g_file_info_get_display_name __attribute((visibility("hidden")));
#define g_file_info_get_display_name IA__g_file_info_get_display_name

extern __typeof (g_file_info_get_edit_name) IA__g_file_info_get_edit_name __attribute((visibility("hidden")));
#define g_file_info_get_edit_name IA__g_file_info_get_edit_name

extern __typeof (g_file_info_get_icon) IA__g_file_info_get_icon __attribute((visibility("hidden")));
#define g_file_info_get_icon IA__g_file_info_get_icon

extern __typeof (g_file_info_get_content_type) IA__g_file_info_get_content_type __attribute((visibility("hidden")));
#define g_file_info_get_content_type IA__g_file_info_get_content_type

extern __typeof (g_file_info_get_size) IA__g_file_info_get_size __attribute((visibility("hidden")));
#define g_file_info_get_size IA__g_file_info_get_size

extern __typeof (g_file_info_get_modification_time) IA__g_file_info_get_modification_time __attribute((visibility("hidden")));
#define g_file_info_get_modification_time IA__g_file_info_get_modification_time

extern __typeof (g_file_info_get_symlink_target) IA__g_file_info_get_symlink_target __attribute((visibility("hidden")));
#define g_file_info_get_symlink_target IA__g_file_info_get_symlink_target

extern __typeof (g_file_info_get_etag) IA__g_file_info_get_etag __attribute((visibility("hidden")));
#define g_file_info_get_etag IA__g_file_info_get_etag

extern __typeof (g_file_info_get_sort_order) IA__g_file_info_get_sort_order __attribute((visibility("hidden")));
#define g_file_info_get_sort_order IA__g_file_info_get_sort_order

extern __typeof (g_file_info_set_attribute_mask) IA__g_file_info_set_attribute_mask __attribute((visibility("hidden")));
#define g_file_info_set_attribute_mask IA__g_file_info_set_attribute_mask

extern __typeof (g_file_info_unset_attribute_mask) IA__g_file_info_unset_attribute_mask __attribute((visibility("hidden")));
#define g_file_info_unset_attribute_mask IA__g_file_info_unset_attribute_mask

extern __typeof (g_file_info_set_file_type) IA__g_file_info_set_file_type __attribute((visibility("hidden")));
#define g_file_info_set_file_type IA__g_file_info_set_file_type

extern __typeof (g_file_info_set_is_hidden) IA__g_file_info_set_is_hidden __attribute((visibility("hidden")));
#define g_file_info_set_is_hidden IA__g_file_info_set_is_hidden

extern __typeof (g_file_info_set_is_symlink) IA__g_file_info_set_is_symlink __attribute((visibility("hidden")));
#define g_file_info_set_is_symlink IA__g_file_info_set_is_symlink

extern __typeof (g_file_info_set_name) IA__g_file_info_set_name __attribute((visibility("hidden")));
#define g_file_info_set_name IA__g_file_info_set_name

extern __typeof (g_file_info_set_display_name) IA__g_file_info_set_display_name __attribute((visibility("hidden")));
#define g_file_info_set_display_name IA__g_file_info_set_display_name

extern __typeof (g_file_info_set_edit_name) IA__g_file_info_set_edit_name __attribute((visibility("hidden")));
#define g_file_info_set_edit_name IA__g_file_info_set_edit_name

extern __typeof (g_file_info_set_icon) IA__g_file_info_set_icon __attribute((visibility("hidden")));
#define g_file_info_set_icon IA__g_file_info_set_icon

extern __typeof (g_file_info_set_content_type) IA__g_file_info_set_content_type __attribute((visibility("hidden")));
#define g_file_info_set_content_type IA__g_file_info_set_content_type

extern __typeof (g_file_info_set_size) IA__g_file_info_set_size __attribute((visibility("hidden")));
#define g_file_info_set_size IA__g_file_info_set_size

extern __typeof (g_file_info_set_modification_time) IA__g_file_info_set_modification_time __attribute((visibility("hidden")));
#define g_file_info_set_modification_time IA__g_file_info_set_modification_time

extern __typeof (g_file_info_set_symlink_target) IA__g_file_info_set_symlink_target __attribute((visibility("hidden")));
#define g_file_info_set_symlink_target IA__g_file_info_set_symlink_target

extern __typeof (g_file_info_set_sort_order) IA__g_file_info_set_sort_order __attribute((visibility("hidden")));
#define g_file_info_set_sort_order IA__g_file_info_set_sort_order

extern __typeof (g_file_attribute_matcher_new) IA__g_file_attribute_matcher_new __attribute((visibility("hidden")));
#define g_file_attribute_matcher_new IA__g_file_attribute_matcher_new

extern __typeof (g_file_attribute_matcher_ref) IA__g_file_attribute_matcher_ref __attribute((visibility("hidden")));
#define g_file_attribute_matcher_ref IA__g_file_attribute_matcher_ref

extern __typeof (g_file_attribute_matcher_unref) IA__g_file_attribute_matcher_unref __attribute((visibility("hidden")));
#define g_file_attribute_matcher_unref IA__g_file_attribute_matcher_unref

extern __typeof (g_file_attribute_matcher_matches) IA__g_file_attribute_matcher_matches __attribute((visibility("hidden")));
#define g_file_attribute_matcher_matches IA__g_file_attribute_matcher_matches

extern __typeof (g_file_attribute_matcher_matches_only) IA__g_file_attribute_matcher_matches_only __attribute((visibility("hidden")));
#define g_file_attribute_matcher_matches_only IA__g_file_attribute_matcher_matches_only

extern __typeof (g_file_attribute_matcher_enumerate_namespace) IA__g_file_attribute_matcher_enumerate_namespace __attribute((visibility("hidden")));
#define g_file_attribute_matcher_enumerate_namespace IA__g_file_attribute_matcher_enumerate_namespace

extern __typeof (g_file_attribute_matcher_enumerate_next) IA__g_file_attribute_matcher_enumerate_next __attribute((visibility("hidden")));
#define g_file_attribute_matcher_enumerate_next IA__g_file_attribute_matcher_enumerate_next

#endif
#endif
#if IN_HEADER(__G_FILE_INPUT_STREAM_H__)
#if IN_FILE(__G_FILE_INPUT_STREAM_C__)
extern __typeof (g_file_input_stream_get_type) IA__g_file_input_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_file_input_stream_get_type IA__g_file_input_stream_get_type

extern __typeof (g_file_input_stream_query_info) IA__g_file_input_stream_query_info __attribute((visibility("hidden")));
#define g_file_input_stream_query_info IA__g_file_input_stream_query_info

extern __typeof (g_file_input_stream_query_info_async) IA__g_file_input_stream_query_info_async __attribute((visibility("hidden")));
#define g_file_input_stream_query_info_async IA__g_file_input_stream_query_info_async

extern __typeof (g_file_input_stream_query_info_finish) IA__g_file_input_stream_query_info_finish __attribute((visibility("hidden")));
#define g_file_input_stream_query_info_finish IA__g_file_input_stream_query_info_finish

#endif
#endif
#if IN_HEADER(__G_FILE_MONITOR_H__)
#if IN_FILE(__G_FILE_MONITOR_C__)
extern __typeof (g_file_monitor_get_type) IA__g_file_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_file_monitor_get_type IA__g_file_monitor_get_type

extern __typeof (g_file_monitor_cancel) IA__g_file_monitor_cancel __attribute((visibility("hidden")));
#define g_file_monitor_cancel IA__g_file_monitor_cancel

extern __typeof (g_file_monitor_is_cancelled) IA__g_file_monitor_is_cancelled __attribute((visibility("hidden")));
#define g_file_monitor_is_cancelled IA__g_file_monitor_is_cancelled

extern __typeof (g_file_monitor_set_rate_limit) IA__g_file_monitor_set_rate_limit __attribute((visibility("hidden")));
#define g_file_monitor_set_rate_limit IA__g_file_monitor_set_rate_limit

extern __typeof (g_file_monitor_emit_event) IA__g_file_monitor_emit_event __attribute((visibility("hidden")));
#define g_file_monitor_emit_event IA__g_file_monitor_emit_event

#endif
#endif
#if IN_HEADER(__G_FILENAME_COMPLETER_H__)
#if IN_FILE(__G_FILENAME_COMPLETER_C__)
extern __typeof (g_filename_completer_get_type) IA__g_filename_completer_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_filename_completer_get_type IA__g_filename_completer_get_type

extern __typeof (g_filename_completer_new) IA__g_filename_completer_new __attribute((visibility("hidden")));
#define g_filename_completer_new IA__g_filename_completer_new

extern __typeof (g_filename_completer_get_completion_suffix) IA__g_filename_completer_get_completion_suffix __attribute((visibility("hidden")));
#define g_filename_completer_get_completion_suffix IA__g_filename_completer_get_completion_suffix

extern __typeof (g_filename_completer_get_completions) IA__g_filename_completer_get_completions __attribute((visibility("hidden")));
#define g_filename_completer_get_completions IA__g_filename_completer_get_completions

extern __typeof (g_filename_completer_set_dirs_only) IA__g_filename_completer_set_dirs_only __attribute((visibility("hidden")));
#define g_filename_completer_set_dirs_only IA__g_filename_completer_set_dirs_only

#endif
#endif
#if IN_HEADER(__G_FILE_OUTPUT_STREAM_H__)
#if IN_FILE(__G_FILE_OUTPUT_STREAM_C__)
extern __typeof (g_file_output_stream_get_type) IA__g_file_output_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_file_output_stream_get_type IA__g_file_output_stream_get_type

extern __typeof (g_file_output_stream_query_info) IA__g_file_output_stream_query_info __attribute((visibility("hidden")));
#define g_file_output_stream_query_info IA__g_file_output_stream_query_info

extern __typeof (g_file_output_stream_query_info_async) IA__g_file_output_stream_query_info_async __attribute((visibility("hidden")));
#define g_file_output_stream_query_info_async IA__g_file_output_stream_query_info_async

extern __typeof (g_file_output_stream_query_info_finish) IA__g_file_output_stream_query_info_finish __attribute((visibility("hidden")));
#define g_file_output_stream_query_info_finish IA__g_file_output_stream_query_info_finish

extern __typeof (g_file_output_stream_get_etag) IA__g_file_output_stream_get_etag __attribute((visibility("hidden")));
#define g_file_output_stream_get_etag IA__g_file_output_stream_get_etag

#endif
#endif
#if IN_HEADER(__G_FILE_IO_STREAM_H__)
#if IN_FILE(__G_FILE_IO_STREAM_C__)
extern __typeof (g_file_io_stream_get_type) IA__g_file_io_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_file_io_stream_get_type IA__g_file_io_stream_get_type

extern __typeof (g_file_io_stream_query_info) IA__g_file_io_stream_query_info __attribute((visibility("hidden")));
#define g_file_io_stream_query_info IA__g_file_io_stream_query_info

extern __typeof (g_file_io_stream_query_info_async) IA__g_file_io_stream_query_info_async __attribute((visibility("hidden")));
#define g_file_io_stream_query_info_async IA__g_file_io_stream_query_info_async

extern __typeof (g_file_io_stream_query_info_finish) IA__g_file_io_stream_query_info_finish __attribute((visibility("hidden")));
#define g_file_io_stream_query_info_finish IA__g_file_io_stream_query_info_finish

extern __typeof (g_file_io_stream_get_etag) IA__g_file_io_stream_get_etag __attribute((visibility("hidden")));
#define g_file_io_stream_get_etag IA__g_file_io_stream_get_etag

#endif
#endif
#if IN_HEADER(__G_FILTER_INPUT_STREAM_H__)
#if IN_FILE(__G_FILTER_INPUT_STREAM_C__)
extern __typeof (g_filter_input_stream_get_type) IA__g_filter_input_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_filter_input_stream_get_type IA__g_filter_input_stream_get_type

extern __typeof (g_filter_input_stream_get_base_stream) IA__g_filter_input_stream_get_base_stream __attribute((visibility("hidden")));
#define g_filter_input_stream_get_base_stream IA__g_filter_input_stream_get_base_stream

extern __typeof (g_filter_input_stream_get_close_base_stream) IA__g_filter_input_stream_get_close_base_stream __attribute((visibility("hidden")));
#define g_filter_input_stream_get_close_base_stream IA__g_filter_input_stream_get_close_base_stream

extern __typeof (g_filter_input_stream_set_close_base_stream) IA__g_filter_input_stream_set_close_base_stream __attribute((visibility("hidden")));
#define g_filter_input_stream_set_close_base_stream IA__g_filter_input_stream_set_close_base_stream

#endif
#endif
#if IN_HEADER(__G_FILTER_OUTPUT_STREAM_H__)
#if IN_FILE(__G_FILTER_OUTPUT_STREAM_C__)
extern __typeof (g_filter_output_stream_get_type) IA__g_filter_output_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_filter_output_stream_get_type IA__g_filter_output_stream_get_type

extern __typeof (g_filter_output_stream_get_base_stream) IA__g_filter_output_stream_get_base_stream __attribute((visibility("hidden")));
#define g_filter_output_stream_get_base_stream IA__g_filter_output_stream_get_base_stream

extern __typeof (g_filter_output_stream_get_close_base_stream) IA__g_filter_output_stream_get_close_base_stream __attribute((visibility("hidden")));
#define g_filter_output_stream_get_close_base_stream IA__g_filter_output_stream_get_close_base_stream

extern __typeof (g_filter_output_stream_set_close_base_stream) IA__g_filter_output_stream_set_close_base_stream __attribute((visibility("hidden")));
#define g_filter_output_stream_set_close_base_stream IA__g_filter_output_stream_set_close_base_stream

#endif
#endif
#if IN_HEADER(__G_ICON_H__)
#if IN_FILE(__G_ICON_C__)
extern __typeof (g_icon_get_type) IA__g_icon_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_icon_get_type IA__g_icon_get_type

extern __typeof (g_icon_hash) IA__g_icon_hash __attribute((visibility("hidden")));
#define g_icon_hash IA__g_icon_hash

extern __typeof (g_icon_equal) IA__g_icon_equal __attribute((visibility("hidden")));
#define g_icon_equal IA__g_icon_equal

extern __typeof (g_icon_to_string) IA__g_icon_to_string __attribute((visibility("hidden")));
#define g_icon_to_string IA__g_icon_to_string

extern __typeof (g_icon_new_for_string) IA__g_icon_new_for_string __attribute((visibility("hidden")));
#define g_icon_new_for_string IA__g_icon_new_for_string

#endif
#endif
#if IN_HEADER(__G_INPUT_STREAM_H__)
#if IN_FILE(__G_INPUT_STREAM_C__)
extern __typeof (g_input_stream_get_type) IA__g_input_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_input_stream_get_type IA__g_input_stream_get_type

extern __typeof (g_input_stream_read) IA__g_input_stream_read __attribute((visibility("hidden")));
#define g_input_stream_read IA__g_input_stream_read

extern __typeof (g_input_stream_read_all) IA__g_input_stream_read_all __attribute((visibility("hidden")));
#define g_input_stream_read_all IA__g_input_stream_read_all

extern __typeof (g_input_stream_skip) IA__g_input_stream_skip __attribute((visibility("hidden")));
#define g_input_stream_skip IA__g_input_stream_skip

extern __typeof (g_input_stream_close) IA__g_input_stream_close __attribute((visibility("hidden")));
#define g_input_stream_close IA__g_input_stream_close

extern __typeof (g_input_stream_read_async) IA__g_input_stream_read_async __attribute((visibility("hidden")));
#define g_input_stream_read_async IA__g_input_stream_read_async

extern __typeof (g_input_stream_read_finish) IA__g_input_stream_read_finish __attribute((visibility("hidden")));
#define g_input_stream_read_finish IA__g_input_stream_read_finish

extern __typeof (g_input_stream_skip_async) IA__g_input_stream_skip_async __attribute((visibility("hidden")));
#define g_input_stream_skip_async IA__g_input_stream_skip_async

extern __typeof (g_input_stream_skip_finish) IA__g_input_stream_skip_finish __attribute((visibility("hidden")));
#define g_input_stream_skip_finish IA__g_input_stream_skip_finish

extern __typeof (g_input_stream_close_async) IA__g_input_stream_close_async __attribute((visibility("hidden")));
#define g_input_stream_close_async IA__g_input_stream_close_async

extern __typeof (g_input_stream_close_finish) IA__g_input_stream_close_finish __attribute((visibility("hidden")));
#define g_input_stream_close_finish IA__g_input_stream_close_finish

extern __typeof (g_input_stream_is_closed) IA__g_input_stream_is_closed __attribute((visibility("hidden")));
#define g_input_stream_is_closed IA__g_input_stream_is_closed

extern __typeof (g_input_stream_has_pending) IA__g_input_stream_has_pending __attribute((visibility("hidden")));
#define g_input_stream_has_pending IA__g_input_stream_has_pending

extern __typeof (g_input_stream_set_pending) IA__g_input_stream_set_pending __attribute((visibility("hidden")));
#define g_input_stream_set_pending IA__g_input_stream_set_pending

extern __typeof (g_input_stream_clear_pending) IA__g_input_stream_clear_pending __attribute((visibility("hidden")));
#define g_input_stream_clear_pending IA__g_input_stream_clear_pending

#endif
#endif
#if IN_HEADER(__G_IO_STREAM_H__)
#if IN_FILE(__G_IO_STREAM_C__)
extern __typeof (g_io_stream_get_type) IA__g_io_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_io_stream_get_type IA__g_io_stream_get_type

extern __typeof (g_io_stream_get_input_stream) IA__g_io_stream_get_input_stream __attribute((visibility("hidden")));
#define g_io_stream_get_input_stream IA__g_io_stream_get_input_stream

extern __typeof (g_io_stream_get_output_stream) IA__g_io_stream_get_output_stream __attribute((visibility("hidden")));
#define g_io_stream_get_output_stream IA__g_io_stream_get_output_stream

extern __typeof (g_io_stream_close) IA__g_io_stream_close __attribute((visibility("hidden")));
#define g_io_stream_close IA__g_io_stream_close

extern __typeof (g_io_stream_close_async) IA__g_io_stream_close_async __attribute((visibility("hidden")));
#define g_io_stream_close_async IA__g_io_stream_close_async

extern __typeof (g_io_stream_close_finish) IA__g_io_stream_close_finish __attribute((visibility("hidden")));
#define g_io_stream_close_finish IA__g_io_stream_close_finish

extern __typeof (g_io_stream_is_closed) IA__g_io_stream_is_closed __attribute((visibility("hidden")));
#define g_io_stream_is_closed IA__g_io_stream_is_closed

extern __typeof (g_io_stream_has_pending) IA__g_io_stream_has_pending __attribute((visibility("hidden")));
#define g_io_stream_has_pending IA__g_io_stream_has_pending

extern __typeof (g_io_stream_set_pending) IA__g_io_stream_set_pending __attribute((visibility("hidden")));
#define g_io_stream_set_pending IA__g_io_stream_set_pending

extern __typeof (g_io_stream_clear_pending) IA__g_io_stream_clear_pending __attribute((visibility("hidden")));
#define g_io_stream_clear_pending IA__g_io_stream_clear_pending

#endif
#endif
#if IN_HEADER(__G_IO_ERROR_H__)
#if IN_FILE(__G_IO_ERROR_C__)
extern __typeof (g_io_error_quark) IA__g_io_error_quark __attribute((visibility("hidden")));
#define g_io_error_quark IA__g_io_error_quark

extern __typeof (g_io_error_from_errno) IA__g_io_error_from_errno __attribute((visibility("hidden")));
#define g_io_error_from_errno IA__g_io_error_from_errno

#endif
#endif
#if IN_HEADER(__G_IO_MODULE_H__)
#if IN_FILE(__G_IO_MODULE_C__)
extern __typeof (g_io_module_get_type) IA__g_io_module_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_io_module_get_type IA__g_io_module_get_type

extern __typeof (g_io_module_new) IA__g_io_module_new __attribute((visibility("hidden")));
#define g_io_module_new IA__g_io_module_new

extern __typeof (g_io_modules_scan_all_in_directory) IA__g_io_modules_scan_all_in_directory __attribute((visibility("hidden")));
#define g_io_modules_scan_all_in_directory IA__g_io_modules_scan_all_in_directory

extern __typeof (g_io_modules_load_all_in_directory) IA__g_io_modules_load_all_in_directory __attribute((visibility("hidden")));
#define g_io_modules_load_all_in_directory IA__g_io_modules_load_all_in_directory

extern __typeof (g_io_extension_point_register) IA__g_io_extension_point_register __attribute((visibility("hidden")));
#define g_io_extension_point_register IA__g_io_extension_point_register

extern __typeof (g_io_extension_point_lookup) IA__g_io_extension_point_lookup __attribute((visibility("hidden")));
#define g_io_extension_point_lookup IA__g_io_extension_point_lookup

extern __typeof (g_io_extension_point_set_required_type) IA__g_io_extension_point_set_required_type __attribute((visibility("hidden")));
#define g_io_extension_point_set_required_type IA__g_io_extension_point_set_required_type

extern __typeof (g_io_extension_point_get_required_type) IA__g_io_extension_point_get_required_type __attribute((visibility("hidden")));
#define g_io_extension_point_get_required_type IA__g_io_extension_point_get_required_type

extern __typeof (g_io_extension_point_get_extensions) IA__g_io_extension_point_get_extensions __attribute((visibility("hidden")));
#define g_io_extension_point_get_extensions IA__g_io_extension_point_get_extensions

extern __typeof (g_io_extension_point_get_extension_by_name) IA__g_io_extension_point_get_extension_by_name __attribute((visibility("hidden")));
#define g_io_extension_point_get_extension_by_name IA__g_io_extension_point_get_extension_by_name

extern __typeof (g_io_extension_point_implement) IA__g_io_extension_point_implement __attribute((visibility("hidden")));
#define g_io_extension_point_implement IA__g_io_extension_point_implement

extern __typeof (g_io_extension_get_type) IA__g_io_extension_get_type __attribute((visibility("hidden")));
#define g_io_extension_get_type IA__g_io_extension_get_type

extern __typeof (g_io_extension_get_name) IA__g_io_extension_get_name __attribute((visibility("hidden")));
#define g_io_extension_get_name IA__g_io_extension_get_name

extern __typeof (g_io_extension_get_priority) IA__g_io_extension_get_priority __attribute((visibility("hidden")));
#define g_io_extension_get_priority IA__g_io_extension_get_priority

extern __typeof (g_io_extension_ref_class) IA__g_io_extension_ref_class __attribute((visibility("hidden")));
#define g_io_extension_ref_class IA__g_io_extension_ref_class

#endif
#endif
#if IN_HEADER(__G_IO_SCHEDULER_H__)
#if IN_FILE(__G_IO_SCHEDULER_C__)
extern __typeof (g_io_scheduler_push_job) IA__g_io_scheduler_push_job __attribute((visibility("hidden")));
#define g_io_scheduler_push_job IA__g_io_scheduler_push_job

extern __typeof (g_io_scheduler_cancel_all_jobs) IA__g_io_scheduler_cancel_all_jobs __attribute((visibility("hidden")));
#define g_io_scheduler_cancel_all_jobs IA__g_io_scheduler_cancel_all_jobs

extern __typeof (g_io_scheduler_job_send_to_mainloop) IA__g_io_scheduler_job_send_to_mainloop __attribute((visibility("hidden")));
#define g_io_scheduler_job_send_to_mainloop IA__g_io_scheduler_job_send_to_mainloop

extern __typeof (g_io_scheduler_job_send_to_mainloop_async) IA__g_io_scheduler_job_send_to_mainloop_async __attribute((visibility("hidden")));
#define g_io_scheduler_job_send_to_mainloop_async IA__g_io_scheduler_job_send_to_mainloop_async

#endif
#endif
#if IN_HEADER(__G_LOADABLE_ICON_H__)
#if IN_FILE(__G_LOADABLE_ICON_C__)
extern __typeof (g_loadable_icon_get_type) IA__g_loadable_icon_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_loadable_icon_get_type IA__g_loadable_icon_get_type

extern __typeof (g_loadable_icon_load) IA__g_loadable_icon_load __attribute((visibility("hidden")));
#define g_loadable_icon_load IA__g_loadable_icon_load

extern __typeof (g_loadable_icon_load_async) IA__g_loadable_icon_load_async __attribute((visibility("hidden")));
#define g_loadable_icon_load_async IA__g_loadable_icon_load_async

extern __typeof (g_loadable_icon_load_finish) IA__g_loadable_icon_load_finish __attribute((visibility("hidden")));
#define g_loadable_icon_load_finish IA__g_loadable_icon_load_finish

#endif
#endif
#if IN_HEADER(__G_MEMORY_INPUT_STREAM_H__)
#if IN_FILE(__G_MEMORY_INPUT_STREAM_C__)
extern __typeof (g_memory_input_stream_get_type) IA__g_memory_input_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_memory_input_stream_get_type IA__g_memory_input_stream_get_type

extern __typeof (g_memory_input_stream_new) IA__g_memory_input_stream_new __attribute((visibility("hidden")));
#define g_memory_input_stream_new IA__g_memory_input_stream_new

extern __typeof (g_memory_input_stream_new_from_data) IA__g_memory_input_stream_new_from_data __attribute((visibility("hidden")));
#define g_memory_input_stream_new_from_data IA__g_memory_input_stream_new_from_data

extern __typeof (g_memory_input_stream_add_data) IA__g_memory_input_stream_add_data __attribute((visibility("hidden")));
#define g_memory_input_stream_add_data IA__g_memory_input_stream_add_data

#endif
#endif
#if IN_HEADER(__G_MEMORY_OUTPUT_STREAM_H__)
#if IN_FILE(__G_MEMORY_OUTPUT_STREAM_C__)
extern __typeof (g_memory_output_stream_get_type) IA__g_memory_output_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_memory_output_stream_get_type IA__g_memory_output_stream_get_type

extern __typeof (g_memory_output_stream_new) IA__g_memory_output_stream_new __attribute((visibility("hidden")));
#define g_memory_output_stream_new IA__g_memory_output_stream_new

extern __typeof (g_memory_output_stream_get_data) IA__g_memory_output_stream_get_data __attribute((visibility("hidden")));
#define g_memory_output_stream_get_data IA__g_memory_output_stream_get_data

extern __typeof (g_memory_output_stream_get_data_size) IA__g_memory_output_stream_get_data_size __attribute((visibility("hidden")));
#define g_memory_output_stream_get_data_size IA__g_memory_output_stream_get_data_size

extern __typeof (g_memory_output_stream_get_size) IA__g_memory_output_stream_get_size __attribute((visibility("hidden")));
#define g_memory_output_stream_get_size IA__g_memory_output_stream_get_size

#endif
#endif
#if IN_HEADER(__G_MOUNT_OPERATION_H__)
#if IN_FILE(__G_MOUNT_OPERATION_C__)
extern __typeof (g_mount_operation_get_type) IA__g_mount_operation_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_mount_operation_get_type IA__g_mount_operation_get_type

extern __typeof (g_mount_operation_new) IA__g_mount_operation_new __attribute((visibility("hidden")));
#define g_mount_operation_new IA__g_mount_operation_new

extern __typeof (g_mount_operation_get_username) IA__g_mount_operation_get_username __attribute((visibility("hidden")));
#define g_mount_operation_get_username IA__g_mount_operation_get_username

extern __typeof (g_mount_operation_set_username) IA__g_mount_operation_set_username __attribute((visibility("hidden")));
#define g_mount_operation_set_username IA__g_mount_operation_set_username

extern __typeof (g_mount_operation_get_password) IA__g_mount_operation_get_password __attribute((visibility("hidden")));
#define g_mount_operation_get_password IA__g_mount_operation_get_password

extern __typeof (g_mount_operation_set_password) IA__g_mount_operation_set_password __attribute((visibility("hidden")));
#define g_mount_operation_set_password IA__g_mount_operation_set_password

extern __typeof (g_mount_operation_get_anonymous) IA__g_mount_operation_get_anonymous __attribute((visibility("hidden")));
#define g_mount_operation_get_anonymous IA__g_mount_operation_get_anonymous

extern __typeof (g_mount_operation_set_anonymous) IA__g_mount_operation_set_anonymous __attribute((visibility("hidden")));
#define g_mount_operation_set_anonymous IA__g_mount_operation_set_anonymous

extern __typeof (g_mount_operation_get_domain) IA__g_mount_operation_get_domain __attribute((visibility("hidden")));
#define g_mount_operation_get_domain IA__g_mount_operation_get_domain

extern __typeof (g_mount_operation_set_domain) IA__g_mount_operation_set_domain __attribute((visibility("hidden")));
#define g_mount_operation_set_domain IA__g_mount_operation_set_domain

extern __typeof (g_mount_operation_get_password_save) IA__g_mount_operation_get_password_save __attribute((visibility("hidden")));
#define g_mount_operation_get_password_save IA__g_mount_operation_get_password_save

extern __typeof (g_mount_operation_set_password_save) IA__g_mount_operation_set_password_save __attribute((visibility("hidden")));
#define g_mount_operation_set_password_save IA__g_mount_operation_set_password_save

extern __typeof (g_mount_operation_get_choice) IA__g_mount_operation_get_choice __attribute((visibility("hidden")));
#define g_mount_operation_get_choice IA__g_mount_operation_get_choice

extern __typeof (g_mount_operation_set_choice) IA__g_mount_operation_set_choice __attribute((visibility("hidden")));
#define g_mount_operation_set_choice IA__g_mount_operation_set_choice

extern __typeof (g_mount_operation_reply) IA__g_mount_operation_reply __attribute((visibility("hidden")));
#define g_mount_operation_reply IA__g_mount_operation_reply

#endif
#endif
#if IN_HEADER(__G_OUTPUT_STREAM_H__)
#if IN_FILE(__G_OUTPUT_STREAM_C__)
extern __typeof (g_output_stream_get_type) IA__g_output_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_output_stream_get_type IA__g_output_stream_get_type

extern __typeof (g_output_stream_write) IA__g_output_stream_write __attribute((visibility("hidden")));
#define g_output_stream_write IA__g_output_stream_write

extern __typeof (g_output_stream_write_all) IA__g_output_stream_write_all __attribute((visibility("hidden")));
#define g_output_stream_write_all IA__g_output_stream_write_all

extern __typeof (g_output_stream_splice) IA__g_output_stream_splice __attribute((visibility("hidden")));
#define g_output_stream_splice IA__g_output_stream_splice

extern __typeof (g_output_stream_flush) IA__g_output_stream_flush __attribute((visibility("hidden")));
#define g_output_stream_flush IA__g_output_stream_flush

extern __typeof (g_output_stream_close) IA__g_output_stream_close __attribute((visibility("hidden")));
#define g_output_stream_close IA__g_output_stream_close

extern __typeof (g_output_stream_write_async) IA__g_output_stream_write_async __attribute((visibility("hidden")));
#define g_output_stream_write_async IA__g_output_stream_write_async

extern __typeof (g_output_stream_write_finish) IA__g_output_stream_write_finish __attribute((visibility("hidden")));
#define g_output_stream_write_finish IA__g_output_stream_write_finish

extern __typeof (g_output_stream_splice_async) IA__g_output_stream_splice_async __attribute((visibility("hidden")));
#define g_output_stream_splice_async IA__g_output_stream_splice_async

extern __typeof (g_output_stream_splice_finish) IA__g_output_stream_splice_finish __attribute((visibility("hidden")));
#define g_output_stream_splice_finish IA__g_output_stream_splice_finish

extern __typeof (g_output_stream_flush_async) IA__g_output_stream_flush_async __attribute((visibility("hidden")));
#define g_output_stream_flush_async IA__g_output_stream_flush_async

extern __typeof (g_output_stream_flush_finish) IA__g_output_stream_flush_finish __attribute((visibility("hidden")));
#define g_output_stream_flush_finish IA__g_output_stream_flush_finish

extern __typeof (g_output_stream_close_async) IA__g_output_stream_close_async __attribute((visibility("hidden")));
#define g_output_stream_close_async IA__g_output_stream_close_async

extern __typeof (g_output_stream_close_finish) IA__g_output_stream_close_finish __attribute((visibility("hidden")));
#define g_output_stream_close_finish IA__g_output_stream_close_finish

extern __typeof (g_output_stream_is_closed) IA__g_output_stream_is_closed __attribute((visibility("hidden")));
#define g_output_stream_is_closed IA__g_output_stream_is_closed

extern __typeof (g_output_stream_is_closing) IA__g_output_stream_is_closing __attribute((visibility("hidden")));
#define g_output_stream_is_closing IA__g_output_stream_is_closing

extern __typeof (g_output_stream_has_pending) IA__g_output_stream_has_pending __attribute((visibility("hidden")));
#define g_output_stream_has_pending IA__g_output_stream_has_pending

extern __typeof (g_output_stream_set_pending) IA__g_output_stream_set_pending __attribute((visibility("hidden")));
#define g_output_stream_set_pending IA__g_output_stream_set_pending

extern __typeof (g_output_stream_clear_pending) IA__g_output_stream_clear_pending __attribute((visibility("hidden")));
#define g_output_stream_clear_pending IA__g_output_stream_clear_pending

#endif
#endif
#if IN_HEADER(__G_SEEKABLE_H__)
#if IN_FILE(__G_SEEKABLE_C__)
extern __typeof (g_seekable_get_type) IA__g_seekable_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_seekable_get_type IA__g_seekable_get_type

extern __typeof (g_seekable_tell) IA__g_seekable_tell __attribute((visibility("hidden")));
#define g_seekable_tell IA__g_seekable_tell

extern __typeof (g_seekable_can_seek) IA__g_seekable_can_seek __attribute((visibility("hidden")));
#define g_seekable_can_seek IA__g_seekable_can_seek

extern __typeof (g_seekable_seek) IA__g_seekable_seek __attribute((visibility("hidden")));
#define g_seekable_seek IA__g_seekable_seek

extern __typeof (g_seekable_can_truncate) IA__g_seekable_can_truncate __attribute((visibility("hidden")));
#define g_seekable_can_truncate IA__g_seekable_can_truncate

extern __typeof (g_seekable_truncate) IA__g_seekable_truncate __attribute((visibility("hidden")));
#define g_seekable_truncate IA__g_seekable_truncate

#endif
#endif
#if IN_HEADER(__G_SIMPLE_ASYNC_RESULT_H__)
#if IN_FILE(__G_SIMPLE_ASYNC_RESULT_C__)
extern __typeof (g_simple_async_result_get_type) IA__g_simple_async_result_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_simple_async_result_get_type IA__g_simple_async_result_get_type

extern __typeof (g_simple_async_result_new) IA__g_simple_async_result_new __attribute((visibility("hidden")));
#define g_simple_async_result_new IA__g_simple_async_result_new

extern __typeof (g_simple_async_result_new_error) IA__g_simple_async_result_new_error __attribute((visibility("hidden")));
#define g_simple_async_result_new_error IA__g_simple_async_result_new_error

extern __typeof (g_simple_async_result_new_from_error) IA__g_simple_async_result_new_from_error __attribute((visibility("hidden")));
#define g_simple_async_result_new_from_error IA__g_simple_async_result_new_from_error

extern __typeof (g_simple_async_result_set_op_res_gpointer) IA__g_simple_async_result_set_op_res_gpointer __attribute((visibility("hidden")));
#define g_simple_async_result_set_op_res_gpointer IA__g_simple_async_result_set_op_res_gpointer

extern __typeof (g_simple_async_result_get_op_res_gpointer) IA__g_simple_async_result_get_op_res_gpointer __attribute((visibility("hidden")));
#define g_simple_async_result_get_op_res_gpointer IA__g_simple_async_result_get_op_res_gpointer

extern __typeof (g_simple_async_result_set_op_res_gssize) IA__g_simple_async_result_set_op_res_gssize __attribute((visibility("hidden")));
#define g_simple_async_result_set_op_res_gssize IA__g_simple_async_result_set_op_res_gssize

extern __typeof (g_simple_async_result_get_op_res_gssize) IA__g_simple_async_result_get_op_res_gssize __attribute((visibility("hidden")));
#define g_simple_async_result_get_op_res_gssize IA__g_simple_async_result_get_op_res_gssize

extern __typeof (g_simple_async_result_set_op_res_gboolean) IA__g_simple_async_result_set_op_res_gboolean __attribute((visibility("hidden")));
#define g_simple_async_result_set_op_res_gboolean IA__g_simple_async_result_set_op_res_gboolean

extern __typeof (g_simple_async_result_get_op_res_gboolean) IA__g_simple_async_result_get_op_res_gboolean __attribute((visibility("hidden")));
#define g_simple_async_result_get_op_res_gboolean IA__g_simple_async_result_get_op_res_gboolean

extern __typeof (g_simple_async_result_get_source_tag) IA__g_simple_async_result_get_source_tag __attribute((visibility("hidden")));
#define g_simple_async_result_get_source_tag IA__g_simple_async_result_get_source_tag

extern __typeof (g_simple_async_result_set_handle_cancellation) IA__g_simple_async_result_set_handle_cancellation __attribute((visibility("hidden")));
#define g_simple_async_result_set_handle_cancellation IA__g_simple_async_result_set_handle_cancellation

extern __typeof (g_simple_async_result_complete) IA__g_simple_async_result_complete __attribute((visibility("hidden")));
#define g_simple_async_result_complete IA__g_simple_async_result_complete

extern __typeof (g_simple_async_result_complete_in_idle) IA__g_simple_async_result_complete_in_idle __attribute((visibility("hidden")));
#define g_simple_async_result_complete_in_idle IA__g_simple_async_result_complete_in_idle

extern __typeof (g_simple_async_result_run_in_thread) IA__g_simple_async_result_run_in_thread __attribute((visibility("hidden")));
#define g_simple_async_result_run_in_thread IA__g_simple_async_result_run_in_thread

extern __typeof (g_simple_async_result_set_from_error) IA__g_simple_async_result_set_from_error __attribute((visibility("hidden")));
#define g_simple_async_result_set_from_error IA__g_simple_async_result_set_from_error

extern __typeof (g_simple_async_result_propagate_error) IA__g_simple_async_result_propagate_error __attribute((visibility("hidden")));
#define g_simple_async_result_propagate_error IA__g_simple_async_result_propagate_error

extern __typeof (g_simple_async_result_set_error) IA__g_simple_async_result_set_error __attribute((visibility("hidden")));
#define g_simple_async_result_set_error IA__g_simple_async_result_set_error

extern __typeof (g_simple_async_result_set_error_va) IA__g_simple_async_result_set_error_va __attribute((visibility("hidden")));
#define g_simple_async_result_set_error_va IA__g_simple_async_result_set_error_va

extern __typeof (g_simple_async_result_is_valid) IA__g_simple_async_result_is_valid __attribute((visibility("hidden")));
#define g_simple_async_result_is_valid IA__g_simple_async_result_is_valid

extern __typeof (g_simple_async_report_error_in_idle) IA__g_simple_async_report_error_in_idle __attribute((visibility("hidden")));
#define g_simple_async_report_error_in_idle IA__g_simple_async_report_error_in_idle

extern __typeof (g_simple_async_report_gerror_in_idle) IA__g_simple_async_report_gerror_in_idle __attribute((visibility("hidden")));
#define g_simple_async_report_gerror_in_idle IA__g_simple_async_report_gerror_in_idle

#endif
#endif
#if IN_HEADER(__G_THEMED_ICON_H__)
#if IN_FILE(__G_THEMED_ICON_C__)
extern __typeof (g_themed_icon_get_type) IA__g_themed_icon_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_themed_icon_get_type IA__g_themed_icon_get_type

extern __typeof (g_themed_icon_new) IA__g_themed_icon_new __attribute((visibility("hidden")));
#define g_themed_icon_new IA__g_themed_icon_new

extern __typeof (g_themed_icon_new_with_default_fallbacks) IA__g_themed_icon_new_with_default_fallbacks __attribute((visibility("hidden")));
#define g_themed_icon_new_with_default_fallbacks IA__g_themed_icon_new_with_default_fallbacks

extern __typeof (g_themed_icon_new_from_names) IA__g_themed_icon_new_from_names __attribute((visibility("hidden")));
#define g_themed_icon_new_from_names IA__g_themed_icon_new_from_names

extern __typeof (g_themed_icon_get_names) IA__g_themed_icon_get_names __attribute((visibility("hidden")));
#define g_themed_icon_get_names IA__g_themed_icon_get_names

extern __typeof (g_themed_icon_prepend_name) IA__g_themed_icon_prepend_name __attribute((visibility("hidden")));
#define g_themed_icon_prepend_name IA__g_themed_icon_prepend_name

extern __typeof (g_themed_icon_append_name) IA__g_themed_icon_append_name __attribute((visibility("hidden")));
#define g_themed_icon_append_name IA__g_themed_icon_append_name

#endif
#endif
#if IN_HEADER(__G_UNIX_MOUNTS_H__)
#if IN_FILE(__G_UNIX_MOUNTS_C__)
#ifdef G_OS_UNIX
extern __typeof (g_unix_mount_free) IA__g_unix_mount_free __attribute((visibility("hidden")));
#define g_unix_mount_free IA__g_unix_mount_free

extern __typeof (g_unix_mount_point_free) IA__g_unix_mount_point_free __attribute((visibility("hidden")));
#define g_unix_mount_point_free IA__g_unix_mount_point_free

extern __typeof (g_unix_mount_compare) IA__g_unix_mount_compare __attribute((visibility("hidden")));
#define g_unix_mount_compare IA__g_unix_mount_compare

extern __typeof (g_unix_mount_get_mount_path) IA__g_unix_mount_get_mount_path __attribute((visibility("hidden")));
#define g_unix_mount_get_mount_path IA__g_unix_mount_get_mount_path

extern __typeof (g_unix_mount_get_device_path) IA__g_unix_mount_get_device_path __attribute((visibility("hidden")));
#define g_unix_mount_get_device_path IA__g_unix_mount_get_device_path

extern __typeof (g_unix_mount_get_fs_type) IA__g_unix_mount_get_fs_type __attribute((visibility("hidden")));
#define g_unix_mount_get_fs_type IA__g_unix_mount_get_fs_type

extern __typeof (g_unix_mount_is_readonly) IA__g_unix_mount_is_readonly __attribute((visibility("hidden")));
#define g_unix_mount_is_readonly IA__g_unix_mount_is_readonly

extern __typeof (g_unix_mount_is_system_internal) IA__g_unix_mount_is_system_internal __attribute((visibility("hidden")));
#define g_unix_mount_is_system_internal IA__g_unix_mount_is_system_internal

extern __typeof (g_unix_mount_guess_can_eject) IA__g_unix_mount_guess_can_eject __attribute((visibility("hidden")));
#define g_unix_mount_guess_can_eject IA__g_unix_mount_guess_can_eject

extern __typeof (g_unix_mount_guess_should_display) IA__g_unix_mount_guess_should_display __attribute((visibility("hidden")));
#define g_unix_mount_guess_should_display IA__g_unix_mount_guess_should_display

extern __typeof (g_unix_mount_guess_name) IA__g_unix_mount_guess_name __attribute((visibility("hidden")));
#define g_unix_mount_guess_name IA__g_unix_mount_guess_name

extern __typeof (g_unix_mount_guess_icon) IA__g_unix_mount_guess_icon __attribute((visibility("hidden")));
#define g_unix_mount_guess_icon IA__g_unix_mount_guess_icon

extern __typeof (g_unix_mount_point_compare) IA__g_unix_mount_point_compare __attribute((visibility("hidden")));
#define g_unix_mount_point_compare IA__g_unix_mount_point_compare

extern __typeof (g_unix_mount_point_get_mount_path) IA__g_unix_mount_point_get_mount_path __attribute((visibility("hidden")));
#define g_unix_mount_point_get_mount_path IA__g_unix_mount_point_get_mount_path

extern __typeof (g_unix_mount_point_get_device_path) IA__g_unix_mount_point_get_device_path __attribute((visibility("hidden")));
#define g_unix_mount_point_get_device_path IA__g_unix_mount_point_get_device_path

extern __typeof (g_unix_mount_point_get_fs_type) IA__g_unix_mount_point_get_fs_type __attribute((visibility("hidden")));
#define g_unix_mount_point_get_fs_type IA__g_unix_mount_point_get_fs_type

extern __typeof (g_unix_mount_point_is_readonly) IA__g_unix_mount_point_is_readonly __attribute((visibility("hidden")));
#define g_unix_mount_point_is_readonly IA__g_unix_mount_point_is_readonly

extern __typeof (g_unix_mount_point_is_user_mountable) IA__g_unix_mount_point_is_user_mountable __attribute((visibility("hidden")));
#define g_unix_mount_point_is_user_mountable IA__g_unix_mount_point_is_user_mountable

extern __typeof (g_unix_mount_point_is_loopback) IA__g_unix_mount_point_is_loopback __attribute((visibility("hidden")));
#define g_unix_mount_point_is_loopback IA__g_unix_mount_point_is_loopback

extern __typeof (g_unix_mount_point_guess_can_eject) IA__g_unix_mount_point_guess_can_eject __attribute((visibility("hidden")));
#define g_unix_mount_point_guess_can_eject IA__g_unix_mount_point_guess_can_eject

extern __typeof (g_unix_mount_point_guess_name) IA__g_unix_mount_point_guess_name __attribute((visibility("hidden")));
#define g_unix_mount_point_guess_name IA__g_unix_mount_point_guess_name

extern __typeof (g_unix_mount_point_guess_icon) IA__g_unix_mount_point_guess_icon __attribute((visibility("hidden")));
#define g_unix_mount_point_guess_icon IA__g_unix_mount_point_guess_icon

extern __typeof (g_unix_mount_points_get) IA__g_unix_mount_points_get __attribute((visibility("hidden")));
#define g_unix_mount_points_get IA__g_unix_mount_points_get

extern __typeof (g_unix_mounts_get) IA__g_unix_mounts_get __attribute((visibility("hidden")));
#define g_unix_mounts_get IA__g_unix_mounts_get

extern __typeof (g_unix_mount_at) IA__g_unix_mount_at __attribute((visibility("hidden")));
#define g_unix_mount_at IA__g_unix_mount_at

extern __typeof (g_unix_mounts_changed_since) IA__g_unix_mounts_changed_since __attribute((visibility("hidden")));
#define g_unix_mounts_changed_since IA__g_unix_mounts_changed_since

extern __typeof (g_unix_mount_points_changed_since) IA__g_unix_mount_points_changed_since __attribute((visibility("hidden")));
#define g_unix_mount_points_changed_since IA__g_unix_mount_points_changed_since

extern __typeof (g_unix_mount_monitor_get_type) IA__g_unix_mount_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_unix_mount_monitor_get_type IA__g_unix_mount_monitor_get_type

extern __typeof (g_unix_mount_monitor_new) IA__g_unix_mount_monitor_new __attribute((visibility("hidden")));
#define g_unix_mount_monitor_new IA__g_unix_mount_monitor_new

extern __typeof (g_unix_mount_monitor_set_rate_limit) IA__g_unix_mount_monitor_set_rate_limit __attribute((visibility("hidden")));
#define g_unix_mount_monitor_set_rate_limit IA__g_unix_mount_monitor_set_rate_limit

extern __typeof (g_unix_is_mount_path_system_internal) IA__g_unix_is_mount_path_system_internal __attribute((visibility("hidden")));
#define g_unix_is_mount_path_system_internal IA__g_unix_is_mount_path_system_internal

#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
extern __typeof (g_unix_input_stream_get_type) IA__g_unix_input_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_unix_input_stream_get_type IA__g_unix_input_stream_get_type

extern __typeof (g_unix_input_stream_new) IA__g_unix_input_stream_new __attribute((visibility("hidden")));
#define g_unix_input_stream_new IA__g_unix_input_stream_new

extern __typeof (g_unix_input_stream_set_close_fd) IA__g_unix_input_stream_set_close_fd __attribute((visibility("hidden")));
#define g_unix_input_stream_set_close_fd IA__g_unix_input_stream_set_close_fd

extern __typeof (g_unix_input_stream_get_close_fd) IA__g_unix_input_stream_get_close_fd __attribute((visibility("hidden")));
#define g_unix_input_stream_get_close_fd IA__g_unix_input_stream_get_close_fd

extern __typeof (g_unix_input_stream_get_fd) IA__g_unix_input_stream_get_fd __attribute((visibility("hidden")));
#define g_unix_input_stream_get_fd IA__g_unix_input_stream_get_fd

#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
extern __typeof (g_unix_output_stream_get_type) IA__g_unix_output_stream_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_unix_output_stream_get_type IA__g_unix_output_stream_get_type

extern __typeof (g_unix_output_stream_new) IA__g_unix_output_stream_new __attribute((visibility("hidden")));
#define g_unix_output_stream_new IA__g_unix_output_stream_new

extern __typeof (g_unix_output_stream_set_close_fd) IA__g_unix_output_stream_set_close_fd __attribute((visibility("hidden")));
#define g_unix_output_stream_set_close_fd IA__g_unix_output_stream_set_close_fd

extern __typeof (g_unix_output_stream_get_close_fd) IA__g_unix_output_stream_get_close_fd __attribute((visibility("hidden")));
#define g_unix_output_stream_get_close_fd IA__g_unix_output_stream_get_close_fd

extern __typeof (g_unix_output_stream_get_fd) IA__g_unix_output_stream_get_fd __attribute((visibility("hidden")));
#define g_unix_output_stream_get_fd IA__g_unix_output_stream_get_fd

#endif /* G_OS_UNIX */
#endif
#endif
#if IN_HEADER(__G_MOUNT_H__)
#if IN_FILE(__G_MOUNT_C__)
extern __typeof (g_mount_get_type) IA__g_mount_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_mount_get_type IA__g_mount_get_type

extern __typeof (g_mount_get_root) IA__g_mount_get_root __attribute((visibility("hidden")));
#define g_mount_get_root IA__g_mount_get_root

extern __typeof (g_mount_get_name) IA__g_mount_get_name __attribute((visibility("hidden")));
#define g_mount_get_name IA__g_mount_get_name

extern __typeof (g_mount_get_icon) IA__g_mount_get_icon __attribute((visibility("hidden")));
#define g_mount_get_icon IA__g_mount_get_icon

extern __typeof (g_mount_get_uuid) IA__g_mount_get_uuid __attribute((visibility("hidden")));
#define g_mount_get_uuid IA__g_mount_get_uuid

extern __typeof (g_mount_get_volume) IA__g_mount_get_volume __attribute((visibility("hidden")));
#define g_mount_get_volume IA__g_mount_get_volume

extern __typeof (g_mount_get_drive) IA__g_mount_get_drive __attribute((visibility("hidden")));
#define g_mount_get_drive IA__g_mount_get_drive

extern __typeof (g_mount_can_unmount) IA__g_mount_can_unmount __attribute((visibility("hidden")));
#define g_mount_can_unmount IA__g_mount_can_unmount

extern __typeof (g_mount_can_eject) IA__g_mount_can_eject __attribute((visibility("hidden")));
#define g_mount_can_eject IA__g_mount_can_eject

extern __typeof (g_mount_unmount_with_operation) IA__g_mount_unmount_with_operation __attribute((visibility("hidden")));
#define g_mount_unmount_with_operation IA__g_mount_unmount_with_operation

extern __typeof (g_mount_unmount_with_operation_finish) IA__g_mount_unmount_with_operation_finish __attribute((visibility("hidden")));
#define g_mount_unmount_with_operation_finish IA__g_mount_unmount_with_operation_finish

extern __typeof (g_mount_eject_with_operation) IA__g_mount_eject_with_operation __attribute((visibility("hidden")));
#define g_mount_eject_with_operation IA__g_mount_eject_with_operation

extern __typeof (g_mount_eject_with_operation_finish) IA__g_mount_eject_with_operation_finish __attribute((visibility("hidden")));
#define g_mount_eject_with_operation_finish IA__g_mount_eject_with_operation_finish

extern __typeof (g_mount_get_default_location) IA__g_mount_get_default_location __attribute((visibility("hidden")));
#define g_mount_get_default_location IA__g_mount_get_default_location

extern __typeof (g_mount_remount) IA__g_mount_remount __attribute((visibility("hidden")));
#define g_mount_remount IA__g_mount_remount

extern __typeof (g_mount_remount_finish) IA__g_mount_remount_finish __attribute((visibility("hidden")));
#define g_mount_remount_finish IA__g_mount_remount_finish

extern __typeof (g_mount_guess_content_type) IA__g_mount_guess_content_type __attribute((visibility("hidden")));
#define g_mount_guess_content_type IA__g_mount_guess_content_type

extern __typeof (g_mount_guess_content_type_finish) IA__g_mount_guess_content_type_finish __attribute((visibility("hidden")));
#define g_mount_guess_content_type_finish IA__g_mount_guess_content_type_finish

extern __typeof (g_mount_guess_content_type_sync) IA__g_mount_guess_content_type_sync __attribute((visibility("hidden")));
#define g_mount_guess_content_type_sync IA__g_mount_guess_content_type_sync

extern __typeof (g_mount_is_shadowed) IA__g_mount_is_shadowed __attribute((visibility("hidden")));
#define g_mount_is_shadowed IA__g_mount_is_shadowed

extern __typeof (g_mount_shadow) IA__g_mount_shadow __attribute((visibility("hidden")));
#define g_mount_shadow IA__g_mount_shadow

extern __typeof (g_mount_unshadow) IA__g_mount_unshadow __attribute((visibility("hidden")));
#define g_mount_unshadow IA__g_mount_unshadow

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_mount_unmount) IA__g_mount_unmount __attribute((visibility("hidden")));
#define g_mount_unmount IA__g_mount_unmount

extern __typeof (g_mount_unmount_finish) IA__g_mount_unmount_finish __attribute((visibility("hidden")));
#define g_mount_unmount_finish IA__g_mount_unmount_finish

extern __typeof (g_mount_eject) IA__g_mount_eject __attribute((visibility("hidden")));
#define g_mount_eject IA__g_mount_eject

extern __typeof (g_mount_eject_finish) IA__g_mount_eject_finish __attribute((visibility("hidden")));
#define g_mount_eject_finish IA__g_mount_eject_finish

#endif
#endif
#endif
#if IN_HEADER(__G_VOLUME_H__)
#if IN_FILE(__G_VOLUME_C__)
extern __typeof (g_volume_get_type) IA__g_volume_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_volume_get_type IA__g_volume_get_type

extern __typeof (g_volume_get_name) IA__g_volume_get_name __attribute((visibility("hidden")));
#define g_volume_get_name IA__g_volume_get_name

extern __typeof (g_volume_get_icon) IA__g_volume_get_icon __attribute((visibility("hidden")));
#define g_volume_get_icon IA__g_volume_get_icon

extern __typeof (g_volume_get_uuid) IA__g_volume_get_uuid __attribute((visibility("hidden")));
#define g_volume_get_uuid IA__g_volume_get_uuid

extern __typeof (g_volume_get_drive) IA__g_volume_get_drive __attribute((visibility("hidden")));
#define g_volume_get_drive IA__g_volume_get_drive

extern __typeof (g_volume_get_mount) IA__g_volume_get_mount __attribute((visibility("hidden")));
#define g_volume_get_mount IA__g_volume_get_mount

extern __typeof (g_volume_should_automount) IA__g_volume_should_automount __attribute((visibility("hidden")));
#define g_volume_should_automount IA__g_volume_should_automount

extern __typeof (g_volume_can_mount) IA__g_volume_can_mount __attribute((visibility("hidden")));
#define g_volume_can_mount IA__g_volume_can_mount

extern __typeof (g_volume_can_eject) IA__g_volume_can_eject __attribute((visibility("hidden")));
#define g_volume_can_eject IA__g_volume_can_eject

extern __typeof (g_volume_mount) IA__g_volume_mount __attribute((visibility("hidden")));
#define g_volume_mount IA__g_volume_mount

extern __typeof (g_volume_mount_finish) IA__g_volume_mount_finish __attribute((visibility("hidden")));
#define g_volume_mount_finish IA__g_volume_mount_finish

extern __typeof (g_volume_eject_with_operation) IA__g_volume_eject_with_operation __attribute((visibility("hidden")));
#define g_volume_eject_with_operation IA__g_volume_eject_with_operation

extern __typeof (g_volume_eject_with_operation_finish) IA__g_volume_eject_with_operation_finish __attribute((visibility("hidden")));
#define g_volume_eject_with_operation_finish IA__g_volume_eject_with_operation_finish

extern __typeof (g_volume_get_identifier) IA__g_volume_get_identifier __attribute((visibility("hidden")));
#define g_volume_get_identifier IA__g_volume_get_identifier

extern __typeof (g_volume_enumerate_identifiers) IA__g_volume_enumerate_identifiers __attribute((visibility("hidden")));
#define g_volume_enumerate_identifiers IA__g_volume_enumerate_identifiers

extern __typeof (g_volume_get_activation_root) IA__g_volume_get_activation_root __attribute((visibility("hidden")));
#define g_volume_get_activation_root IA__g_volume_get_activation_root

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_volume_eject) IA__g_volume_eject __attribute((visibility("hidden")));
#define g_volume_eject IA__g_volume_eject

extern __typeof (g_volume_eject_finish) IA__g_volume_eject_finish __attribute((visibility("hidden")));
#define g_volume_eject_finish IA__g_volume_eject_finish

#endif
#endif
#endif
#if IN_HEADER(__G_VOLUME_MONITOR_H__)
#if IN_FILE(__G_VOLUME_MONITOR_C__)
extern __typeof (g_volume_monitor_get_type) IA__g_volume_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_volume_monitor_get_type IA__g_volume_monitor_get_type

extern __typeof (g_volume_monitor_get_connected_drives) IA__g_volume_monitor_get_connected_drives __attribute((visibility("hidden")));
#define g_volume_monitor_get_connected_drives IA__g_volume_monitor_get_connected_drives

extern __typeof (g_volume_monitor_get_volume_for_uuid) IA__g_volume_monitor_get_volume_for_uuid __attribute((visibility("hidden")));
#define g_volume_monitor_get_volume_for_uuid IA__g_volume_monitor_get_volume_for_uuid

extern __typeof (g_volume_monitor_get_volumes) IA__g_volume_monitor_get_volumes __attribute((visibility("hidden")));
#define g_volume_monitor_get_volumes IA__g_volume_monitor_get_volumes

extern __typeof (g_volume_monitor_get_mounts) IA__g_volume_monitor_get_mounts __attribute((visibility("hidden")));
#define g_volume_monitor_get_mounts IA__g_volume_monitor_get_mounts

extern __typeof (g_volume_monitor_get_mount_for_uuid) IA__g_volume_monitor_get_mount_for_uuid __attribute((visibility("hidden")));
#define g_volume_monitor_get_mount_for_uuid IA__g_volume_monitor_get_mount_for_uuid

#endif
#if IN_FILE(__G_UNION_VOLUME_MONITOR_C__)
extern __typeof (g_volume_monitor_get) IA__g_volume_monitor_get __attribute((visibility("hidden")));
#define g_volume_monitor_get IA__g_volume_monitor_get

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_volume_monitor_adopt_orphan_mount) IA__g_volume_monitor_adopt_orphan_mount __attribute((visibility("hidden")));
#define g_volume_monitor_adopt_orphan_mount IA__g_volume_monitor_adopt_orphan_mount

#endif
#endif
#endif
#if IN_HEADER(__G_NATIVE_VOLUME_MONITOR_H__)
#if IN_FILE(__G_NATIVE_VOLUME_MONITOR_C__)
extern __typeof (g_native_volume_monitor_get_type) IA__g_native_volume_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_native_volume_monitor_get_type IA__g_native_volume_monitor_get_type

#endif
#endif
#if IN_HEADER(__G_LOCAL_FILE_MONITOR_H__)
#if IN_FILE(__G_LOCAL_FILE_MONITOR_C__)
#ifdef G_OS_UNIX
extern __typeof (g_local_file_monitor_get_type) IA__g_local_file_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_local_file_monitor_get_type IA__g_local_file_monitor_get_type

#endif
#endif
#endif
#if IN_HEADER(__G_LOCAL_DIRECTORY_MONITOR_H__)
#if IN_FILE(__G_LOCAL_DIRECTORY_MONITOR_C__)
#ifdef G_OS_UNIX
extern __typeof (g_local_directory_monitor_get_type) IA__g_local_directory_monitor_get_type __attribute((visibility("hidden")))  G_GNUC_CONST;
#define g_local_directory_monitor_get_type IA__g_local_directory_monitor_get_type

#endif
#endif
#endif
#if IN_HEADER(__GIO_ENUM_TYPES_H__)
#if IN_FILE(__GIO_ENUM_TYPES_C__)
extern __typeof (g_mount_unmount_flags_get_type) IA__g_mount_unmount_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_mount_unmount_flags_get_type IA__g_mount_unmount_flags_get_type

extern __typeof (g_app_info_create_flags_get_type) IA__g_app_info_create_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_app_info_create_flags_get_type IA__g_app_info_create_flags_get_type

extern __typeof (g_converter_flags_get_type) IA__g_converter_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_converter_flags_get_type IA__g_converter_flags_get_type

extern __typeof (g_converter_result_get_type) IA__g_converter_result_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_converter_result_get_type IA__g_converter_result_get_type

extern __typeof (g_data_stream_byte_order_get_type) IA__g_data_stream_byte_order_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_data_stream_byte_order_get_type IA__g_data_stream_byte_order_get_type

extern __typeof (g_data_stream_newline_type_get_type) IA__g_data_stream_newline_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_data_stream_newline_type_get_type IA__g_data_stream_newline_type_get_type

extern __typeof (g_file_attribute_info_flags_get_type) IA__g_file_attribute_info_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_attribute_info_flags_get_type IA__g_file_attribute_info_flags_get_type

extern __typeof (g_file_attribute_status_get_type) IA__g_file_attribute_status_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_attribute_status_get_type IA__g_file_attribute_status_get_type

extern __typeof (g_file_attribute_type_get_type) IA__g_file_attribute_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_attribute_type_get_type IA__g_file_attribute_type_get_type

extern __typeof (g_file_copy_flags_get_type) IA__g_file_copy_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_copy_flags_get_type IA__g_file_copy_flags_get_type

extern __typeof (g_file_create_flags_get_type) IA__g_file_create_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_create_flags_get_type IA__g_file_create_flags_get_type

extern __typeof (g_file_monitor_event_get_type) IA__g_file_monitor_event_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_monitor_event_get_type IA__g_file_monitor_event_get_type

extern __typeof (g_file_monitor_flags_get_type) IA__g_file_monitor_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_monitor_flags_get_type IA__g_file_monitor_flags_get_type

extern __typeof (g_file_query_info_flags_get_type) IA__g_file_query_info_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_query_info_flags_get_type IA__g_file_query_info_flags_get_type

extern __typeof (g_file_type_get_type) IA__g_file_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_type_get_type IA__g_file_type_get_type

extern __typeof (g_filesystem_preview_type_get_type) IA__g_filesystem_preview_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_filesystem_preview_type_get_type IA__g_filesystem_preview_type_get_type

extern __typeof (g_io_error_enum_get_type) IA__g_io_error_enum_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_io_error_enum_get_type IA__g_io_error_enum_get_type

extern __typeof (g_mount_mount_flags_get_type) IA__g_mount_mount_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_mount_mount_flags_get_type IA__g_mount_mount_flags_get_type

extern __typeof (g_mount_operation_result_get_type) IA__g_mount_operation_result_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_mount_operation_result_get_type IA__g_mount_operation_result_get_type

extern __typeof (g_drive_start_flags_get_type) IA__g_drive_start_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_drive_start_flags_get_type IA__g_drive_start_flags_get_type

extern __typeof (g_drive_start_stop_type_get_type) IA__g_drive_start_stop_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_drive_start_stop_type_get_type IA__g_drive_start_stop_type_get_type

extern __typeof (g_output_stream_splice_flags_get_type) IA__g_output_stream_splice_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_output_stream_splice_flags_get_type IA__g_output_stream_splice_flags_get_type

extern __typeof (g_ask_password_flags_get_type) IA__g_ask_password_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ask_password_flags_get_type IA__g_ask_password_flags_get_type

extern __typeof (g_password_save_get_type) IA__g_password_save_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_password_save_get_type IA__g_password_save_get_type

extern __typeof (g_emblem_origin_get_type) IA__g_emblem_origin_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_emblem_origin_get_type IA__g_emblem_origin_get_type

extern __typeof (g_socket_family_get_type) IA__g_socket_family_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_family_get_type IA__g_socket_family_get_type

extern __typeof (g_socket_type_get_type) IA__g_socket_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_type_get_type IA__g_socket_type_get_type

extern __typeof (g_socket_protocol_get_type) IA__g_socket_protocol_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_protocol_get_type IA__g_socket_protocol_get_type

extern __typeof (g_socket_msg_flags_get_type) IA__g_socket_msg_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_msg_flags_get_type IA__g_socket_msg_flags_get_type

extern __typeof (g_resolver_error_get_type) IA__g_resolver_error_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_resolver_error_get_type IA__g_resolver_error_get_type

extern __typeof (g_zlib_compressor_format_get_type) IA__g_zlib_compressor_format_get_type __attribute((visibility("hidden")));
#define g_zlib_compressor_format_get_type IA__g_zlib_compressor_format_get_type

#endif
#endif
#if IN_HEADER(__G_EMBLEMED_ICON_H__)
#if IN_FILE(__G_EMBLEMED_ICON_C__)
extern __typeof (g_emblemed_icon_get_type) IA__g_emblemed_icon_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_emblemed_icon_get_type IA__g_emblemed_icon_get_type

extern __typeof (g_emblemed_icon_new) IA__g_emblemed_icon_new __attribute((visibility("hidden")));
#define g_emblemed_icon_new IA__g_emblemed_icon_new

extern __typeof (g_emblemed_icon_get_icon) IA__g_emblemed_icon_get_icon __attribute((visibility("hidden")));
#define g_emblemed_icon_get_icon IA__g_emblemed_icon_get_icon

extern __typeof (g_emblemed_icon_get_emblems) IA__g_emblemed_icon_get_emblems __attribute((visibility("hidden")));
#define g_emblemed_icon_get_emblems IA__g_emblemed_icon_get_emblems

extern __typeof (g_emblemed_icon_add_emblem) IA__g_emblemed_icon_add_emblem __attribute((visibility("hidden")));
#define g_emblemed_icon_add_emblem IA__g_emblemed_icon_add_emblem

#endif
#endif
#if IN_HEADER(__G_EMBLEM_H__)
#if IN_FILE(__G_EMBLEM_C__)
extern __typeof (g_emblem_get_type) IA__g_emblem_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_emblem_get_type IA__g_emblem_get_type

extern __typeof (g_emblem_new) IA__g_emblem_new __attribute((visibility("hidden")));
#define g_emblem_new IA__g_emblem_new

extern __typeof (g_emblem_new_with_origin) IA__g_emblem_new_with_origin __attribute((visibility("hidden")));
#define g_emblem_new_with_origin IA__g_emblem_new_with_origin

extern __typeof (g_emblem_get_icon) IA__g_emblem_get_icon __attribute((visibility("hidden")));
#define g_emblem_get_icon IA__g_emblem_get_icon

extern __typeof (g_emblem_get_origin) IA__g_emblem_get_origin __attribute((visibility("hidden")));
#define g_emblem_get_origin IA__g_emblem_get_origin

#endif
#endif
#if IN_HEADER(__G_INET_ADDRESS_H__)
#if IN_FILE(__G_INET_ADDRESS_C__)
extern __typeof (g_inet_address_new_from_string) IA__g_inet_address_new_from_string __attribute((visibility("hidden")));
#define g_inet_address_new_from_string IA__g_inet_address_new_from_string

extern __typeof (g_inet_address_new_from_bytes) IA__g_inet_address_new_from_bytes __attribute((visibility("hidden")));
#define g_inet_address_new_from_bytes IA__g_inet_address_new_from_bytes

extern __typeof (g_inet_address_new_any) IA__g_inet_address_new_any __attribute((visibility("hidden")));
#define g_inet_address_new_any IA__g_inet_address_new_any

extern __typeof (g_inet_address_new_loopback) IA__g_inet_address_new_loopback __attribute((visibility("hidden")));
#define g_inet_address_new_loopback IA__g_inet_address_new_loopback

extern __typeof (g_inet_address_get_family) IA__g_inet_address_get_family __attribute((visibility("hidden")));
#define g_inet_address_get_family IA__g_inet_address_get_family

extern __typeof (g_inet_address_get_type) IA__g_inet_address_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_inet_address_get_type IA__g_inet_address_get_type

extern __typeof (g_inet_address_get_is_any) IA__g_inet_address_get_is_any __attribute((visibility("hidden")));
#define g_inet_address_get_is_any IA__g_inet_address_get_is_any

extern __typeof (g_inet_address_get_is_link_local) IA__g_inet_address_get_is_link_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_link_local IA__g_inet_address_get_is_link_local

extern __typeof (g_inet_address_get_is_loopback) IA__g_inet_address_get_is_loopback __attribute((visibility("hidden")));
#define g_inet_address_get_is_loopback IA__g_inet_address_get_is_loopback

extern __typeof (g_inet_address_get_is_mc_global) IA__g_inet_address_get_is_mc_global __attribute((visibility("hidden")));
#define g_inet_address_get_is_mc_global IA__g_inet_address_get_is_mc_global

extern __typeof (g_inet_address_get_is_mc_link_local) IA__g_inet_address_get_is_mc_link_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_mc_link_local IA__g_inet_address_get_is_mc_link_local

extern __typeof (g_inet_address_get_is_mc_node_local) IA__g_inet_address_get_is_mc_node_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_mc_node_local IA__g_inet_address_get_is_mc_node_local

extern __typeof (g_inet_address_get_is_mc_org_local) IA__g_inet_address_get_is_mc_org_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_mc_org_local IA__g_inet_address_get_is_mc_org_local

extern __typeof (g_inet_address_get_is_mc_site_local) IA__g_inet_address_get_is_mc_site_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_mc_site_local IA__g_inet_address_get_is_mc_site_local

extern __typeof (g_inet_address_get_is_multicast) IA__g_inet_address_get_is_multicast __attribute((visibility("hidden")));
#define g_inet_address_get_is_multicast IA__g_inet_address_get_is_multicast

extern __typeof (g_inet_address_get_is_site_local) IA__g_inet_address_get_is_site_local __attribute((visibility("hidden")));
#define g_inet_address_get_is_site_local IA__g_inet_address_get_is_site_local

extern __typeof (g_inet_address_to_bytes) IA__g_inet_address_to_bytes __attribute((visibility("hidden")));
#define g_inet_address_to_bytes IA__g_inet_address_to_bytes

extern __typeof (g_inet_address_get_native_size) IA__g_inet_address_get_native_size __attribute((visibility("hidden")));
#define g_inet_address_get_native_size IA__g_inet_address_get_native_size

extern __typeof (g_inet_address_to_string) IA__g_inet_address_to_string __attribute((visibility("hidden")));
#define g_inet_address_to_string IA__g_inet_address_to_string

#endif
#endif
#if IN_HEADER(__G_INET_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_INET_SOCKET_ADDRESS_C__)
extern __typeof (g_inet_socket_address_get_address) IA__g_inet_socket_address_get_address __attribute((visibility("hidden")));
#define g_inet_socket_address_get_address IA__g_inet_socket_address_get_address

extern __typeof (g_inet_socket_address_get_port) IA__g_inet_socket_address_get_port __attribute((visibility("hidden")));
#define g_inet_socket_address_get_port IA__g_inet_socket_address_get_port

extern __typeof (g_inet_socket_address_get_type) IA__g_inet_socket_address_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_inet_socket_address_get_type IA__g_inet_socket_address_get_type

extern __typeof (g_inet_socket_address_new) IA__g_inet_socket_address_new __attribute((visibility("hidden")));
#define g_inet_socket_address_new IA__g_inet_socket_address_new

#endif
#endif
#if IN_HEADER(__G_UNIX_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_UNIX_SOCKET_ADDRESS_C__)
#ifdef G_OS_UNIX
extern __typeof (g_unix_socket_address_get_type) IA__g_unix_socket_address_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unix_socket_address_get_type IA__g_unix_socket_address_get_type

extern __typeof (g_unix_socket_address_new) IA__g_unix_socket_address_new __attribute((visibility("hidden")));
#define g_unix_socket_address_new IA__g_unix_socket_address_new

extern __typeof (g_unix_socket_address_new_abstract) IA__g_unix_socket_address_new_abstract __attribute((visibility("hidden")));
#define g_unix_socket_address_new_abstract IA__g_unix_socket_address_new_abstract

extern __typeof (g_unix_socket_address_abstract_names_supported) IA__g_unix_socket_address_abstract_names_supported __attribute((visibility("hidden")));
#define g_unix_socket_address_abstract_names_supported IA__g_unix_socket_address_abstract_names_supported

extern __typeof (g_unix_socket_address_get_is_abstract) IA__g_unix_socket_address_get_is_abstract __attribute((visibility("hidden")));
#define g_unix_socket_address_get_is_abstract IA__g_unix_socket_address_get_is_abstract

extern __typeof (g_unix_socket_address_get_path) IA__g_unix_socket_address_get_path __attribute((visibility("hidden")));
#define g_unix_socket_address_get_path IA__g_unix_socket_address_get_path

extern __typeof (g_unix_socket_address_get_path_len) IA__g_unix_socket_address_get_path_len __attribute((visibility("hidden")));
#define g_unix_socket_address_get_path_len IA__g_unix_socket_address_get_path_len

#endif
#endif
#endif
#if IN_HEADER(__G_SOCKET_ADDRESS_H__)
#if IN_FILE(__G_SOCKET_ADDRESS_C__)
extern __typeof (g_socket_address_new_from_native) IA__g_socket_address_new_from_native __attribute((visibility("hidden")));
#define g_socket_address_new_from_native IA__g_socket_address_new_from_native

extern __typeof (g_socket_address_get_type) IA__g_socket_address_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_address_get_type IA__g_socket_address_get_type

extern __typeof (g_socket_address_get_family) IA__g_socket_address_get_family __attribute((visibility("hidden")));
#define g_socket_address_get_family IA__g_socket_address_get_family

extern __typeof (g_socket_address_get_native_size) IA__g_socket_address_get_native_size __attribute((visibility("hidden")));
#define g_socket_address_get_native_size IA__g_socket_address_get_native_size

extern __typeof (g_socket_address_to_native) IA__g_socket_address_to_native __attribute((visibility("hidden")));
#define g_socket_address_to_native IA__g_socket_address_to_native

#endif
#endif
#if IN_HEADER(__G_RESOLVER_H__)
#if IN_FILE(__G_RESOLVER_C__)
extern __typeof (g_resolver_error_quark) IA__g_resolver_error_quark __attribute((visibility("hidden")));
#define g_resolver_error_quark IA__g_resolver_error_quark

extern __typeof (g_resolver_free_addresses) IA__g_resolver_free_addresses __attribute((visibility("hidden")));
#define g_resolver_free_addresses IA__g_resolver_free_addresses

extern __typeof (g_resolver_free_targets) IA__g_resolver_free_targets __attribute((visibility("hidden")));
#define g_resolver_free_targets IA__g_resolver_free_targets

extern __typeof (g_resolver_get_type) IA__g_resolver_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_resolver_get_type IA__g_resolver_get_type

extern __typeof (g_resolver_get_default) IA__g_resolver_get_default __attribute((visibility("hidden")));
#define g_resolver_get_default IA__g_resolver_get_default

extern __typeof (g_resolver_set_default) IA__g_resolver_set_default __attribute((visibility("hidden")));
#define g_resolver_set_default IA__g_resolver_set_default

extern __typeof (g_resolver_lookup_by_name) IA__g_resolver_lookup_by_name __attribute((visibility("hidden")));
#define g_resolver_lookup_by_name IA__g_resolver_lookup_by_name

extern __typeof (g_resolver_lookup_by_name_async) IA__g_resolver_lookup_by_name_async __attribute((visibility("hidden")));
#define g_resolver_lookup_by_name_async IA__g_resolver_lookup_by_name_async

extern __typeof (g_resolver_lookup_by_name_finish) IA__g_resolver_lookup_by_name_finish __attribute((visibility("hidden")));
#define g_resolver_lookup_by_name_finish IA__g_resolver_lookup_by_name_finish

extern __typeof (g_resolver_lookup_by_address) IA__g_resolver_lookup_by_address __attribute((visibility("hidden")));
#define g_resolver_lookup_by_address IA__g_resolver_lookup_by_address

extern __typeof (g_resolver_lookup_by_address_async) IA__g_resolver_lookup_by_address_async __attribute((visibility("hidden")));
#define g_resolver_lookup_by_address_async IA__g_resolver_lookup_by_address_async

extern __typeof (g_resolver_lookup_by_address_finish) IA__g_resolver_lookup_by_address_finish __attribute((visibility("hidden")));
#define g_resolver_lookup_by_address_finish IA__g_resolver_lookup_by_address_finish

extern __typeof (g_resolver_lookup_service) IA__g_resolver_lookup_service __attribute((visibility("hidden")));
#define g_resolver_lookup_service IA__g_resolver_lookup_service

extern __typeof (g_resolver_lookup_service_async) IA__g_resolver_lookup_service_async __attribute((visibility("hidden")));
#define g_resolver_lookup_service_async IA__g_resolver_lookup_service_async

extern __typeof (g_resolver_lookup_service_finish) IA__g_resolver_lookup_service_finish __attribute((visibility("hidden")));
#define g_resolver_lookup_service_finish IA__g_resolver_lookup_service_finish

#endif
#endif
#if IN_HEADER(__G_THREADED_RESOLVER_H__)
#if IN_FILE(__G_THREADED_RESOLVER_C__)
extern __typeof (g_threaded_resolver_get_type) IA__g_threaded_resolver_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_threaded_resolver_get_type IA__g_threaded_resolver_get_type

#endif
#endif
#if IN_HEADER(__G_UNIX_RESOLVER_H__)
#if IN_FILE(__G_UNIX_RESOLVER_C__)
#ifdef G_OS_UNIX
extern __typeof (g_unix_resolver_get_type) IA__g_unix_resolver_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unix_resolver_get_type IA__g_unix_resolver_get_type

#endif
#endif
#endif
#if IN_HEADER(__G_WIN32_RESOLVER_H__)
#if IN_FILE(__G_WIN32_RESOLVER_C__)
#ifdef G_OS_WIN32
extern __typeof (g_win32_resolver_get_type) IA__g_win32_resolver_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_win32_resolver_get_type IA__g_win32_resolver_get_type

#endif
#endif
#endif
#if IN_HEADER(__G_SRV_TARGET_H__)
#if IN_FILE(__G_SRV_TARGET_C__)
extern __typeof (g_srv_target_get_type) IA__g_srv_target_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_srv_target_get_type IA__g_srv_target_get_type

extern __typeof (g_srv_target_new) IA__g_srv_target_new __attribute((visibility("hidden")));
#define g_srv_target_new IA__g_srv_target_new

extern __typeof (g_srv_target_copy) IA__g_srv_target_copy __attribute((visibility("hidden")));
#define g_srv_target_copy IA__g_srv_target_copy

extern __typeof (g_srv_target_free) IA__g_srv_target_free __attribute((visibility("hidden")));
#define g_srv_target_free IA__g_srv_target_free

extern __typeof (g_srv_target_get_hostname) IA__g_srv_target_get_hostname __attribute((visibility("hidden")));
#define g_srv_target_get_hostname IA__g_srv_target_get_hostname

extern __typeof (g_srv_target_get_port) IA__g_srv_target_get_port __attribute((visibility("hidden")));
#define g_srv_target_get_port IA__g_srv_target_get_port

extern __typeof (g_srv_target_get_priority) IA__g_srv_target_get_priority __attribute((visibility("hidden")));
#define g_srv_target_get_priority IA__g_srv_target_get_priority

extern __typeof (g_srv_target_get_weight) IA__g_srv_target_get_weight __attribute((visibility("hidden")));
#define g_srv_target_get_weight IA__g_srv_target_get_weight

extern __typeof (g_srv_target_list_sort) IA__g_srv_target_list_sort __attribute((visibility("hidden")));
#define g_srv_target_list_sort IA__g_srv_target_list_sort

#endif
#endif
#if IN_HEADER(__G_NETWORK_ADDRESS_H__)
#if IN_FILE(__G_NETWORK_ADDRESS_C__)
extern __typeof (g_network_address_get_type) IA__g_network_address_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_network_address_get_type IA__g_network_address_get_type

extern __typeof (g_network_address_get_hostname) IA__g_network_address_get_hostname __attribute((visibility("hidden")));
#define g_network_address_get_hostname IA__g_network_address_get_hostname

extern __typeof (g_network_address_get_port) IA__g_network_address_get_port __attribute((visibility("hidden")));
#define g_network_address_get_port IA__g_network_address_get_port

extern __typeof (g_network_address_new) IA__g_network_address_new __attribute((visibility("hidden")));
#define g_network_address_new IA__g_network_address_new

extern __typeof (g_network_address_parse) IA__g_network_address_parse __attribute((visibility("hidden")));
#define g_network_address_parse IA__g_network_address_parse

#endif
#endif
#if IN_HEADER(__G_NETWORK_SERVICE_H__)
#if IN_FILE(__G_NETWORK_SERVICE_C__)
extern __typeof (g_network_service_get_type) IA__g_network_service_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_network_service_get_type IA__g_network_service_get_type

extern __typeof (g_network_service_get_service) IA__g_network_service_get_service __attribute((visibility("hidden")));
#define g_network_service_get_service IA__g_network_service_get_service

extern __typeof (g_network_service_get_protocol) IA__g_network_service_get_protocol __attribute((visibility("hidden")));
#define g_network_service_get_protocol IA__g_network_service_get_protocol

extern __typeof (g_network_service_get_domain) IA__g_network_service_get_domain __attribute((visibility("hidden")));
#define g_network_service_get_domain IA__g_network_service_get_domain

extern __typeof (g_network_service_new) IA__g_network_service_new __attribute((visibility("hidden")));
#define g_network_service_new IA__g_network_service_new

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONNECTABLE_H__)
#if IN_FILE(__G_SOCKET_CONNECTABLE_C__)
extern __typeof (g_socket_connectable_enumerate) IA__g_socket_connectable_enumerate __attribute((visibility("hidden")));
#define g_socket_connectable_enumerate IA__g_socket_connectable_enumerate

extern __typeof (g_socket_connectable_get_type) IA__g_socket_connectable_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_connectable_get_type IA__g_socket_connectable_get_type

#endif
#endif
#if IN_HEADER(__G_SOCKET_ADDRESS_ENUMERATOR_H__)
#if IN_FILE(__G_SOCKET_ADDRESS_ENUMERATOR_C__)
extern __typeof (g_socket_address_enumerator_get_type) IA__g_socket_address_enumerator_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_address_enumerator_get_type IA__g_socket_address_enumerator_get_type

extern __typeof (g_socket_address_enumerator_next) IA__g_socket_address_enumerator_next __attribute((visibility("hidden")));
#define g_socket_address_enumerator_next IA__g_socket_address_enumerator_next

extern __typeof (g_socket_address_enumerator_next_async) IA__g_socket_address_enumerator_next_async __attribute((visibility("hidden")));
#define g_socket_address_enumerator_next_async IA__g_socket_address_enumerator_next_async

extern __typeof (g_socket_address_enumerator_next_finish) IA__g_socket_address_enumerator_next_finish __attribute((visibility("hidden")));
#define g_socket_address_enumerator_next_finish IA__g_socket_address_enumerator_next_finish

#endif
#endif
#if IN_HEADER(__G_ASYNC_INITABLE_H__)
#if IN_FILE(__G_ASYNC_INITABLE_C__)
extern __typeof (g_async_initable_get_type) IA__g_async_initable_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_async_initable_get_type IA__g_async_initable_get_type

extern __typeof (g_async_initable_init_async) IA__g_async_initable_init_async __attribute((visibility("hidden")));
#define g_async_initable_init_async IA__g_async_initable_init_async

extern __typeof (g_async_initable_init_finish) IA__g_async_initable_init_finish __attribute((visibility("hidden")));
#define g_async_initable_init_finish IA__g_async_initable_init_finish

extern __typeof (g_async_initable_new_async) IA__g_async_initable_new_async __attribute((visibility("hidden")));
#define g_async_initable_new_async IA__g_async_initable_new_async

extern __typeof (g_async_initable_new_finish) IA__g_async_initable_new_finish __attribute((visibility("hidden")));
#define g_async_initable_new_finish IA__g_async_initable_new_finish

extern __typeof (g_async_initable_new_valist_async) IA__g_async_initable_new_valist_async __attribute((visibility("hidden")));
#define g_async_initable_new_valist_async IA__g_async_initable_new_valist_async

extern __typeof (g_async_initable_newv_async) IA__g_async_initable_newv_async __attribute((visibility("hidden")));
#define g_async_initable_newv_async IA__g_async_initable_newv_async

#endif
#endif
#if IN_HEADER(__G_INITABLE_H__)
#if IN_FILE(__G_INITABLE_C__)
extern __typeof (g_initable_get_type) IA__g_initable_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_initable_get_type IA__g_initable_get_type

extern __typeof (g_initable_init) IA__g_initable_init __attribute((visibility("hidden")));
#define g_initable_init IA__g_initable_init

extern __typeof (g_initable_new) IA__g_initable_new __attribute((visibility("hidden")));
#define g_initable_new IA__g_initable_new

extern __typeof (g_initable_newv) IA__g_initable_newv __attribute((visibility("hidden")));
#define g_initable_newv IA__g_initable_newv

extern __typeof (g_initable_new_valist) IA__g_initable_new_valist __attribute((visibility("hidden")));
#define g_initable_new_valist IA__g_initable_new_valist

#endif
#endif
#if IN_HEADER(__G_SOCKET_H__)
#if IN_FILE(__G_SOCKET_C__)
extern __typeof (g_socket_get_type) IA__g_socket_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_get_type IA__g_socket_get_type

extern __typeof (g_socket_accept) IA__g_socket_accept __attribute((visibility("hidden")));
#define g_socket_accept IA__g_socket_accept

extern __typeof (g_socket_bind) IA__g_socket_bind __attribute((visibility("hidden")));
#define g_socket_bind IA__g_socket_bind

extern __typeof (g_socket_check_connect_result) IA__g_socket_check_connect_result __attribute((visibility("hidden")));
#define g_socket_check_connect_result IA__g_socket_check_connect_result

extern __typeof (g_socket_close) IA__g_socket_close __attribute((visibility("hidden")));
#define g_socket_close IA__g_socket_close

extern __typeof (g_socket_shutdown) IA__g_socket_shutdown __attribute((visibility("hidden")));
#define g_socket_shutdown IA__g_socket_shutdown

extern __typeof (g_socket_condition_check) IA__g_socket_condition_check __attribute((visibility("hidden")));
#define g_socket_condition_check IA__g_socket_condition_check

extern __typeof (g_socket_condition_wait) IA__g_socket_condition_wait __attribute((visibility("hidden")));
#define g_socket_condition_wait IA__g_socket_condition_wait

extern __typeof (g_socket_connect) IA__g_socket_connect __attribute((visibility("hidden")));
#define g_socket_connect IA__g_socket_connect

extern __typeof (g_socket_create_source) IA__g_socket_create_source __attribute((visibility("hidden")));
#define g_socket_create_source IA__g_socket_create_source

extern __typeof (g_socket_get_blocking) IA__g_socket_get_blocking __attribute((visibility("hidden")));
#define g_socket_get_blocking IA__g_socket_get_blocking

extern __typeof (g_socket_get_family) IA__g_socket_get_family __attribute((visibility("hidden")));
#define g_socket_get_family IA__g_socket_get_family

extern __typeof (g_socket_get_fd) IA__g_socket_get_fd __attribute((visibility("hidden")));
#define g_socket_get_fd IA__g_socket_get_fd

extern __typeof (g_socket_get_keepalive) IA__g_socket_get_keepalive __attribute((visibility("hidden")));
#define g_socket_get_keepalive IA__g_socket_get_keepalive

extern __typeof (g_socket_get_listen_backlog) IA__g_socket_get_listen_backlog __attribute((visibility("hidden")));
#define g_socket_get_listen_backlog IA__g_socket_get_listen_backlog

extern __typeof (g_socket_get_local_address) IA__g_socket_get_local_address __attribute((visibility("hidden")));
#define g_socket_get_local_address IA__g_socket_get_local_address

extern __typeof (g_socket_get_protocol) IA__g_socket_get_protocol __attribute((visibility("hidden")));
#define g_socket_get_protocol IA__g_socket_get_protocol

extern __typeof (g_socket_get_remote_address) IA__g_socket_get_remote_address __attribute((visibility("hidden")));
#define g_socket_get_remote_address IA__g_socket_get_remote_address

extern __typeof (g_socket_get_socket_type) IA__g_socket_get_socket_type __attribute((visibility("hidden")));
#define g_socket_get_socket_type IA__g_socket_get_socket_type

extern __typeof (g_socket_is_closed) IA__g_socket_is_closed __attribute((visibility("hidden")));
#define g_socket_is_closed IA__g_socket_is_closed

extern __typeof (g_socket_is_connected) IA__g_socket_is_connected __attribute((visibility("hidden")));
#define g_socket_is_connected IA__g_socket_is_connected

extern __typeof (g_socket_listen) IA__g_socket_listen __attribute((visibility("hidden")));
#define g_socket_listen IA__g_socket_listen

extern __typeof (g_socket_new) IA__g_socket_new __attribute((visibility("hidden")));
#define g_socket_new IA__g_socket_new

extern __typeof (g_socket_new_from_fd) IA__g_socket_new_from_fd __attribute((visibility("hidden")));
#define g_socket_new_from_fd IA__g_socket_new_from_fd

extern __typeof (g_socket_receive) IA__g_socket_receive __attribute((visibility("hidden")));
#define g_socket_receive IA__g_socket_receive

extern __typeof (g_socket_receive_from) IA__g_socket_receive_from __attribute((visibility("hidden")));
#define g_socket_receive_from IA__g_socket_receive_from

extern __typeof (g_socket_receive_message) IA__g_socket_receive_message __attribute((visibility("hidden")));
#define g_socket_receive_message IA__g_socket_receive_message

extern __typeof (g_socket_send) IA__g_socket_send __attribute((visibility("hidden")));
#define g_socket_send IA__g_socket_send

extern __typeof (g_socket_send_message) IA__g_socket_send_message __attribute((visibility("hidden")));
#define g_socket_send_message IA__g_socket_send_message

extern __typeof (g_socket_send_to) IA__g_socket_send_to __attribute((visibility("hidden")));
#define g_socket_send_to IA__g_socket_send_to

extern __typeof (g_socket_set_blocking) IA__g_socket_set_blocking __attribute((visibility("hidden")));
#define g_socket_set_blocking IA__g_socket_set_blocking

extern __typeof (g_socket_set_keepalive) IA__g_socket_set_keepalive __attribute((visibility("hidden")));
#define g_socket_set_keepalive IA__g_socket_set_keepalive

extern __typeof (g_socket_set_listen_backlog) IA__g_socket_set_listen_backlog __attribute((visibility("hidden")));
#define g_socket_set_listen_backlog IA__g_socket_set_listen_backlog

extern __typeof (g_socket_speaks_ipv4) IA__g_socket_speaks_ipv4 __attribute((visibility("hidden")));
#define g_socket_speaks_ipv4 IA__g_socket_speaks_ipv4

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONTROL_MESSAGE_H__)
#if IN_FILE(__G_SOCKET_CONTROL_MESSAGE_C__)
extern __typeof (g_socket_control_message_get_type) IA__g_socket_control_message_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_control_message_get_type IA__g_socket_control_message_get_type

extern __typeof (g_socket_control_message_deserialize) IA__g_socket_control_message_deserialize __attribute((visibility("hidden")));
#define g_socket_control_message_deserialize IA__g_socket_control_message_deserialize

extern __typeof (g_socket_control_message_get_level) IA__g_socket_control_message_get_level __attribute((visibility("hidden")));
#define g_socket_control_message_get_level IA__g_socket_control_message_get_level

extern __typeof (g_socket_control_message_get_msg_type) IA__g_socket_control_message_get_msg_type __attribute((visibility("hidden")));
#define g_socket_control_message_get_msg_type IA__g_socket_control_message_get_msg_type

extern __typeof (g_socket_control_message_get_size) IA__g_socket_control_message_get_size __attribute((visibility("hidden")));
#define g_socket_control_message_get_size IA__g_socket_control_message_get_size

extern __typeof (g_socket_control_message_serialize) IA__g_socket_control_message_serialize __attribute((visibility("hidden")));
#define g_socket_control_message_serialize IA__g_socket_control_message_serialize

#endif
#endif
#if IN_HEADER(__G_SOCKET_CLIENT_H__)
#if IN_FILE(__G_SOCKET_CLIENT_C__)
extern __typeof (g_socket_client_get_type) IA__g_socket_client_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_client_get_type IA__g_socket_client_get_type

extern __typeof (g_socket_client_connect) IA__g_socket_client_connect __attribute((visibility("hidden")));
#define g_socket_client_connect IA__g_socket_client_connect

extern __typeof (g_socket_client_connect_async) IA__g_socket_client_connect_async __attribute((visibility("hidden")));
#define g_socket_client_connect_async IA__g_socket_client_connect_async

extern __typeof (g_socket_client_connect_finish) IA__g_socket_client_connect_finish __attribute((visibility("hidden")));
#define g_socket_client_connect_finish IA__g_socket_client_connect_finish

extern __typeof (g_socket_client_connect_to_host) IA__g_socket_client_connect_to_host __attribute((visibility("hidden")));
#define g_socket_client_connect_to_host IA__g_socket_client_connect_to_host

extern __typeof (g_socket_client_connect_to_host_async) IA__g_socket_client_connect_to_host_async __attribute((visibility("hidden")));
#define g_socket_client_connect_to_host_async IA__g_socket_client_connect_to_host_async

extern __typeof (g_socket_client_connect_to_host_finish) IA__g_socket_client_connect_to_host_finish __attribute((visibility("hidden")));
#define g_socket_client_connect_to_host_finish IA__g_socket_client_connect_to_host_finish

extern __typeof (g_socket_client_connect_to_service) IA__g_socket_client_connect_to_service __attribute((visibility("hidden")));
#define g_socket_client_connect_to_service IA__g_socket_client_connect_to_service

extern __typeof (g_socket_client_connect_to_service_async) IA__g_socket_client_connect_to_service_async __attribute((visibility("hidden")));
#define g_socket_client_connect_to_service_async IA__g_socket_client_connect_to_service_async

extern __typeof (g_socket_client_connect_to_service_finish) IA__g_socket_client_connect_to_service_finish __attribute((visibility("hidden")));
#define g_socket_client_connect_to_service_finish IA__g_socket_client_connect_to_service_finish

extern __typeof (g_socket_client_get_family) IA__g_socket_client_get_family __attribute((visibility("hidden")));
#define g_socket_client_get_family IA__g_socket_client_get_family

extern __typeof (g_socket_client_get_local_address) IA__g_socket_client_get_local_address __attribute((visibility("hidden")));
#define g_socket_client_get_local_address IA__g_socket_client_get_local_address

extern __typeof (g_socket_client_get_protocol) IA__g_socket_client_get_protocol __attribute((visibility("hidden")));
#define g_socket_client_get_protocol IA__g_socket_client_get_protocol

extern __typeof (g_socket_client_get_socket_type) IA__g_socket_client_get_socket_type __attribute((visibility("hidden")));
#define g_socket_client_get_socket_type IA__g_socket_client_get_socket_type

extern __typeof (g_socket_client_new) IA__g_socket_client_new __attribute((visibility("hidden")));
#define g_socket_client_new IA__g_socket_client_new

extern __typeof (g_socket_client_set_family) IA__g_socket_client_set_family __attribute((visibility("hidden")));
#define g_socket_client_set_family IA__g_socket_client_set_family

extern __typeof (g_socket_client_set_local_address) IA__g_socket_client_set_local_address __attribute((visibility("hidden")));
#define g_socket_client_set_local_address IA__g_socket_client_set_local_address

extern __typeof (g_socket_client_set_protocol) IA__g_socket_client_set_protocol __attribute((visibility("hidden")));
#define g_socket_client_set_protocol IA__g_socket_client_set_protocol

extern __typeof (g_socket_client_set_socket_type) IA__g_socket_client_set_socket_type __attribute((visibility("hidden")));
#define g_socket_client_set_socket_type IA__g_socket_client_set_socket_type

#endif
#endif
#if IN_HEADER(__G_SOCKET_CONNECTION_H__)
#if IN_FILE(__G_SOCKET_CONNECTION_C__)
extern __typeof (g_socket_connection_get_type) IA__g_socket_connection_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_connection_get_type IA__g_socket_connection_get_type

extern __typeof (g_socket_connection_factory_create_connection) IA__g_socket_connection_factory_create_connection __attribute((visibility("hidden")));
#define g_socket_connection_factory_create_connection IA__g_socket_connection_factory_create_connection

extern __typeof (g_socket_connection_factory_lookup_type) IA__g_socket_connection_factory_lookup_type __attribute((visibility("hidden")));
#define g_socket_connection_factory_lookup_type IA__g_socket_connection_factory_lookup_type

extern __typeof (g_socket_connection_factory_register_type) IA__g_socket_connection_factory_register_type __attribute((visibility("hidden")));
#define g_socket_connection_factory_register_type IA__g_socket_connection_factory_register_type

extern __typeof (g_socket_connection_get_local_address) IA__g_socket_connection_get_local_address __attribute((visibility("hidden")));
#define g_socket_connection_get_local_address IA__g_socket_connection_get_local_address

extern __typeof (g_socket_connection_get_remote_address) IA__g_socket_connection_get_remote_address __attribute((visibility("hidden")));
#define g_socket_connection_get_remote_address IA__g_socket_connection_get_remote_address

extern __typeof (g_socket_connection_get_socket) IA__g_socket_connection_get_socket __attribute((visibility("hidden")));
#define g_socket_connection_get_socket IA__g_socket_connection_get_socket

#endif
#endif
#if IN_HEADER(__G_SOCKET_LISTENER_H__)
#if IN_FILE(__G_SOCKET_LISTENER_C__)
extern __typeof (g_socket_listener_get_type) IA__g_socket_listener_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_listener_get_type IA__g_socket_listener_get_type

extern __typeof (g_socket_listener_accept) IA__g_socket_listener_accept __attribute((visibility("hidden")));
#define g_socket_listener_accept IA__g_socket_listener_accept

extern __typeof (g_socket_listener_accept_async) IA__g_socket_listener_accept_async __attribute((visibility("hidden")));
#define g_socket_listener_accept_async IA__g_socket_listener_accept_async

extern __typeof (g_socket_listener_accept_finish) IA__g_socket_listener_accept_finish __attribute((visibility("hidden")));
#define g_socket_listener_accept_finish IA__g_socket_listener_accept_finish

extern __typeof (g_socket_listener_accept_socket) IA__g_socket_listener_accept_socket __attribute((visibility("hidden")));
#define g_socket_listener_accept_socket IA__g_socket_listener_accept_socket

extern __typeof (g_socket_listener_accept_socket_async) IA__g_socket_listener_accept_socket_async __attribute((visibility("hidden")));
#define g_socket_listener_accept_socket_async IA__g_socket_listener_accept_socket_async

extern __typeof (g_socket_listener_accept_socket_finish) IA__g_socket_listener_accept_socket_finish __attribute((visibility("hidden")));
#define g_socket_listener_accept_socket_finish IA__g_socket_listener_accept_socket_finish

extern __typeof (g_socket_listener_add_address) IA__g_socket_listener_add_address __attribute((visibility("hidden")));
#define g_socket_listener_add_address IA__g_socket_listener_add_address

extern __typeof (g_socket_listener_add_inet_port) IA__g_socket_listener_add_inet_port __attribute((visibility("hidden")));
#define g_socket_listener_add_inet_port IA__g_socket_listener_add_inet_port

extern __typeof (g_socket_listener_add_any_inet_port) IA__g_socket_listener_add_any_inet_port __attribute((visibility("hidden")));
#define g_socket_listener_add_any_inet_port IA__g_socket_listener_add_any_inet_port

extern __typeof (g_socket_listener_add_socket) IA__g_socket_listener_add_socket __attribute((visibility("hidden")));
#define g_socket_listener_add_socket IA__g_socket_listener_add_socket

extern __typeof (g_socket_listener_close) IA__g_socket_listener_close __attribute((visibility("hidden")));
#define g_socket_listener_close IA__g_socket_listener_close

extern __typeof (g_socket_listener_new) IA__g_socket_listener_new __attribute((visibility("hidden")));
#define g_socket_listener_new IA__g_socket_listener_new

extern __typeof (g_socket_listener_set_backlog) IA__g_socket_listener_set_backlog __attribute((visibility("hidden")));
#define g_socket_listener_set_backlog IA__g_socket_listener_set_backlog

#endif
#endif
#if IN_HEADER(__G_SOCKET_SERVICE_H__)
#if IN_FILE(__G_SOCKET_SERVICE_C__)
extern __typeof (g_socket_service_get_type) IA__g_socket_service_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_socket_service_get_type IA__g_socket_service_get_type

extern __typeof (g_socket_service_is_active) IA__g_socket_service_is_active __attribute((visibility("hidden")));
#define g_socket_service_is_active IA__g_socket_service_is_active

extern __typeof (g_socket_service_new) IA__g_socket_service_new __attribute((visibility("hidden")));
#define g_socket_service_new IA__g_socket_service_new

extern __typeof (g_socket_service_start) IA__g_socket_service_start __attribute((visibility("hidden")));
#define g_socket_service_start IA__g_socket_service_start

extern __typeof (g_socket_service_stop) IA__g_socket_service_stop __attribute((visibility("hidden")));
#define g_socket_service_stop IA__g_socket_service_stop

#endif
#endif
#if IN_HEADER(__G_THREADED_SOCKET_SERVICE_H__)
#if IN_FILE(__G_THREADED_SOCKET_SERVICE_C__)
extern __typeof (g_threaded_socket_service_get_type) IA__g_threaded_socket_service_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_threaded_socket_service_get_type IA__g_threaded_socket_service_get_type

extern __typeof (g_threaded_socket_service_new) IA__g_threaded_socket_service_new __attribute((visibility("hidden")));
#define g_threaded_socket_service_new IA__g_threaded_socket_service_new

#endif
#endif
#if IN_HEADER(__G_TCP_CONNECTION_H__)
#if IN_FILE(__G_TCP_CONNECTION_C__)
extern __typeof (g_tcp_connection_get_type) IA__g_tcp_connection_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_tcp_connection_get_type IA__g_tcp_connection_get_type

extern __typeof (g_tcp_connection_set_graceful_disconnect) IA__g_tcp_connection_set_graceful_disconnect __attribute((visibility("hidden")));
#define g_tcp_connection_set_graceful_disconnect IA__g_tcp_connection_set_graceful_disconnect

extern __typeof (g_tcp_connection_get_graceful_disconnect) IA__g_tcp_connection_get_graceful_disconnect __attribute((visibility("hidden")));
#define g_tcp_connection_get_graceful_disconnect IA__g_tcp_connection_get_graceful_disconnect

#endif
#endif
#if IN_HEADER(__G_UNIX_CONNECTION_H__)
#if IN_FILE(__G_UNIX_CONNECTION_C__)
#ifndef G_OS_WIN32
extern __typeof (g_unix_connection_get_type) IA__g_unix_connection_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unix_connection_get_type IA__g_unix_connection_get_type

extern __typeof (g_unix_connection_receive_fd) IA__g_unix_connection_receive_fd __attribute((visibility("hidden")));
#define g_unix_connection_receive_fd IA__g_unix_connection_receive_fd

extern __typeof (g_unix_connection_send_fd) IA__g_unix_connection_send_fd __attribute((visibility("hidden")));
#define g_unix_connection_send_fd IA__g_unix_connection_send_fd

#endif
#endif
#endif
#if IN_HEADER(__G_UNIX_FD_MESSAGE_H__)
#if IN_FILE(__G_UNIX_FD_MESSAGE_C__)
#ifndef G_OS_WIN32
extern __typeof (g_unix_fd_message_get_type) IA__g_unix_fd_message_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unix_fd_message_get_type IA__g_unix_fd_message_get_type

extern __typeof (g_unix_fd_message_append_fd) IA__g_unix_fd_message_append_fd __attribute((visibility("hidden")));
#define g_unix_fd_message_append_fd IA__g_unix_fd_message_append_fd

extern __typeof (g_unix_fd_message_new) IA__g_unix_fd_message_new __attribute((visibility("hidden")));
#define g_unix_fd_message_new IA__g_unix_fd_message_new

extern __typeof (g_unix_fd_message_steal_fds) IA__g_unix_fd_message_steal_fds __attribute((visibility("hidden")));
#define g_unix_fd_message_steal_fds IA__g_unix_fd_message_steal_fds

extern __typeof (g_unix_fd_message_get_fd_list) IA__g_unix_fd_message_get_fd_list __attribute((visibility("hidden")));
#define g_unix_fd_message_get_fd_list IA__g_unix_fd_message_get_fd_list

extern __typeof (g_unix_fd_message_new_with_fd_list) IA__g_unix_fd_message_new_with_fd_list __attribute((visibility("hidden")));
#define g_unix_fd_message_new_with_fd_list IA__g_unix_fd_message_new_with_fd_list

#endif
#endif
#endif
#if IN_HEADER(__G_UNIX_FD_LIST_H__)
#if IN_FILE(__G_UNIX_FD_LIST_C__)
#ifndef G_OS_WIN32
extern __typeof (g_unix_fd_list_append) IA__g_unix_fd_list_append __attribute((visibility("hidden")));
#define g_unix_fd_list_append IA__g_unix_fd_list_append

extern __typeof (g_unix_fd_list_get) IA__g_unix_fd_list_get __attribute((visibility("hidden")));
#define g_unix_fd_list_get IA__g_unix_fd_list_get

extern __typeof (g_unix_fd_list_get_length) IA__g_unix_fd_list_get_length __attribute((visibility("hidden")));
#define g_unix_fd_list_get_length IA__g_unix_fd_list_get_length

extern __typeof (g_unix_fd_list_get_type) IA__g_unix_fd_list_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unix_fd_list_get_type IA__g_unix_fd_list_get_type

extern __typeof (g_unix_fd_list_new) IA__g_unix_fd_list_new __attribute((visibility("hidden")));
#define g_unix_fd_list_new IA__g_unix_fd_list_new

extern __typeof (g_unix_fd_list_new_from_array) IA__g_unix_fd_list_new_from_array __attribute((visibility("hidden")));
#define g_unix_fd_list_new_from_array IA__g_unix_fd_list_new_from_array

extern __typeof (g_unix_fd_list_peek_fds) IA__g_unix_fd_list_peek_fds __attribute((visibility("hidden")));
#define g_unix_fd_list_peek_fds IA__g_unix_fd_list_peek_fds

extern __typeof (g_unix_fd_list_steal_fds) IA__g_unix_fd_list_steal_fds __attribute((visibility("hidden")));
#define g_unix_fd_list_steal_fds IA__g_unix_fd_list_steal_fds

#endif
#endif
#endif
#if IN_HEADER(__G_ZLIB_COMPRESSOR_H__)
#if IN_FILE(__G_ZLIB_COMPRESSOR_C__)
extern __typeof (g_zlib_compressor_get_type) IA__g_zlib_compressor_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_zlib_compressor_get_type IA__g_zlib_compressor_get_type

extern __typeof (g_zlib_compressor_new) IA__g_zlib_compressor_new __attribute((visibility("hidden")));
#define g_zlib_compressor_new IA__g_zlib_compressor_new

#endif
#endif
#if IN_HEADER(__G_ZLIB_DECOMPRESSOR_H__)
#if IN_FILE(__G_ZLIB_DECOMPRESSOR_C__)
extern __typeof (g_zlib_decompressor_get_type) IA__g_zlib_decompressor_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_zlib_decompressor_get_type IA__g_zlib_decompressor_get_type

extern __typeof (g_zlib_decompressor_new) IA__g_zlib_decompressor_new __attribute((visibility("hidden")));
#define g_zlib_decompressor_new IA__g_zlib_decompressor_new

#endif
#endif
#if IN_HEADER(__G_FILE_DESCRIPTOR_BASED_H__)
#if IN_FILE(__G_FILE_DESCRIPTOR_BASED_C__)
extern __typeof (g_file_descriptor_based_get_type) IA__g_file_descriptor_based_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_file_descriptor_based_get_type IA__g_file_descriptor_based_get_type

extern __typeof (g_file_descriptor_based_get_fd) IA__g_file_descriptor_based_get_fd __attribute((visibility("hidden")));
#define g_file_descriptor_based_get_fd IA__g_file_descriptor_based_get_fd

#endif
#endif

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