/* Generated by makegobjectalias.pl */

#ifndef DISABLE_VISIBILITY

#include "glibconfig.h"

#ifdef G_HAVE_GNUC_VISIBILITY

#define IN_FILE(x) 1
#define IN_HEADER defined

#if IN_HEADER(__G_BOXED_H__)
#if IN_FILE(__G_BOXED_C__)
extern __typeof (g_boxed_copy) IA__g_boxed_copy __attribute((visibility("hidden")));
#define g_boxed_copy IA__g_boxed_copy

extern __typeof (g_boxed_free) IA__g_boxed_free __attribute((visibility("hidden")));
#define g_boxed_free IA__g_boxed_free

extern __typeof (g_boxed_type_register_static) IA__g_boxed_type_register_static __attribute((visibility("hidden")));
#define g_boxed_type_register_static IA__g_boxed_type_register_static

extern __typeof (g_date_get_type) IA__g_date_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_get_type IA__g_date_get_type

extern __typeof (g_gstring_get_type) IA__g_gstring_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_gstring_get_type IA__g_gstring_get_type

extern __typeof (g_strv_get_type) IA__g_strv_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_strv_get_type IA__g_strv_get_type

extern __typeof (g_hash_table_get_type) IA__g_hash_table_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_hash_table_get_type IA__g_hash_table_get_type

extern __typeof (g_array_get_type) IA__g_array_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_array_get_type IA__g_array_get_type

extern __typeof (g_byte_array_get_type) IA__g_byte_array_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_byte_array_get_type IA__g_byte_array_get_type

extern __typeof (g_ptr_array_get_type) IA__g_ptr_array_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ptr_array_get_type IA__g_ptr_array_get_type

extern __typeof (g_regex_get_type) IA__g_regex_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_regex_get_type IA__g_regex_get_type

extern __typeof (g_variant_type_get_gtype) IA__g_variant_type_get_gtype __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_variant_type_get_gtype IA__g_variant_type_get_gtype

extern __typeof (g_variant_get_gtype) IA__g_variant_get_gtype __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_variant_get_gtype IA__g_variant_get_gtype

extern __typeof (g_closure_get_type) IA__g_closure_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_closure_get_type IA__g_closure_get_type

extern __typeof (g_value_get_type) IA__g_value_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_value_get_type IA__g_value_get_type

extern __typeof (g_value_array_get_type) IA__g_value_array_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_value_array_get_type IA__g_value_array_get_type

extern __typeof (g_value_set_boxed) IA__g_value_set_boxed __attribute((visibility("hidden")));
#define g_value_set_boxed IA__g_value_set_boxed

extern __typeof (g_value_take_boxed) IA__g_value_take_boxed __attribute((visibility("hidden")));
#define g_value_take_boxed IA__g_value_take_boxed

extern __typeof (g_value_dup_boxed) IA__g_value_dup_boxed __attribute((visibility("hidden")));
#define g_value_dup_boxed IA__g_value_dup_boxed

extern __typeof (g_value_get_boxed) IA__g_value_get_boxed __attribute((visibility("hidden")));
#define g_value_get_boxed IA__g_value_get_boxed

extern __typeof (g_value_set_static_boxed) IA__g_value_set_static_boxed __attribute((visibility("hidden")));
#define g_value_set_static_boxed IA__g_value_set_static_boxed

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_value_set_boxed_take_ownership) IA__g_value_set_boxed_take_ownership __attribute((visibility("hidden")));
#define g_value_set_boxed_take_ownership IA__g_value_set_boxed_take_ownership

#endif
#endif
#endif
#if IN_HEADER(__G_MARSHAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
extern __typeof (g_cclosure_marshal_BOOLEAN__FLAGS) IA__g_cclosure_marshal_BOOLEAN__FLAGS __attribute((visibility("hidden")));
#define g_cclosure_marshal_BOOLEAN__FLAGS IA__g_cclosure_marshal_BOOLEAN__FLAGS

extern __typeof (g_cclosure_marshal_STRING__OBJECT_POINTER) IA__g_cclosure_marshal_STRING__OBJECT_POINTER __attribute((visibility("hidden")));
#define g_cclosure_marshal_STRING__OBJECT_POINTER IA__g_cclosure_marshal_STRING__OBJECT_POINTER

extern __typeof (g_cclosure_marshal_VOID__BOOLEAN) IA__g_cclosure_marshal_VOID__BOOLEAN __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__BOOLEAN IA__g_cclosure_marshal_VOID__BOOLEAN

extern __typeof (g_cclosure_marshal_VOID__BOXED) IA__g_cclosure_marshal_VOID__BOXED __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__BOXED IA__g_cclosure_marshal_VOID__BOXED

extern __typeof (g_cclosure_marshal_VOID__CHAR) IA__g_cclosure_marshal_VOID__CHAR __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__CHAR IA__g_cclosure_marshal_VOID__CHAR

extern __typeof (g_cclosure_marshal_VOID__DOUBLE) IA__g_cclosure_marshal_VOID__DOUBLE __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__DOUBLE IA__g_cclosure_marshal_VOID__DOUBLE

extern __typeof (g_cclosure_marshal_VOID__ENUM) IA__g_cclosure_marshal_VOID__ENUM __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__ENUM IA__g_cclosure_marshal_VOID__ENUM

extern __typeof (g_cclosure_marshal_VOID__FLAGS) IA__g_cclosure_marshal_VOID__FLAGS __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__FLAGS IA__g_cclosure_marshal_VOID__FLAGS

extern __typeof (g_cclosure_marshal_VOID__FLOAT) IA__g_cclosure_marshal_VOID__FLOAT __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__FLOAT IA__g_cclosure_marshal_VOID__FLOAT

extern __typeof (g_cclosure_marshal_VOID__INT) IA__g_cclosure_marshal_VOID__INT __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__INT IA__g_cclosure_marshal_VOID__INT

extern __typeof (g_cclosure_marshal_VOID__LONG) IA__g_cclosure_marshal_VOID__LONG __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__LONG IA__g_cclosure_marshal_VOID__LONG

extern __typeof (g_cclosure_marshal_VOID__OBJECT) IA__g_cclosure_marshal_VOID__OBJECT __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__OBJECT IA__g_cclosure_marshal_VOID__OBJECT

extern __typeof (g_cclosure_marshal_VOID__PARAM) IA__g_cclosure_marshal_VOID__PARAM __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__PARAM IA__g_cclosure_marshal_VOID__PARAM

extern __typeof (g_cclosure_marshal_VOID__POINTER) IA__g_cclosure_marshal_VOID__POINTER __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__POINTER IA__g_cclosure_marshal_VOID__POINTER

extern __typeof (g_cclosure_marshal_VOID__STRING) IA__g_cclosure_marshal_VOID__STRING __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__STRING IA__g_cclosure_marshal_VOID__STRING

extern __typeof (g_cclosure_marshal_VOID__UCHAR) IA__g_cclosure_marshal_VOID__UCHAR __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__UCHAR IA__g_cclosure_marshal_VOID__UCHAR

extern __typeof (g_cclosure_marshal_VOID__UINT) IA__g_cclosure_marshal_VOID__UINT __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__UINT IA__g_cclosure_marshal_VOID__UINT

extern __typeof (g_cclosure_marshal_VOID__UINT_POINTER) IA__g_cclosure_marshal_VOID__UINT_POINTER __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__UINT_POINTER IA__g_cclosure_marshal_VOID__UINT_POINTER

extern __typeof (g_cclosure_marshal_VOID__ULONG) IA__g_cclosure_marshal_VOID__ULONG __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__ULONG IA__g_cclosure_marshal_VOID__ULONG

extern __typeof (g_cclosure_marshal_VOID__VOID) IA__g_cclosure_marshal_VOID__VOID __attribute((visibility("hidden")));
#define g_cclosure_marshal_VOID__VOID IA__g_cclosure_marshal_VOID__VOID

