diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-09-16 18:33:02 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-09-16 18:33:02 +0000 |
commit | 88e7569e65f74ae1140a31093396e872b4866cd7 (patch) | |
tree | 050b5ea5cf4a866ac78a84a88d48304d8b34cbb0 /gobject | |
parent | b241f9e215c49aba5d5d29d3e5251ba6204c14b6 (diff) |
Add ABI control using the same technique that is used in GTK+.
2004-09-16 Matthias Clasen <mclasen@redhat.com>
Add ABI control using the same technique that is used in GTK+.
* gobject.symbols: Master list of symbols.
* gobject.def: Removed. It is now generated from gobject.symbols.
* Makefile.am (gobject.def): Generate from gobject.symbols.
(TESTS): Add abicheck.sh
(EXTRA_DIST): Add abicheck.sh
(export_symbols): Don't export _-prefixed symbols.
* gtype.h:
* gtype.c: Move the declarations of the various _init() functions
to the header, and mark them as G_GNUC_INTERNAL.
Diffstat (limited to 'gobject')
-rw-r--r-- | gobject/ChangeLog | 17 | ||||
-rw-r--r-- | gobject/Makefile.am | 17 | ||||
-rwxr-xr-x | gobject/abicheck.sh | 5 | ||||
-rw-r--r-- | gobject/gobject.def | 322 | ||||
-rw-r--r-- | gobject/gobject.symbols | 321 | ||||
-rw-r--r-- | gobject/gtype.c | 12 | ||||
-rw-r--r-- | gobject/gtype.h | 12 |
7 files changed, 369 insertions, 337 deletions
diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 8da50561e..357b9e2fc 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,20 @@ +2004-09-16 Matthias Clasen <mclasen@redhat.com> + + Add ABI control using the same technique that is used in GTK+. + + * gobject.symbols: Master list of symbols. + + * gobject.def: Removed. It is now generated from gobject.symbols. + + * Makefile.am (gobject.def): Generate from gobject.symbols. + (TESTS): Add abicheck.sh + (EXTRA_DIST): Add abicheck.sh + (export_symbols): Don't export _-prefixed symbols. + + * gtype.h: + * gtype.c: Move the declarations of the various _init() functions + to the header, and mark them as G_GNUC_INTERNAL. + 2004-08-25 Matthias Clasen <mclasen@redhat.com> * === Released 2.5.2 === diff --git a/gobject/Makefile.am b/gobject/Makefile.am index dfb49dc72..da2abf359 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -13,6 +13,13 @@ INCLUDES = \ -DGOBJECT_COMPILATION \ -DG_DISABLE_CONST_RETURNS +gobject.def: gobject.symbols + (echo -e EXPORTS; cpp -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 $(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/\t/' | sort) > gobject.def + +if OS_UNIX +TESTS = abicheck.sh +endif + libglib = $(top_builddir)/glib/libglib-2.0.la # libraries to compile and install @@ -47,6 +54,8 @@ uninstall-libtool-import-lib: else install-libtool-import-lib: uninstall-libtool-import-lib: + +export_symbols = $(LIBTOOL_EXPORT_OPTIONS) endif # libtool stuff: set version and export symbols for resolving @@ -103,14 +112,15 @@ gobject_c_sources = \ gvaluetypes.c # these sources (also mentioned above) are generated. -BUILT_SOURCES = gmarshal.h gmarshal.c +BUILT_SOURCES = gmarshal.h gmarshal.c # non-header sources (headers should be specified in the above variables) # that don't serve as direct make target sources, i.e. they don't have # their own .lo rules and don't get publically installed gobject_extra_sources = \ gmarshal.list \ - gmarshal.strings + gmarshal.strings \ + gobject.symbols # @@ -197,7 +207,8 @@ EXTRA_DIST += \ gobject.rc.in \ glib-genmarshal.1 \ glib-mkenums.in \ - glib-mkenums.1 + glib-mkenums.1 \ + abicheck.sh BUILT_EXTRA_DIST = \ makefile.msc \ diff --git a/gobject/abicheck.sh b/gobject/abicheck.sh new file mode 100755 index 000000000..9d497329a --- /dev/null +++ b/gobject/abicheck.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +cpp -P -DG_OS_UNIX -DINCLUDE_INTERNAL_SYMBOLS ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' | sort > expected-abi +nm -D .libs/libgobject-2.0.so | grep " T " | cut -c12- | sort > actual-abi +diff -u expected-abi actual-abi && rm expected-abi actual-abi diff --git a/gobject/gobject.def b/gobject/gobject.def deleted file mode 100644 index 93fa3ed73..000000000 --- a/gobject/gobject.def +++ /dev/null @@ -1,322 +0,0 @@ -EXPORTS - g_boxed_copy - g_boxed_free - g_boxed_type_register_static - g_cclosure_marshal_BOOLEAN__FLAGS - g_cclosure_marshal_STRING__OBJECT_POINTER - g_cclosure_marshal_VOID__BOOLEAN - g_cclosure_marshal_VOID__BOXED - g_cclosure_marshal_VOID__CHAR - g_cclosure_marshal_VOID__DOUBLE - g_cclosure_marshal_VOID__ENUM - g_cclosure_marshal_VOID__FLAGS - g_cclosure_marshal_VOID__FLOAT - g_cclosure_marshal_VOID__INT - g_cclosure_marshal_VOID__LONG - g_cclosure_marshal_VOID__OBJECT - g_cclosure_marshal_VOID__PARAM - g_cclosure_marshal_VOID__POINTER - g_cclosure_marshal_VOID__STRING - g_cclosure_marshal_VOID__UCHAR - g_cclosure_marshal_VOID__UINT - g_cclosure_marshal_VOID__UINT_POINTER - g_cclosure_marshal_VOID__ULONG - g_cclosure_marshal_VOID__VOID - g_cclosure_new - g_cclosure_new_object - g_cclosure_new_object_swap - g_cclosure_new_swap - g_closure_add_finalize_notifier - g_closure_add_invalidate_notifier - g_closure_add_marshal_guards - g_closure_get_type - g_closure_invalidate - g_closure_invoke - g_closure_new_object - g_closure_new_simple - g_closure_ref - g_closure_remove_finalize_notifier - g_closure_remove_invalidate_notifier - g_closure_set_marshal - g_closure_set_meta_marshal - g_closure_sink - g_closure_unref - g_enum_complete_type_info - g_enum_get_value - g_enum_get_value_by_name - g_enum_get_value_by_nick - g_enum_register_static - g_flags_complete_type_info - g_flags_get_first_value - g_flags_get_value_by_name - g_flags_get_value_by_nick - g_flags_register_static - g_gstring_get_type - g_io_channel_get_type - g_io_condition_get_type - g_object_add_weak_pointer - g_object_class_find_property - g_object_class_install_property - g_object_class_list_properties - g_object_class_override_property - g_object_connect - g_object_disconnect - g_object_freeze_notify - g_object_get - g_object_get_data - g_object_get_property - g_object_get_qdata - g_object_get_valist - g_object_interface_find_property - g_object_interface_install_property - g_object_interface_list_properties - g_object_new - g_object_new_valist - g_object_newv - g_object_notify - g_object_ref - g_object_remove_weak_pointer - g_object_run_dispose - g_object_set - g_object_set_data - g_object_set_data_full - g_object_set_property - g_object_set_qdata - g_object_set_qdata_full - g_object_set_valist - g_object_steal_data - g_object_steal_qdata - g_object_thaw_notify - g_object_unref - g_object_watch_closure - g_object_weak_ref - g_object_weak_unref - g_param_spec_boolean - g_param_spec_boxed - g_param_spec_char - g_param_spec_double - g_param_spec_enum - g_param_spec_flags - g_param_spec_float - g_param_spec_get_blurb - g_param_spec_get_name - g_param_spec_get_nick - g_param_spec_get_qdata - g_param_spec_get_redirect_target - g_param_spec_int - g_param_spec_int64 - g_param_spec_internal - g_param_spec_long - g_param_spec_object - g_param_spec_override - g_param_spec_param - g_param_spec_pointer - g_param_spec_pool_insert - g_param_spec_pool_list - g_param_spec_pool_list_owned - g_param_spec_pool_lookup - g_param_spec_pool_new - g_param_spec_pool_remove - g_param_spec_ref - g_param_spec_set_qdata - g_param_spec_set_qdata_full - g_param_spec_sink - g_param_spec_steal_qdata - g_param_spec_string - g_param_spec_types - g_param_spec_uchar - g_param_spec_uint - g_param_spec_uint64 - g_param_spec_ulong - g_param_spec_unichar - g_param_spec_unref - g_param_spec_value_array - g_param_type_register_static - g_param_value_convert - g_param_value_defaults - g_param_value_set_default - g_param_value_validate - g_param_values_cmp - g_pointer_type_register_static - g_signal_accumulator_true_handled - g_signal_add_emission_hook - g_signal_chain_from_overridden - g_signal_connect_closure - g_signal_connect_closure_by_id - g_signal_connect_data - g_signal_connect_object - g_signal_emit - g_signal_emit_by_name - g_signal_emit_valist - g_signal_emitv - g_signal_get_invocation_hint - g_signal_handler_block - g_signal_handler_disconnect - g_signal_handler_find - g_signal_handler_is_connected - g_signal_handler_unblock - g_signal_handlers_block_matched - g_signal_handlers_destroy - g_signal_handlers_disconnect_matched - g_signal_handlers_unblock_matched - g_signal_has_handler_pending - g_signal_list_ids - g_signal_lookup - g_signal_name - g_signal_new - g_signal_new_valist - g_signal_newv - g_signal_override_class_closure - g_signal_parse_name - g_signal_query - g_signal_remove_emission_hook - g_signal_stop_emission - g_signal_stop_emission_by_name - g_signal_type_cclosure_new - g_slist_remove_all PRIVATE - g_source_set_closure - g_strdup_value_contents - g_strv_get_type - g_type_add_class_cache_func - g_type_add_interface_check - g_type_add_interface_dynamic - g_type_add_interface_static - g_type_check_class_cast - g_type_check_class_is_a - g_type_check_instance - g_type_check_instance_cast - g_type_check_instance_is_a - g_type_check_is_value_type - g_type_check_value - g_type_check_value_holds - g_type_children - g_type_class_add_private - g_type_class_peek - g_type_class_peek_parent - g_type_class_peek_static - g_type_class_ref - g_type_class_unref - g_type_class_unref_uncached - g_type_create_instance - g_type_default_interface_peek - g_type_default_interface_ref - g_type_default_interface_unref - g_type_depth - g_type_free_instance - g_type_from_name - g_type_fundamental - g_type_fundamental_next - g_type_get_plugin - g_type_get_qdata - g_type_init - g_type_init_with_debug_flags - g_type_instance_get_private - g_type_interface_add_prerequisite - g_type_interface_get_plugin - g_type_interface_peek - g_type_interface_peek_parent - g_type_interface_prerequisites - g_type_interfaces - g_type_is_a - g_type_module_add_interface - g_type_module_get_type - g_type_module_register_type - g_type_module_set_name - g_type_module_unuse - g_type_module_use - g_type_name - g_type_name_from_class - g_type_name_from_instance - g_type_next_base - g_type_parent - g_type_plugin_complete_interface_info - g_type_plugin_complete_type_info - g_type_plugin_get_type - g_type_plugin_unuse - g_type_plugin_use - g_type_qname - g_type_query - g_type_register_dynamic - g_type_register_fundamental - g_type_register_static - g_type_remove_class_cache_func - g_type_remove_interface_check - g_type_set_qdata - g_type_test_flags - g_type_value_table_peek - g_unichar_validate PRIVATE - g_value_array_append - g_value_array_copy - g_value_array_free - g_value_array_get_nth - g_value_array_get_type - g_value_array_insert - g_value_array_new - g_value_array_prepend - g_value_array_remove - g_value_array_sort - g_value_array_sort_with_data - g_value_copy - g_value_dup_boxed - g_value_dup_object - g_value_dup_param - g_value_dup_string - g_value_fits_pointer - g_value_get_boolean - g_value_get_boxed - g_value_get_char - g_value_get_double - g_value_get_enum - g_value_get_flags - g_value_get_float - g_value_get_int - g_value_get_int64 - g_value_get_long - g_value_get_object - g_value_get_param - g_value_get_pointer - g_value_get_string - g_value_get_type - g_value_get_uchar - g_value_get_uint - g_value_get_uint64 - g_value_get_ulong - g_value_init - g_value_peek_pointer - g_value_register_transform_func - g_value_reset - g_value_set_boolean - g_value_set_boxed - g_value_set_boxed_take_ownership - g_value_set_char - g_value_set_double - g_value_set_enum - g_value_set_flags - g_value_set_float - g_value_set_instance - g_value_set_int - g_value_set_int64 - g_value_set_long - g_value_set_object - g_value_set_object_take_ownership - g_value_set_param - g_value_set_param_take_ownership - g_value_set_pointer - g_value_set_static_boxed - g_value_set_static_string - g_value_set_string - g_value_set_string_take_ownership - g_value_set_uchar - g_value_set_uint - g_value_set_uint64 - g_value_set_ulong - g_value_take_boxed - g_value_take_object - g_value_take_param - g_value_take_string - g_value_transform - g_value_type_compatible - g_value_type_transformable - g_value_types_init - g_value_unset - diff --git a/gobject/gobject.symbols b/gobject/gobject.symbols new file mode 100644 index 000000000..9a97c2c6f --- /dev/null +++ b/gobject/gobject.symbols @@ -0,0 +1,321 @@ +g_boxed_copy +g_boxed_free +g_boxed_type_register_static +g_cclosure_marshal_BOOLEAN__FLAGS +g_cclosure_marshal_STRING__OBJECT_POINTER +g_cclosure_marshal_VOID__BOOLEAN +g_cclosure_marshal_VOID__BOXED +g_cclosure_marshal_VOID__CHAR +g_cclosure_marshal_VOID__DOUBLE +g_cclosure_marshal_VOID__ENUM +g_cclosure_marshal_VOID__FLAGS +g_cclosure_marshal_VOID__FLOAT +g_cclosure_marshal_VOID__INT +g_cclosure_marshal_VOID__LONG +g_cclosure_marshal_VOID__OBJECT +g_cclosure_marshal_VOID__PARAM +g_cclosure_marshal_VOID__POINTER +g_cclosure_marshal_VOID__STRING +g_cclosure_marshal_VOID__UCHAR +g_cclosure_marshal_VOID__UINT +g_cclosure_marshal_VOID__UINT_POINTER +g_cclosure_marshal_VOID__ULONG +g_cclosure_marshal_VOID__VOID +g_cclosure_new +g_cclosure_new_object +g_cclosure_new_object_swap +g_cclosure_new_swap +g_closure_add_finalize_notifier +g_closure_add_invalidate_notifier +g_closure_add_marshal_guards +g_closure_get_type +g_closure_invalidate +g_closure_invoke +g_closure_new_object +g_closure_new_simple +g_closure_ref +g_closure_remove_finalize_notifier +g_closure_remove_invalidate_notifier +g_closure_set_marshal +g_closure_set_meta_marshal +g_closure_sink +g_closure_unref +g_enum_complete_type_info +g_enum_get_value +g_enum_get_value_by_name +g_enum_get_value_by_nick +g_enum_register_static +g_flags_complete_type_info +g_flags_get_first_value +g_flags_get_value_by_name +g_flags_get_value_by_nick +g_flags_register_static +g_gstring_get_type +g_io_channel_get_type +g_io_condition_get_type +g_object_add_weak_pointer +g_object_class_find_property +g_object_class_install_property +g_object_class_list_properties +g_object_class_override_property +g_object_connect +g_object_disconnect +g_object_freeze_notify +g_object_get +g_object_get_data +g_object_get_property +g_object_get_qdata +g_object_get_valist +g_object_interface_find_property +g_object_interface_install_property +g_object_interface_list_properties +g_object_new +g_object_newv +g_object_new_valist +g_object_notify +g_object_ref +g_object_remove_weak_pointer +g_object_run_dispose +g_object_set +g_object_set_data +g_object_set_data_full +g_object_set_property +g_object_set_qdata +g_object_set_qdata_full +g_object_set_valist +g_object_steal_data +g_object_steal_qdata +g_object_thaw_notify +g_object_unref +g_object_watch_closure +g_object_weak_ref +g_object_weak_unref +g_param_spec_boolean +g_param_spec_boxed +g_param_spec_char +g_param_spec_double +g_param_spec_enum +g_param_spec_flags +g_param_spec_float +g_param_spec_get_blurb +g_param_spec_get_name +g_param_spec_get_nick +g_param_spec_get_qdata +g_param_spec_get_redirect_target +g_param_spec_int +g_param_spec_int64 +g_param_spec_internal +g_param_spec_long +g_param_spec_object +g_param_spec_override +g_param_spec_param +g_param_spec_pointer +g_param_spec_pool_insert +g_param_spec_pool_list +g_param_spec_pool_list_owned +g_param_spec_pool_lookup +g_param_spec_pool_new +g_param_spec_pool_remove +g_param_spec_ref +g_param_spec_set_qdata +g_param_spec_set_qdata_full +g_param_spec_sink +g_param_spec_steal_qdata +g_param_spec_string +g_param_spec_uchar +g_param_spec_uint +g_param_spec_uint64 +g_param_spec_ulong +g_param_spec_unichar +g_param_spec_unref +g_param_spec_value_array +g_param_type_register_static +g_param_value_convert +g_param_value_defaults +g_param_values_cmp +g_param_value_set_default +g_param_value_validate +g_pointer_type_register_static +g_signal_accumulator_true_handled +g_signal_add_emission_hook +g_signal_chain_from_overridden +g_signal_connect_closure +g_signal_connect_closure_by_id +g_signal_connect_data +g_signal_connect_object +g_signal_emit +g_signal_emit_by_name +g_signal_emitv +g_signal_emit_valist +g_signal_get_invocation_hint +g_signal_handler_block +g_signal_handler_disconnect +g_signal_handler_find +g_signal_handler_is_connected +g_signal_handlers_block_matched +g_signal_handlers_destroy +g_signal_handlers_disconnect_matched +g_signal_handlers_unblock_matched +g_signal_handler_unblock +g_signal_has_handler_pending +g_signal_list_ids +g_signal_lookup +g_signal_name +g_signal_new +g_signal_newv +g_signal_new_valist +g_signal_override_class_closure +g_signal_parse_name +g_signal_query +g_signal_remove_emission_hook +g_signal_stop_emission +g_signal_stop_emission_by_name +g_signal_type_cclosure_new +g_source_set_closure +g_strdup_value_contents +g_strv_get_type +g_type_add_class_cache_func +g_type_add_interface_check +g_type_add_interface_dynamic +g_type_add_interface_static +g_type_check_class_cast +g_type_check_class_is_a +g_type_check_instance +g_type_check_instance_cast +g_type_check_instance_is_a +g_type_check_is_value_type +g_type_check_value +g_type_check_value_holds +g_type_children +g_type_class_add_private +g_type_class_peek +g_type_class_peek_parent +g_type_class_peek_static +g_type_class_ref +g_type_class_unref +g_type_class_unref_uncached +g_type_create_instance +g_type_default_interface_peek +g_type_default_interface_ref +g_type_default_interface_unref +g_type_depth +g_type_free_instance +g_type_from_name +g_type_fundamental +g_type_fundamental_next +g_type_get_plugin +g_type_get_qdata +g_type_init +g_type_init_with_debug_flags +g_type_instance_get_private +g_type_interface_add_prerequisite +g_type_interface_get_plugin +g_type_interface_peek +g_type_interface_peek_parent +g_type_interface_prerequisites +g_type_interfaces +g_type_is_a +g_type_module_add_interface +g_type_module_get_type +g_type_module_register_enum +g_type_module_register_flags +g_type_module_register_type +g_type_module_set_name +g_type_module_unuse +g_type_module_use +g_type_name +g_type_name_from_class +g_type_name_from_instance +g_type_next_base +g_type_parent +g_type_plugin_complete_interface_info +g_type_plugin_complete_type_info +g_type_plugin_get_type +g_type_plugin_unuse +g_type_plugin_use +g_type_qname +g_type_query +g_type_register_dynamic +g_type_register_fundamental +g_type_register_static +g_type_remove_class_cache_func +g_type_remove_interface_check +g_type_set_qdata +g_type_test_flags +g_type_value_table_peek +g_value_array_append +g_value_array_copy +g_value_array_free +g_value_array_get_nth +g_value_array_get_type +g_value_array_insert +g_value_array_new +g_value_array_prepend +g_value_array_remove +g_value_array_sort +g_value_array_sort_with_data +g_value_copy +g_value_dup_boxed +g_value_dup_object +g_value_dup_param +g_value_dup_string +g_value_fits_pointer +g_value_get_boolean +g_value_get_boxed +g_value_get_char +g_value_get_double +g_value_get_enum +g_value_get_flags +g_value_get_float +g_value_get_int +g_value_get_int64 +g_value_get_long +g_value_get_object +g_value_get_param +g_value_get_pointer +g_value_get_string +g_value_get_type +g_value_get_uchar +g_value_get_uint +g_value_get_uint64 +g_value_get_ulong +g_value_init +g_value_peek_pointer +g_value_register_transform_func +g_value_reset +g_value_set_boolean +g_value_set_boxed +g_value_set_boxed_take_ownership +g_value_set_char +g_value_set_double +g_value_set_enum +g_value_set_flags +g_value_set_float +g_value_set_instance +g_value_set_int +g_value_set_int64 +g_value_set_long +g_value_set_object +g_value_set_object_take_ownership +g_value_set_param +g_value_set_param_take_ownership +g_value_set_pointer +g_value_set_static_boxed +g_value_set_static_string +g_value_set_string +g_value_set_string_take_ownership +g_value_set_uchar +g_value_set_uint +g_value_set_uint64 +g_value_set_ulong +g_value_take_boxed +g_value_take_object +g_value_take_param +g_value_take_string +g_value_transform +g_value_type_compatible +g_value_type_transformable +g_value_unset +#ifdef INCLUDE_VARIABLES +g_param_spec_types +#endif diff --git a/gobject/gtype.c b/gobject/gtype.c index 3808ed1fd..9c50a51e3 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -3374,18 +3374,6 @@ g_type_name_from_class (GTypeClass *g_class) } -/* --- foreign prototypes --- */ -extern void g_value_c_init (void); /* sync with gvalue.c */ -extern void g_value_types_init (void); /* sync with gvaluetypes.c */ -extern void g_enum_types_init (void); /* sync with genums.c */ -extern void g_param_type_init (void); /* sync with gparam.c */ -extern void g_boxed_type_init (void); /* sync with gboxed.c */ -extern void g_object_type_init (void); /* sync with gobject.c */ -extern void g_param_spec_types_init (void); /* sync with gparamspecs.c */ -extern void g_value_transforms_init (void); /* sync with gvaluetransform.c */ -extern void g_signal_init (void); /* sync with gsignal.c */ - - /* --- initialization --- */ void g_type_init_with_debug_flags (GTypeDebugFlags debug_flags) diff --git a/gobject/gtype.h b/gobject/gtype.h index 6e3b9d605..7fac048aa 100644 --- a/gobject/gtype.h +++ b/gobject/gtype.h @@ -427,6 +427,18 @@ G_CONST_RETURN gchar* g_type_name_from_instance (GTypeInstance *instance); G_CONST_RETURN gchar* g_type_name_from_class (GTypeClass *g_class); +/* --- internal functions --- */ +void g_value_c_init (void) G_GNUC_INTERNAL; /* sync with gvalue.c */ +void g_value_types_init (void) G_GNUC_INTERNAL; /* sync with gvaluetypes.c */ +void g_enum_types_init (void) G_GNUC_INTERNAL; /* sync with genums.c */ +void g_param_type_init (void) G_GNUC_INTERNAL; /* sync with gparam.c */ +void g_boxed_type_init (void) G_GNUC_INTERNAL; /* sync with gboxed.c */ +void g_object_type_init (void) G_GNUC_INTERNAL; /* sync with gobject.c */ +void g_param_spec_types_init (void) G_GNUC_INTERNAL; /* sync with gparamspecs.c */ +void g_value_transforms_init (void) G_GNUC_INTERNAL; /* sync with gvaluetransform.c */ +void g_signal_init (void) G_GNUC_INTERNAL; /* sync with gsignal.c */ + + /* --- implementation bits --- */ #ifndef G_DISABLE_CAST_CHECKS # define _G_TYPE_CIC(ip, gt, ct) \ |