#endif
#endif
#if IN_HEADER(__G_CLOSURE_H__)
#if IN_FILE(__G_CLOSURE_C__)
extern __typeof (g_cclosure_new) IA__g_cclosure_new __attribute((visibility("hidden")));
#define g_cclosure_new IA__g_cclosure_new

extern __typeof (g_cclosure_new_swap) IA__g_cclosure_new_swap __attribute((visibility("hidden")));
#define g_cclosure_new_swap IA__g_cclosure_new_swap

extern __typeof (g_closure_add_finalize_notifier) IA__g_closure_add_finalize_notifier __attribute((visibility("hidden")));
#define g_closure_add_finalize_notifier IA__g_closure_add_finalize_notifier

extern __typeof (g_closure_add_invalidate_notifier) IA__g_closure_add_invalidate_notifier __attribute((visibility("hidden")));
#define g_closure_add_invalidate_notifier IA__g_closure_add_invalidate_notifier

extern __typeof (g_closure_add_marshal_guards) IA__g_closure_add_marshal_guards __attribute((visibility("hidden")));
#define g_closure_add_marshal_guards IA__g_closure_add_marshal_guards

extern __typeof (g_closure_invalidate) IA__g_closure_invalidate __attribute((visibility("hidden")));
#define g_closure_invalidate IA__g_closure_invalidate

extern __typeof (g_closure_invoke) IA__g_closure_invoke __attribute((visibility("hidden")));
#define g_closure_invoke IA__g_closure_invoke

extern __typeof (g_closure_new_simple) IA__g_closure_new_simple __attribute((visibility("hidden")));
#define g_closure_new_simple IA__g_closure_new_simple

extern __typeof (g_closure_ref) IA__g_closure_ref __attribute((visibility("hidden")));
#define g_closure_ref IA__g_closure_ref

extern __typeof (g_closure_remove_finalize_notifier) IA__g_closure_remove_finalize_notifier __attribute((visibility("hidden")));
#define g_closure_remove_finalize_notifier IA__g_closure_remove_finalize_notifier

extern __typeof (g_closure_remove_invalidate_notifier) IA__g_closure_remove_invalidate_notifier __attribute((visibility("hidden")));
#define g_closure_remove_invalidate_notifier IA__g_closure_remove_invalidate_notifier

extern __typeof (g_closure_set_marshal) IA__g_closure_set_marshal __attribute((visibility("hidden")));
#define g_closure_set_marshal IA__g_closure_set_marshal

extern __typeof (g_closure_set_meta_marshal) IA__g_closure_set_meta_marshal __attribute((visibility("hidden")));
#define g_closure_set_meta_marshal IA__g_closure_set_meta_marshal

extern __typeof (g_closure_sink) IA__g_closure_sink __attribute((visibility("hidden")));
#define g_closure_sink IA__g_closure_sink

extern __typeof (g_closure_unref) IA__g_closure_unref __attribute((visibility("hidden")));
#define g_closure_unref IA__g_closure_unref

extern __typeof (g_signal_type_cclosure_new) IA__g_signal_type_cclosure_new __attribute((visibility("hidden")));
#define g_signal_type_cclosure_new IA__g_signal_type_cclosure_new

#endif
#endif
#if IN_HEADER(__G_ENUMS_H__)
#if IN_FILE(__G_ENUMS_C__)
extern __typeof (g_enum_complete_type_info) IA__g_enum_complete_type_info __attribute((visibility("hidden")));
#define g_enum_complete_type_info IA__g_enum_complete_type_info

extern __typeof (g_enum_get_value) IA__g_enum_get_value __attribute((visibility("hidden")));
#define g_enum_get_value IA__g_enum_get_value

extern __typeof (g_enum_get_value_by_name) IA__g_enum_get_value_by_name __attribute((visibility("hidden")));
#define g_enum_get_value_by_name IA__g_enum_get_value_by_name

extern __typeof (g_enum_get_value_by_nick) IA__g_enum_get_value_by_nick __attribute((visibility("hidden")));
#define g_enum_get_value_by_nick IA__g_enum_get_value_by_nick

extern __typeof (g_enum_register_static) IA__g_enum_register_static __attribute((visibility("hidden")));
#define g_enum_register_static IA__g_enum_register_static

extern __typeof (g_flags_complete_type_info) IA__g_flags_complete_type_info __attribute((visibility("hidden")));
#define g_flags_complete_type_info IA__g_flags_complete_type_info

extern __typeof (g_flags_get_first_value) IA__g_flags_get_first_value __attribute((visibility("hidden")));
#define g_flags_get_first_value IA__g_flags_get_first_value

extern __typeof (g_flags_get_value_by_name) IA__g_flags_get_value_by_name __attribute((visibility("hidden")));
#define g_flags_get_value_by_name IA__g_flags_get_value_by_name

extern __typeof (g_flags_get_value_by_nick) IA__g_flags_get_value_by_nick __attribute((visibility("hidden")));
#define g_flags_get_value_by_nick IA__g_flags_get_value_by_nick

extern __typeof (g_flags_register_static) IA__g_flags_register_static __attribute((visibility("hidden")));
#define g_flags_register_static IA__g_flags_register_static

extern __typeof (g_value_set_enum) IA__g_value_set_enum __attribute((visibility("hidden")));
#define g_value_set_enum IA__g_value_set_enum

extern __typeof (g_value_set_flags) IA__g_value_set_flags __attribute((visibility("hidden")));
#define g_value_set_flags IA__g_value_set_flags

extern __typeof (g_value_get_enum) IA__g_value_get_enum __attribute((visibility("hidden")));
#define g_value_get_enum IA__g_value_get_enum

extern __typeof (g_value_get_flags) IA__g_value_get_flags __attribute((visibility("hidden")));
#define g_value_get_flags IA__g_value_get_flags

#endif
#endif
#if IN_HEADER(__G_SOURCECLOSURE_H__)
#if IN_FILE(__G_SOURCECLOSURE_C__)
extern __typeof (g_io_channel_get_type) IA__g_io_channel_get_type __attribute((visibility("hidden")));
#define g_io_channel_get_type IA__g_io_channel_get_type

extern __typeof (g_io_condition_get_type) IA__g_io_condition_get_type __attribute((visibility("hidden")));
#define g_io_condition_get_type IA__g_io_condition_get_type

extern __typeof (g_source_set_closure) IA__g_source_set_closure __attribute((visibility("hidden")));
#define g_source_set_closure IA__g_source_set_closure

#endif
#endif
#if IN_HEADER(__G_OBJECT_H__)
#if IN_FILE(__G_OBJECT_C__)
extern __typeof (g_cclosure_new_object) IA__g_cclosure_new_object __attribute((visibility("hidden")));
#define g_cclosure_new_object IA__g_cclosure_new_object

extern __typeof (g_cclosure_new_object_swap) IA__g_cclosure_new_object_swap __attribute((visibility("hidden")));
#define g_cclosure_new_object_swap IA__g_cclosure_new_object_swap

extern __typeof (g_closure_new_object) IA__g_closure_new_object __attribute((visibility("hidden")));
#define g_closure_new_object IA__g_closure_new_object

extern __typeof (g_initially_unowned_get_type) IA__g_initially_unowned_get_type __attribute((visibility("hidden")));
#define g_initially_unowned_get_type IA__g_initially_unowned_get_type

extern __typeof (g_object_add_weak_pointer) IA__g_object_add_weak_pointer __attribute((visibility("hidden")));
#define g_object_add_weak_pointer IA__g_object_add_weak_pointer

extern __typeof (g_object_class_find_property) IA__g_object_class_find_property __attribute((visibility("hidden")));
#define g_object_class_find_property IA__g_object_class_find_property

extern __typeof (g_object_class_install_property) IA__g_object_class_install_property __attribute((visibility("hidden")));
#define g_object_class_install_property IA__g_object_class_install_property

extern __typeof (g_object_class_list_properties) IA__g_object_class_list_properties __attribute((visibility("hidden")));
#define g_object_class_list_properties IA__g_object_class_list_properties

extern __typeof (g_object_class_override_property) IA__g_object_class_override_property __attribute((visibility("hidden")));
#define g_object_class_override_property IA__g_object_class_override_property

extern __typeof (g_object_connect) IA__g_object_connect __attribute((visibility("hidden"))) G_GNUC_NULL_TERMINATED;
#define g_object_connect IA__g_object_connect

extern __typeof (g_object_disconnect) IA__g_object_disconnect __attribute((visibility("hidden"))) G_GNUC_NULL_TERMINATED;
#define g_object_disconnect IA__g_object_disconnect

extern __typeof (g_object_freeze_notify) IA__g_object_freeze_notify __attribute((visibility("hidden")));
#define g_object_freeze_notify IA__g_object_freeze_notify

extern __typeof (g_object_get) IA__g_object_get __attribute((visibility("hidden"))) G_GNUC_NULL_TERMINATED;
#define g_object_get IA__g_object_get

extern __typeof (g_object_get_data) IA__g_object_get_data __attribute((visibility("hidden")));
#define g_object_get_data IA__g_object_get_data

extern __typeof (g_object_get_property) IA__g_object_get_property __attribute((visibility("hidden")));
#define g_object_get_property IA__g_object_get_property

extern __typeof (g_object_get_qdata) IA__g_object_get_qdata __attribute((visibility("hidden")));
#define g_object_get_qdata IA__g_object_get_qdata

extern __typeof (g_object_get_type) IA__g_object_get_type __attribute((visibility("hidden")));
#define g_object_get_type IA__g_object_get_type

extern __typeof (g_object_get_valist) IA__g_object_get_valist __attribute((visibility("hidden")));
#define g_object_get_valist IA__g_object_get_valist

extern __typeof (g_object_interface_find_property) IA__g_object_interface_find_property __attribute((visibility("hidden")));
#define g_object_interface_find_property IA__g_object_interface_find_property

extern __typeof (g_object_interface_install_property) IA__g_object_interface_install_property __attribute((visibility("hidden")));
#define g_object_interface_install_property IA__g_object_interface_install_property

extern __typeof (g_object_interface_list_properties) IA__g_object_interface_list_properties __attribute((visibility("hidden")));
#define g_object_interface_list_properties IA__g_object_interface_list_properties

extern __typeof (g_object_new) IA__g_object_new __attribute((visibility("hidden")));
#define g_object_new IA__g_object_new

extern __typeof (g_object_newv) IA__g_object_newv __attribute((visibility("hidden")));
#define g_object_newv IA__g_object_newv

extern __typeof (g_object_new_valist) IA__g_object_new_valist __attribute((visibility("hidden")));
#define g_object_new_valist IA__g_object_new_valist

extern __typeof (g_object_notify) IA__g_object_notify __attribute((visibility("hidden")));
#define g_object_notify IA__g_object_notify

extern __typeof (g_object_is_floating) IA__g_object_is_floating __attribute((visibility("hidden")));
#define g_object_is_floating IA__g_object_is_floating

extern __typeof (g_object_ref_sink) IA__g_object_ref_sink __attribute((visibility("hidden")));
#define g_object_ref_sink IA__g_object_ref_sink

extern __typeof (g_object_force_floating) IA__g_object_force_floating __attribute((visibility("hidden")));
#define g_object_force_floating IA__g_object_force_floating

extern __typeof (g_object_ref) IA__g_object_ref __attribute((visibility("hidden")));
#define g_object_ref IA__g_object_ref

extern __typeof (g_object_unref) IA__g_object_unref __attribute((visibility("hidden")));
#define g_object_unref IA__g_object_unref

extern __typeof (g_object_remove_weak_pointer) IA__g_object_remove_weak_pointer __attribute((visibility("hidden")));
#define g_object_remove_weak_pointer IA__g_object_remove_weak_pointer

extern __typeof (g_object_run_dispose) IA__g_object_run_dispose __attribute((visibility("hidden")));
#define g_object_run_dispose IA__g_object_run_dispose

extern __typeof (g_object_set) IA__g_object_set __attribute((visibility("hidden"))) G_GNUC_NULL_TERMINATED;
#define g_object_set IA__g_object_set

extern __typeof (g_object_set_data) IA__g_object_set_data __attribute((visibility("hidden")));
#define g_object_set_data IA__g_object_set_data

extern __typeof (g_object_set_data_full) IA__g_object_set_data_full __attribute((visibility("hidden")));
#define g_object_set_data_full IA__g_object_set_data_full

extern __typeof (g_object_set_property) IA__g_object_set_property __attribute((visibility("hidden")));
#define g_object_set_property IA__g_object_set_property

extern __typeof (g_object_set_qdata) IA__g_object_set_qdata __attribute((visibility("hidden")));
#define g_object_set_qdata IA__g_object_set_qdata

extern __typeof (g_object_set_qdata_full) IA__g_object_set_qdata_full __attribute((visibility("hidden")));
#define g_object_set_qdata_full IA__g_object_set_qdata_full

extern __typeof (g_object_set_valist) IA__g_object_set_valist __attribute((visibility("hidden")));
#define g_object_set_valist IA__g_object_set_valist

extern __typeof (g_object_steal_data) IA__g_object_steal_data __attribute((visibility("hidden")));
#define g_object_steal_data IA__g_object_steal_data

extern __typeof (g_object_steal_qdata) IA__g_object_steal_qdata __attribute((visibility("hidden")));
#define g_object_steal_qdata IA__g_object_steal_qdata

extern __typeof (g_object_thaw_notify) IA__g_object_thaw_notify __attribute((visibility("hidden")));
#define g_object_thaw_notify IA__g_object_thaw_notify

extern __typeof (g_object_watch_closure) IA__g_object_watch_closure __attribute((visibility("hidden")));
#define g_object_watch_closure IA__g_object_watch_closure

extern __typeof (g_object_weak_ref) IA__g_object_weak_ref __attribute((visibility("hidden")));
#define g_object_weak_ref IA__g_object_weak_ref

extern __typeof (g_object_weak_unref) IA__g_object_weak_unref __attribute((visibility("hidden")));
#define g_object_weak_unref IA__g_object_weak_unref

extern __typeof (g_object_add_toggle_ref) IA__g_object_add_toggle_ref __attribute((visibility("hidden")));
#define g_object_add_toggle_ref IA__g_object_add_toggle_ref

extern __typeof (g_object_remove_toggle_ref) IA__g_object_remove_toggle_ref __attribute((visibility("hidden")));
#define g_object_remove_toggle_ref IA__g_object_remove_toggle_ref

extern __typeof (g_value_get_object) IA__g_value_get_object __attribute((visibility("hidden")));
#define g_value_get_object IA__g_value_get_object

extern __typeof (g_value_set_object) IA__g_value_set_object __attribute((visibility("hidden")));
#define g_value_set_object IA__g_value_set_object

extern __typeof (g_value_dup_object) IA__g_value_dup_object __attribute((visibility("hidden")));
#define g_value_dup_object IA__g_value_dup_object

extern __typeof (g_value_take_object) IA__g_value_take_object __attribute((visibility("hidden")));
#define g_value_take_object IA__g_value_take_object

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_value_set_object_take_ownership) IA__g_value_set_object_take_ownership __attribute((visibility("hidden")));
#define g_value_set_object_take_ownership IA__g_value_set_object_take_ownership

extern __typeof (g_object_compat_control) IA__g_object_compat_control __attribute((visibility("hidden")));
#define g_object_compat_control IA__g_object_compat_control

#endif
extern __typeof (g_signal_connect_object) IA__g_signal_connect_object __attribute((visibility("hidden")));
#define g_signal_connect_object IA__g_signal_connect_object

#endif
#endif
#if IN_HEADER(__G_PARAMSPECS_H__)
#if IN_FILE(__G_PARAMSPECS_C__)
extern __typeof (g_param_spec_boolean) IA__g_param_spec_boolean __attribute((visibility("hidden")));
#define g_param_spec_boolean IA__g_param_spec_boolean

extern __typeof (g_param_spec_boxed) IA__g_param_spec_boxed __attribute((visibility("hidden")));
#define g_param_spec_boxed IA__g_param_spec_boxed

extern __typeof (g_param_spec_char) IA__g_param_spec_char __attribute((visibility("hidden")));
#define g_param_spec_char IA__g_param_spec_char

extern __typeof (g_param_spec_double) IA__g_param_spec_double __attribute((visibility("hidden")));
#define g_param_spec_double IA__g_param_spec_double

extern __typeof (g_param_spec_enum) IA__g_param_spec_enum __attribute((visibility("hidden")));
#define g_param_spec_enum IA__g_param_spec_enum

extern __typeof (g_param_spec_flags) IA__g_param_spec_flags __attribute((visibility("hidden")));
#define g_param_spec_flags IA__g_param_spec_flags

extern __typeof (g_param_spec_float) IA__g_param_spec_float __attribute((visibility("hidden")));
#define g_param_spec_float IA__g_param_spec_float

extern __typeof (g_param_spec_int) IA__g_param_spec_int __attribute((visibility("hidden")));
#define g_param_spec_int IA__g_param_spec_int

extern __typeof (g_param_spec_int64) IA__g_param_spec_int64 __attribute((visibility("hidden")));
#define g_param_spec_int64 IA__g_param_spec_int64

extern __typeof (g_param_spec_long) IA__g_param_spec_long __attribute((visibility("hidden")));
#define g_param_spec_long IA__g_param_spec_long

extern __typeof (g_param_spec_object) IA__g_param_spec_object __attribute((visibility("hidden")));
#define g_param_spec_object IA__g_param_spec_object

extern __typeof (g_param_spec_override) IA__g_param_spec_override __attribute((visibility("hidden")));
#define g_param_spec_override IA__g_param_spec_override

extern __typeof (g_param_spec_gtype) IA__g_param_spec_gtype __attribute((visibility("hidden")));
#define g_param_spec_gtype IA__g_param_spec_gtype

extern __typeof (g_param_spec_param) IA__g_param_spec_param __attribute((visibility("hidden")));
#define g_param_spec_param IA__g_param_spec_param

extern __typeof (g_param_spec_pointer) IA__g_param_spec_pointer __attribute((visibility("hidden")));
#define g_param_spec_pointer IA__g_param_spec_pointer

extern __typeof (g_param_spec_string) IA__g_param_spec_string __attribute((visibility("hidden")));
#define g_param_spec_string IA__g_param_spec_string

extern __typeof (g_param_spec_uchar) IA__g_param_spec_uchar __attribute((visibility("hidden")));
#define g_param_spec_uchar IA__g_param_spec_uchar

extern __typeof (g_param_spec_uint) IA__g_param_spec_uint __attribute((visibility("hidden")));
#define g_param_spec_uint IA__g_param_spec_uint

extern __typeof (g_param_spec_uint64) IA__g_param_spec_uint64 __attribute((visibility("hidden")));
#define g_param_spec_uint64 IA__g_param_spec_uint64

extern __typeof (g_param_spec_ulong) IA__g_param_spec_ulong __attribute((visibility("hidden")));
#define g_param_spec_ulong IA__g_param_spec_ulong

extern __typeof (g_param_spec_unichar) IA__g_param_spec_unichar __attribute((visibility("hidden")));
#define g_param_spec_unichar IA__g_param_spec_unichar

extern __typeof (g_param_spec_value_array) IA__g_param_spec_value_array __attribute((visibility("hidden")));
#define g_param_spec_value_array IA__g_param_spec_value_array

#endif
#endif
#if IN_HEADER(__G_PARAM_H__)
#if IN_FILE(__G_PARAM_C__) 
extern __typeof (g_param_spec_get_blurb) IA__g_param_spec_get_blurb __attribute((visibility("hidden")));
#define g_param_spec_get_blurb IA__g_param_spec_get_blurb

extern __typeof (g_param_spec_get_name) IA__g_param_spec_get_name __attribute((visibility("hidden")));
#define g_param_spec_get_name IA__g_param_spec_get_name

extern __typeof (g_param_spec_get_nick) IA__g_param_spec_get_nick __attribute((visibility("hidden")));
#define g_param_spec_get_nick IA__g_param_spec_get_nick

extern __typeof (g_param_spec_get_redirect_target) IA__g_param_spec_get_redirect_target __attribute((visibility("hidden")));
#define g_param_spec_get_redirect_target IA__g_param_spec_get_redirect_target

extern __typeof (g_param_spec_internal) IA__g_param_spec_internal __attribute((visibility("hidden")));
#define g_param_spec_internal IA__g_param_spec_internal

extern __typeof (g_param_type_register_static) IA__g_param_type_register_static __attribute((visibility("hidden")));
#define g_param_type_register_static IA__g_param_type_register_static

extern __typeof (g_param_spec_ref) IA__g_param_spec_ref __attribute((visibility("hidden")));
#define g_param_spec_ref IA__g_param_spec_ref

extern __typeof (g_param_spec_ref_sink) IA__g_param_spec_ref_sink __attribute((visibility("hidden")));
#define g_param_spec_ref_sink IA__g_param_spec_ref_sink

extern __typeof (g_param_spec_unref) IA__g_param_spec_unref __attribute((visibility("hidden")));
#define g_param_spec_unref IA__g_param_spec_unref

extern __typeof (g_param_spec_sink) IA__g_param_spec_sink __attribute((visibility("hidden")));
#define g_param_spec_sink IA__g_param_spec_sink

extern __typeof (g_param_spec_steal_qdata) IA__g_param_spec_steal_qdata __attribute((visibility("hidden")));
#define g_param_spec_steal_qdata IA__g_param_spec_steal_qdata

extern __typeof (g_param_spec_set_qdata) IA__g_param_spec_set_qdata __attribute((visibility("hidden")));
#define g_param_spec_set_qdata IA__g_param_spec_set_qdata

extern __typeof (g_param_spec_set_qdata_full) IA__g_param_spec_set_qdata_full __attribute((visibility("hidden")));
#define g_param_spec_set_qdata_full IA__g_param_spec_set_qdata_full

extern __typeof (g_param_spec_get_qdata) IA__g_param_spec_get_qdata __attribute((visibility("hidden")));
#define g_param_spec_get_qdata IA__g_param_spec_get_qdata

extern __typeof (g_param_value_convert) IA__g_param_value_convert __attribute((visibility("hidden")));
#define g_param_value_convert IA__g_param_value_convert

extern __typeof (g_param_value_defaults) IA__g_param_value_defaults __attribute((visibility("hidden")));
#define g_param_value_defaults IA__g_param_value_defaults

extern __typeof (g_param_values_cmp) IA__g_param_values_cmp __attribute((visibility("hidden")));
#define g_param_values_cmp IA__g_param_values_cmp

extern __typeof (g_param_value_set_default) IA__g_param_value_set_default __attribute((visibility("hidden")));
#define g_param_value_set_default IA__g_param_value_set_default

extern __typeof (g_param_value_validate) IA__g_param_value_validate __attribute((visibility("hidden")));
#define g_param_value_validate IA__g_param_value_validate

extern __typeof (g_param_spec_pool_insert) IA__g_param_spec_pool_insert __attribute((visibility("hidden")));
#define g_param_spec_pool_insert IA__g_param_spec_pool_insert

extern __typeof (g_param_spec_pool_list) IA__g_param_spec_pool_list __attribute((visibility("hidden")));
#define g_param_spec_pool_list IA__g_param_spec_pool_list

extern __typeof (g_param_spec_pool_list_owned) IA__g_param_spec_pool_list_owned __attribute((visibility("hidden")));
#define g_param_spec_pool_list_owned IA__g_param_spec_pool_list_owned

extern __typeof (g_param_spec_pool_lookup) IA__g_param_spec_pool_lookup __attribute((visibility("hidden")));
#define g_param_spec_pool_lookup IA__g_param_spec_pool_lookup

extern __typeof (g_param_spec_pool_new) IA__g_param_spec_pool_new __attribute((visibility("hidden")));
#define g_param_spec_pool_new IA__g_param_spec_pool_new

extern __typeof (g_param_spec_pool_remove) IA__g_param_spec_pool_remove __attribute((visibility("hidden")));
#define g_param_spec_pool_remove IA__g_param_spec_pool_remove

extern __typeof (g_value_get_param) IA__g_value_get_param __attribute((visibility("hidden")));
#define g_value_get_param IA__g_value_get_param

extern __typeof (g_value_set_param) IA__g_value_set_param __attribute((visibility("hidden")));
#define g_value_set_param IA__g_value_set_param

extern __typeof (g_value_dup_param) IA__g_value_dup_param __attribute((visibility("hidden")));
#define g_value_dup_param IA__g_value_dup_param

extern __typeof (g_value_take_param) IA__g_value_take_param __attribute((visibility("hidden")));
#define g_value_take_param IA__g_value_take_param

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_value_set_param_take_ownership) IA__g_value_set_param_take_ownership __attribute((visibility("hidden")));
#define g_value_set_param_take_ownership IA__g_value_set_param_take_ownership

#endif
#endif
#endif
#if IN_HEADER(__G_VALUETYPES_H__)
#if IN_FILE(__G_VALUETYPES_C__)
extern __typeof (g_pointer_type_register_static) IA__g_pointer_type_register_static __attribute((visibility("hidden")));
#define g_pointer_type_register_static IA__g_pointer_type_register_static

extern __typeof (g_strdup_value_contents) IA__g_strdup_value_contents __attribute((visibility("hidden")));
#define g_strdup_value_contents IA__g_strdup_value_contents

extern __typeof (g_value_set_boolean) IA__g_value_set_boolean __attribute((visibility("hidden")));
#define g_value_set_boolean IA__g_value_set_boolean

extern __typeof (g_value_set_char) IA__g_value_set_char __attribute((visibility("hidden")));
#define g_value_set_char IA__g_value_set_char

extern __typeof (g_value_set_double) IA__g_value_set_double __attribute((visibility("hidden")));
#define g_value_set_double IA__g_value_set_double

extern __typeof (g_value_set_float) IA__g_value_set_float __attribute((visibility("hidden")));
#define g_value_set_float IA__g_value_set_float

extern __typeof (g_value_set_int) IA__g_value_set_int __attribute((visibility("hidden")));
#define g_value_set_int IA__g_value_set_int

extern __typeof (g_value_set_int64) IA__g_value_set_int64 __attribute((visibility("hidden")));
#define g_value_set_int64 IA__g_value_set_int64

extern __typeof (g_value_set_long) IA__g_value_set_long __attribute((visibility("hidden")));
#define g_value_set_long IA__g_value_set_long

extern __typeof (g_value_set_pointer) IA__g_value_set_pointer __attribute((visibility("hidden")));
#define g_value_set_pointer IA__g_value_set_pointer

extern __typeof (g_value_set_static_string) IA__g_value_set_static_string __attribute((visibility("hidden")));
#define g_value_set_static_string IA__g_value_set_static_string

extern __typeof (g_value_set_string) IA__g_value_set_string __attribute((visibility("hidden")));
#define g_value_set_string IA__g_value_set_string

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_value_set_string_take_ownership) IA__g_value_set_string_take_ownership __attribute((visibility("hidden")));
#define g_value_set_string_take_ownership IA__g_value_set_string_take_ownership

#endif
extern __typeof (g_value_set_uchar) IA__g_value_set_uchar __attribute((visibility("hidden")));
#define g_value_set_uchar IA__g_value_set_uchar

extern __typeof (g_value_set_uint) IA__g_value_set_uint __attribute((visibility("hidden")));
#define g_value_set_uint IA__g_value_set_uint

extern __typeof (g_value_set_uint64) IA__g_value_set_uint64 __attribute((visibility("hidden")));
#define g_value_set_uint64 IA__g_value_set_uint64

extern __typeof (g_value_set_ulong) IA__g_value_set_ulong __attribute((visibility("hidden")));
#define g_value_set_ulong IA__g_value_set_ulong

extern __typeof (g_value_dup_string) IA__g_value_dup_string __attribute((visibility("hidden")));
#define g_value_dup_string IA__g_value_dup_string

extern __typeof (g_value_get_boolean) IA__g_value_get_boolean __attribute((visibility("hidden")));
#define g_value_get_boolean IA__g_value_get_boolean

extern __typeof (g_value_get_char) IA__g_value_get_char __attribute((visibility("hidden")));
#define g_value_get_char IA__g_value_get_char

extern __typeof (g_value_get_double) IA__g_value_get_double __attribute((visibility("hidden")));
#define g_value_get_double IA__g_value_get_double

extern __typeof (g_value_get_float) IA__g_value_get_float __attribute((visibility("hidden")));
#define g_value_get_float IA__g_value_get_float

extern __typeof (g_value_get_int) IA__g_value_get_int __attribute((visibility("hidden")));
#define g_value_get_int IA__g_value_get_int

extern __typeof (g_value_get_int64) IA__g_value_get_int64 __attribute((visibility("hidden")));
#define g_value_get_int64 IA__g_value_get_int64

extern __typeof (g_value_get_long) IA__g_value_get_long __attribute((visibility("hidden")));
#define g_value_get_long IA__g_value_get_long

extern __typeof (g_value_get_pointer) IA__g_value_get_pointer __attribute((visibility("hidden")));
#define g_value_get_pointer IA__g_value_get_pointer

extern __typeof (g_value_get_string) IA__g_value_get_string __attribute((visibility("hidden")));
#define g_value_get_string IA__g_value_get_string

extern __typeof (g_value_get_uchar) IA__g_value_get_uchar __attribute((visibility("hidden")));
#define g_value_get_uchar IA__g_value_get_uchar

extern __typeof (g_value_get_uint) IA__g_value_get_uint __attribute((visibility("hidden")));
#define g_value_get_uint IA__g_value_get_uint

extern __typeof (g_value_get_uint64) IA__g_value_get_uint64 __attribute((visibility("hidden")));
#define g_value_get_uint64 IA__g_value_get_uint64

extern __typeof (g_value_get_ulong) IA__g_value_get_ulong __attribute((visibility("hidden")));
#define g_value_get_ulong IA__g_value_get_ulong

extern __typeof (g_value_take_string) IA__g_value_take_string __attribute((visibility("hidden")));
#define g_value_take_string IA__g_value_take_string

extern __typeof (g_gtype_get_type) IA__g_gtype_get_type __attribute((visibility("hidden")));
#define g_gtype_get_type IA__g_gtype_get_type

extern __typeof (g_value_set_gtype) IA__g_value_set_gtype __attribute((visibility("hidden")));
#define g_value_set_gtype IA__g_value_set_gtype

extern __typeof (g_value_get_gtype) IA__g_value_get_gtype __attribute((visibility("hidden")));
#define g_value_get_gtype IA__g_value_get_gtype

#endif
#endif
#if IN_HEADER(__G_SIGNAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
extern __typeof (g_signal_accumulator_true_handled) IA__g_signal_accumulator_true_handled __attribute((visibility("hidden")));
#define g_signal_accumulator_true_handled IA__g_signal_accumulator_true_handled

extern __typeof (g_signal_add_emission_hook) IA__g_signal_add_emission_hook __attribute((visibility("hidden")));
#define g_signal_add_emission_hook IA__g_signal_add_emission_hook

extern __typeof (g_signal_chain_from_overridden) IA__g_signal_chain_from_overridden __attribute((visibility("hidden")));
#define g_signal_chain_from_overridden IA__g_signal_chain_from_overridden

extern __typeof (g_signal_chain_from_overridden_handler) IA__g_signal_chain_from_overridden_handler __attribute((visibility("hidden")));
#define g_signal_chain_from_overridden_handler IA__g_signal_chain_from_overridden_handler

extern __typeof (g_signal_connect_closure) IA__g_signal_connect_closure __attribute((visibility("hidden")));
#define g_signal_connect_closure IA__g_signal_connect_closure

extern __typeof (g_signal_connect_closure_by_id) IA__g_signal_connect_closure_by_id __attribute((visibility("hidden")));
#define g_signal_connect_closure_by_id IA__g_signal_connect_closure_by_id

extern __typeof (g_signal_connect_data) IA__g_signal_connect_data __attribute((visibility("hidden")));
#define g_signal_connect_data IA__g_signal_connect_data

extern __typeof (g_signal_emit) IA__g_signal_emit __attribute((visibility("hidden")));
#define g_signal_emit IA__g_signal_emit

extern __typeof (g_signal_emit_by_name) IA__g_signal_emit_by_name __attribute((visibility("hidden")));
#define g_signal_emit_by_name IA__g_signal_emit_by_name

extern __typeof (g_signal_emitv) IA__g_signal_emitv __attribute((visibility("hidden")));
#define g_signal_emitv IA__g_signal_emitv

extern __typeof (g_signal_emit_valist) IA__g_signal_emit_valist __attribute((visibility("hidden")));
#define g_signal_emit_valist IA__g_signal_emit_valist

extern __typeof (g_signal_get_invocation_hint) IA__g_signal_get_invocation_hint __attribute((visibility("hidden")));
#define g_signal_get_invocation_hint IA__g_signal_get_invocation_hint

extern __typeof (g_signal_handler_block) IA__g_signal_handler_block __attribute((visibility("hidden")));
#define g_signal_handler_block IA__g_signal_handler_block

extern __typeof (g_signal_handler_disconnect) IA__g_signal_handler_disconnect __attribute((visibility("hidden")));
#define g_signal_handler_disconnect IA__g_signal_handler_disconnect

extern __typeof (g_signal_handler_find) IA__g_signal_handler_find __attribute((visibility("hidden")));
#define g_signal_handler_find IA__g_signal_handler_find

extern __typeof (g_signal_handler_is_connected) IA__g_signal_handler_is_connected __attribute((visibility("hidden")));
#define g_signal_handler_is_connected IA__g_signal_handler_is_connected

extern __typeof (g_signal_handlers_block_matched) IA__g_signal_handlers_block_matched __attribute((visibility("hidden")));
#define g_signal_handlers_block_matched IA__g_signal_handlers_block_matched

extern __typeof (g_signal_handlers_destroy) IA__g_signal_handlers_destroy __attribute((visibility("hidden")));
#define g_signal_handlers_destroy IA__g_signal_handlers_destroy

extern __typeof (g_signal_handlers_disconnect_matched) IA__g_signal_handlers_disconnect_matched __attribute((visibility("hidden")));
#define g_signal_handlers_disconnect_matched IA__g_signal_handlers_disconnect_matched

extern __typeof (g_signal_handlers_unblock_matched) IA__g_signal_handlers_unblock_matched __attribute((visibility("hidden")));
#define g_signal_handlers_unblock_matched IA__g_signal_handlers_unblock_matched

extern __typeof (g_signal_handler_unblock) IA__g_signal_handler_unblock __attribute((visibility("hidden")));
#define g_signal_handler_unblock IA__g_signal_handler_unblock

extern __typeof (g_signal_has_handler_pending) IA__g_signal_has_handler_pending __attribute((visibility("hidden")));
#define g_signal_has_handler_pending IA__g_signal_has_handler_pending

extern __typeof (g_signal_list_ids) IA__g_signal_list_ids __attribute((visibility("hidden")));
#define g_signal_list_ids IA__g_signal_list_ids

extern __typeof (g_signal_lookup) IA__g_signal_lookup __attribute((visibility("hidden")));
#define g_signal_lookup IA__g_signal_lookup

extern __typeof (g_signal_name) IA__g_signal_name __attribute((visibility("hidden")));
#define g_signal_name IA__g_signal_name

extern __typeof (g_signal_new) IA__g_signal_new __attribute((visibility("hidden")));
#define g_signal_new IA__g_signal_new

extern __typeof (g_signal_newv) IA__g_signal_newv __attribute((visibility("hidden")));
#define g_signal_newv IA__g_signal_newv

extern __typeof (g_signal_new_valist) IA__g_signal_new_valist __attribute((visibility("hidden")));
#define g_signal_new_valist IA__g_signal_new_valist

extern __typeof (g_signal_new_class_handler) IA__g_signal_new_class_handler __attribute((visibility("hidden")));
#define g_signal_new_class_handler IA__g_signal_new_class_handler

extern __typeof (g_signal_override_class_closure) IA__g_signal_override_class_closure __attribute((visibility("hidden")));
#define g_signal_override_class_closure IA__g_signal_override_class_closure

extern __typeof (g_signal_override_class_handler) IA__g_signal_override_class_handler __attribute((visibility("hidden")));
#define g_signal_override_class_handler IA__g_signal_override_class_handler

extern __typeof (g_signal_parse_name) IA__g_signal_parse_name __attribute((visibility("hidden")));
#define g_signal_parse_name IA__g_signal_parse_name

extern __typeof (g_signal_query) IA__g_signal_query __attribute((visibility("hidden")));
#define g_signal_query IA__g_signal_query

extern __typeof (g_signal_remove_emission_hook) IA__g_signal_remove_emission_hook __attribute((visibility("hidden")));
#define g_signal_remove_emission_hook IA__g_signal_remove_emission_hook

extern __typeof (g_signal_stop_emission) IA__g_signal_stop_emission __attribute((visibility("hidden")));
#define g_signal_stop_emission IA__g_signal_stop_emission

extern __typeof (g_signal_stop_emission_by_name) IA__g_signal_stop_emission_by_name __attribute((visibility("hidden")));
#define g_signal_stop_emission_by_name IA__g_signal_stop_emission_by_name

#endif
#endif
#if IN_HEADER(__G_TYPE_H__)
#if IN_FILE(__G_TYPE_C__)
extern __typeof (g_type_add_class_cache_func) IA__g_type_add_class_cache_func __attribute((visibility("hidden")));
#define g_type_add_class_cache_func IA__g_type_add_class_cache_func

extern __typeof (g_type_add_interface_check) IA__g_type_add_interface_check __attribute((visibility("hidden")));
#define g_type_add_interface_check IA__g_type_add_interface_check

extern __typeof (g_type_add_interface_dynamic) IA__g_type_add_interface_dynamic __attribute((visibility("hidden")));
#define g_type_add_interface_dynamic IA__g_type_add_interface_dynamic

extern __typeof (g_type_add_interface_static) IA__g_type_add_interface_static __attribute((visibility("hidden")));
#define g_type_add_interface_static IA__g_type_add_interface_static

extern __typeof (g_type_check_class_cast) IA__g_type_check_class_cast __attribute((visibility("hidden")));
#define g_type_check_class_cast IA__g_type_check_class_cast

extern __typeof (g_type_check_class_is_a) IA__g_type_check_class_is_a __attribute((visibility("hidden")));
#define g_type_check_class_is_a IA__g_type_check_class_is_a

extern __typeof (g_type_check_instance) IA__g_type_check_instance __attribute((visibility("hidden")));
#define g_type_check_instance IA__g_type_check_instance

extern __typeof (g_type_check_instance_cast) IA__g_type_check_instance_cast __attribute((visibility("hidden")));
#define g_type_check_instance_cast IA__g_type_check_instance_cast

extern __typeof (g_type_check_instance_is_a) IA__g_type_check_instance_is_a __attribute((visibility("hidden")));
#define g_type_check_instance_is_a IA__g_type_check_instance_is_a

extern __typeof (g_type_check_is_value_type) IA__g_type_check_is_value_type __attribute((visibility("hidden")));
#define g_type_check_is_value_type IA__g_type_check_is_value_type

extern __typeof (g_type_check_value) IA__g_type_check_value __attribute((visibility("hidden")));
#define g_type_check_value IA__g_type_check_value

extern __typeof (g_type_check_value_holds) IA__g_type_check_value_holds __attribute((visibility("hidden")));
#define g_type_check_value_holds IA__g_type_check_value_holds

extern __typeof (g_type_children) IA__g_type_children __attribute((visibility("hidden")));
#define g_type_children IA__g_type_children

extern __typeof (g_type_class_add_private) IA__g_type_class_add_private __attribute((visibility("hidden")));
#define g_type_class_add_private IA__g_type_class_add_private

extern __typeof (g_type_class_peek) IA__g_type_class_peek __attribute((visibility("hidden")));
#define g_type_class_peek IA__g_type_class_peek

extern __typeof (g_type_class_peek_parent) IA__g_type_class_peek_parent __attribute((visibility("hidden")));
#define g_type_class_peek_parent IA__g_type_class_peek_parent

extern __typeof (g_type_class_peek_static) IA__g_type_class_peek_static __attribute((visibility("hidden")));
#define g_type_class_peek_static IA__g_type_class_peek_static

extern __typeof (g_type_class_ref) IA__g_type_class_ref __attribute((visibility("hidden")));
#define g_type_class_ref IA__g_type_class_ref

extern __typeof (g_type_class_unref) IA__g_type_class_unref __attribute((visibility("hidden")));
#define g_type_class_unref IA__g_type_class_unref

extern __typeof (g_type_class_unref_uncached) IA__g_type_class_unref_uncached __attribute((visibility("hidden")));
#define g_type_class_unref_uncached IA__g_type_class_unref_uncached

extern __typeof (g_type_create_instance) IA__g_type_create_instance __attribute((visibility("hidden")));
#define g_type_create_instance IA__g_type_create_instance

extern __typeof (g_type_default_interface_peek) IA__g_type_default_interface_peek __attribute((visibility("hidden")));
#define g_type_default_interface_peek IA__g_type_default_interface_peek

extern __typeof (g_type_default_interface_ref) IA__g_type_default_interface_ref __attribute((visibility("hidden")));
#define g_type_default_interface_ref IA__g_type_default_interface_ref

extern __typeof (g_type_default_interface_unref) IA__g_type_default_interface_unref __attribute((visibility("hidden")));
#define g_type_default_interface_unref IA__g_type_default_interface_unref

extern __typeof (g_type_depth) IA__g_type_depth __attribute((visibility("hidden")));
#define g_type_depth IA__g_type_depth

extern __typeof (g_type_free_instance) IA__g_type_free_instance __attribute((visibility("hidden")));
#define g_type_free_instance IA__g_type_free_instance

extern __typeof (g_type_from_name) IA__g_type_from_name __attribute((visibility("hidden")));
#define g_type_from_name IA__g_type_from_name

extern __typeof (g_type_fundamental) IA__g_type_fundamental __attribute((visibility("hidden")));
#define g_type_fundamental IA__g_type_fundamental

extern __typeof (g_type_fundamental_next) IA__g_type_fundamental_next __attribute((visibility("hidden")));
#define g_type_fundamental_next IA__g_type_fundamental_next

extern __typeof (g_type_get_plugin) IA__g_type_get_plugin __attribute((visibility("hidden")));
#define g_type_get_plugin IA__g_type_get_plugin

extern __typeof (g_type_get_qdata) IA__g_type_get_qdata __attribute((visibility("hidden")));
#define g_type_get_qdata IA__g_type_get_qdata

extern __typeof (g_type_init) IA__g_type_init __attribute((visibility("hidden")));
#define g_type_init IA__g_type_init

extern __typeof (g_type_init_with_debug_flags) IA__g_type_init_with_debug_flags __attribute((visibility("hidden")));
#define g_type_init_with_debug_flags IA__g_type_init_with_debug_flags

extern __typeof (g_type_instance_get_private) IA__g_type_instance_get_private __attribute((visibility("hidden")));
#define g_type_instance_get_private IA__g_type_instance_get_private

extern __typeof (g_type_interface_add_prerequisite) IA__g_type_interface_add_prerequisite __attribute((visibility("hidden")));
#define g_type_interface_add_prerequisite IA__g_type_interface_add_prerequisite

extern __typeof (g_type_interface_get_plugin) IA__g_type_interface_get_plugin __attribute((visibility("hidden")));
#define g_type_interface_get_plugin IA__g_type_interface_get_plugin

extern __typeof (g_type_interface_peek) IA__g_type_interface_peek __attribute((visibility("hidden")));
#define g_type_interface_peek IA__g_type_interface_peek

extern __typeof (g_type_interface_peek_parent) IA__g_type_interface_peek_parent __attribute((visibility("hidden")));
#define g_type_interface_peek_parent IA__g_type_interface_peek_parent

extern __typeof (g_type_interface_prerequisites) IA__g_type_interface_prerequisites __attribute((visibility("hidden")));
#define g_type_interface_prerequisites IA__g_type_interface_prerequisites

extern __typeof (g_type_interfaces) IA__g_type_interfaces __attribute((visibility("hidden")));
#define g_type_interfaces IA__g_type_interfaces

extern __typeof (g_type_is_a) IA__g_type_is_a __attribute((visibility("hidden")));
#define g_type_is_a IA__g_type_is_a

extern __typeof (g_type_name) IA__g_type_name __attribute((visibility("hidden")));
#define g_type_name IA__g_type_name

extern __typeof (g_type_name_from_class) IA__g_type_name_from_class __attribute((visibility("hidden")));
#define g_type_name_from_class IA__g_type_name_from_class

extern __typeof (g_type_name_from_instance) IA__g_type_name_from_instance __attribute((visibility("hidden")));
#define g_type_name_from_instance IA__g_type_name_from_instance

extern __typeof (g_type_next_base) IA__g_type_next_base __attribute((visibility("hidden")));
#define g_type_next_base IA__g_type_next_base

extern __typeof (g_type_parent) IA__g_type_parent __attribute((visibility("hidden")));
#define g_type_parent IA__g_type_parent

extern __typeof (g_type_qname) IA__g_type_qname __attribute((visibility("hidden")));
#define g_type_qname IA__g_type_qname

extern __typeof (g_type_query) IA__g_type_query __attribute((visibility("hidden")));
#define g_type_query IA__g_type_query

extern __typeof (g_type_register_dynamic) IA__g_type_register_dynamic __attribute((visibility("hidden")));
#define g_type_register_dynamic IA__g_type_register_dynamic

extern __typeof (g_type_register_fundamental) IA__g_type_register_fundamental __attribute((visibility("hidden")));
#define g_type_register_fundamental IA__g_type_register_fundamental

extern __typeof (g_type_register_static) IA__g_type_register_static __attribute((visibility("hidden")));
#define g_type_register_static IA__g_type_register_static

extern __typeof (g_type_register_static_simple) IA__g_type_register_static_simple __attribute((visibility("hidden")));
#define g_type_register_static_simple IA__g_type_register_static_simple

extern __typeof (g_type_remove_class_cache_func) IA__g_type_remove_class_cache_func __attribute((visibility("hidden")));
#define g_type_remove_class_cache_func IA__g_type_remove_class_cache_func

extern __typeof (g_type_remove_interface_check) IA__g_type_remove_interface_check __attribute((visibility("hidden")));
#define g_type_remove_interface_check IA__g_type_remove_interface_check

extern __typeof (g_type_set_qdata) IA__g_type_set_qdata __attribute((visibility("hidden")));
#define g_type_set_qdata IA__g_type_set_qdata

extern __typeof (g_type_test_flags) IA__g_type_test_flags __attribute((visibility("hidden")));
#define g_type_test_flags IA__g_type_test_flags

extern __typeof (g_type_value_table_peek) IA__g_type_value_table_peek __attribute((visibility("hidden")));
#define g_type_value_table_peek IA__g_type_value_table_peek

extern __typeof (g_type_class_get_private) IA__g_type_class_get_private __attribute((visibility("hidden")));
#define g_type_class_get_private IA__g_type_class_get_private

extern __typeof (g_type_add_class_private) IA__g_type_add_class_private __attribute((visibility("hidden")));
#define g_type_add_class_private IA__g_type_add_class_private

#endif
#endif
#if IN_HEADER(__G_TYPE_MODULE_H__)
#if IN_FILE(__G_TYPE_MODULE_C__)
extern __typeof (g_type_module_add_interface) IA__g_type_module_add_interface __attribute((visibility("hidden")));
#define g_type_module_add_interface IA__g_type_module_add_interface

extern __typeof (g_type_module_get_type) IA__g_type_module_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_type_module_get_type IA__g_type_module_get_type

extern __typeof (g_type_module_register_enum) IA__g_type_module_register_enum __attribute((visibility("hidden")));
#define g_type_module_register_enum IA__g_type_module_register_enum

extern __typeof (g_type_module_register_flags) IA__g_type_module_register_flags __attribute((visibility("hidden")));
#define g_type_module_register_flags IA__g_type_module_register_flags

extern __typeof (g_type_module_register_type) IA__g_type_module_register_type __attribute((visibility("hidden")));
#define g_type_module_register_type IA__g_type_module_register_type

extern __typeof (g_type_module_set_name) IA__g_type_module_set_name __attribute((visibility("hidden")));
#define g_type_module_set_name IA__g_type_module_set_name

extern __typeof (g_type_module_unuse) IA__g_type_module_unuse __attribute((visibility("hidden")));
#define g_type_module_unuse IA__g_type_module_unuse

extern __typeof (g_type_module_use) IA__g_type_module_use __attribute((visibility("hidden")));
#define g_type_module_use IA__g_type_module_use

#endif
#endif
#if IN_HEADER(__G_VALUE_ARRAY_H__)
#if IN_FILE(__G_VALUE_ARRAY_C__)
extern __typeof (g_value_array_append) IA__g_value_array_append __attribute((visibility("hidden")));
#define g_value_array_append IA__g_value_array_append

extern __typeof (g_value_array_copy) IA__g_value_array_copy __attribute((visibility("hidden")));
#define g_value_array_copy IA__g_value_array_copy

extern __typeof (g_value_array_free) IA__g_value_array_free __attribute((visibility("hidden")));
#define g_value_array_free IA__g_value_array_free

extern __typeof (g_value_array_get_nth) IA__g_value_array_get_nth __attribute((visibility("hidden")));
#define g_value_array_get_nth IA__g_value_array_get_nth

extern __typeof (g_value_array_insert) IA__g_value_array_insert __attribute((visibility("hidden")));
#define g_value_array_insert IA__g_value_array_insert

extern __typeof (g_value_array_new) IA__g_value_array_new __attribute((visibility("hidden")));
#define g_value_array_new IA__g_value_array_new

extern __typeof (g_value_array_prepend) IA__g_value_array_prepend __attribute((visibility("hidden")));
#define g_value_array_prepend IA__g_value_array_prepend

extern __typeof (g_value_array_remove) IA__g_value_array_remove __attribute((visibility("hidden")));
#define g_value_array_remove IA__g_value_array_remove

extern __typeof (g_value_array_sort) IA__g_value_array_sort __attribute((visibility("hidden")));
#define g_value_array_sort IA__g_value_array_sort

extern __typeof (g_value_array_sort_with_data) IA__g_value_array_sort_with_data __attribute((visibility("hidden")));
#define g_value_array_sort_with_data IA__g_value_array_sort_with_data

#endif
#endif
#if IN_HEADER(__G_TYPE_PLUGIN_H__)
#if IN_FILE(__G_TYPE_PLUGIN_C__)
extern __typeof (g_type_plugin_complete_interface_info) IA__g_type_plugin_complete_interface_info __attribute((visibility("hidden")));
#define g_type_plugin_complete_interface_info IA__g_type_plugin_complete_interface_info

extern __typeof (g_type_plugin_complete_type_info) IA__g_type_plugin_complete_type_info __attribute((visibility("hidden")));
#define g_type_plugin_complete_type_info IA__g_type_plugin_complete_type_info

extern __typeof (g_type_plugin_get_type) IA__g_type_plugin_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_type_plugin_get_type IA__g_type_plugin_get_type

extern __typeof (g_type_plugin_unuse) IA__g_type_plugin_unuse __attribute((visibility("hidden")));
#define g_type_plugin_unuse IA__g_type_plugin_unuse

extern __typeof (g_type_plugin_use) IA__g_type_plugin_use __attribute((visibility("hidden")));
#define g_type_plugin_use IA__g_type_plugin_use

#endif
#endif
#if IN_HEADER(__G_VALUE_H__)
#if IN_FILE(__G_VALUE_C__)
extern __typeof (g_value_copy) IA__g_value_copy __attribute((visibility("hidden")));
#define g_value_copy IA__g_value_copy

extern __typeof (g_value_fits_pointer) IA__g_value_fits_pointer __attribute((visibility("hidden")));
#define g_value_fits_pointer IA__g_value_fits_pointer

extern __typeof (g_value_init) IA__g_value_init __attribute((visibility("hidden")));
#define g_value_init IA__g_value_init

extern __typeof (g_value_peek_pointer) IA__g_value_peek_pointer __attribute((visibility("hidden")));
#define g_value_peek_pointer IA__g_value_peek_pointer

extern __typeof (g_value_register_transform_func) IA__g_value_register_transform_func __attribute((visibility("hidden")));
#define g_value_register_transform_func IA__g_value_register_transform_func

extern __typeof (g_value_reset) IA__g_value_reset __attribute((visibility("hidden")));
#define g_value_reset IA__g_value_reset

extern __typeof (g_value_transform) IA__g_value_transform __attribute((visibility("hidden")));
#define g_value_transform IA__g_value_transform

extern __typeof (g_value_type_compatible) IA__g_value_type_compatible __attribute((visibility("hidden")));
#define g_value_type_compatible IA__g_value_type_compatible

extern __typeof (g_value_type_transformable) IA__g_value_type_transformable __attribute((visibility("hidden")));
#define g_value_type_transformable IA__g_value_type_transformable

extern __typeof (g_value_unset) IA__g_value_unset __attribute((visibility("hidden")));
#define g_value_unset IA__g_value_unset

extern __typeof (g_value_set_instance) IA__g_value_set_instance __attribute((visibility("hidden")));
#define g_value_set_instance IA__g_value_set_instance

#endif
#endif

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