| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | /* GObject - GLib Type, Object, Parameter and Signal Library
 | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |  * Copyright (C) 2000-2001 Red Hat, Inc. | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-06-01 12:44:23 +01:00
										 |  |  |  |  * SPDX-License-Identifier: LGPL-2.1-or-later | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							| 
									
										
										
										
											2017-01-05 14:09:06 +01:00
										 |  |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  |  * Lesser General Public License for more details. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * You should have received a copy of the GNU Lesser General | 
					
						
							| 
									
										
										
										
											2014-01-23 12:58:29 +01:00
										 |  |  |  |  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * this code is based on the original GtkSignal implementation | 
					
						
							|  |  |  |  |  * for the Gtk+ library by Peter Mattis <petm@xcf.berkeley.edu> | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-06-22 14:29:25 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  |  * MT safe | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "config.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include <signal.h>
 | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  | #include <stdint.h>
 | 
					
						
							|  |  |  |  | #include <string.h>
 | 
					
						
							| 
									
										
										
										
											2008-06-22 14:29:25 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "gsignal.h"
 | 
					
						
							| 
									
										
										
										
											2011-06-02 17:14:58 -04:00
										 |  |  |  | #include "gtype-private.h"
 | 
					
						
							| 
									
										
										
										
											2008-06-22 14:29:25 +00:00
										 |  |  |  | #include "gbsearcharray.h"
 | 
					
						
							|  |  |  |  | #include "gvaluecollector.h"
 | 
					
						
							|  |  |  |  | #include "gvaluetypes.h"
 | 
					
						
							|  |  |  |  | #include "gobject.h"
 | 
					
						
							|  |  |  |  | #include "genums.h"
 | 
					
						
							| 
									
										
										
										
											2010-01-01 21:39:52 +01:00
										 |  |  |  | #include "gobject_trace.h"
 | 
					
						
							| 
									
										
										
										
											2008-06-22 14:29:25 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-23 11:14:26 +01:00
										 |  |  |  | #define REPORT_BUG      "please report occurrence circumstances to https://gitlab.gnome.org/GNOME/glib/issues/new"
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- typedefs --- */ | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | typedef struct _SignalNode   SignalNode; | 
					
						
							|  |  |  |  | typedef struct _SignalKey    SignalKey; | 
					
						
							|  |  |  |  | typedef struct _Emission     Emission; | 
					
						
							|  |  |  |  | typedef struct _Handler      Handler; | 
					
						
							|  |  |  |  | typedef struct _HandlerList  HandlerList; | 
					
						
							|  |  |  |  | typedef struct _HandlerMatch HandlerMatch; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | typedef enum | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   EMISSION_STOP, | 
					
						
							|  |  |  |  |   EMISSION_RUN, | 
					
						
							|  |  |  |  |   EMISSION_HOOK, | 
					
						
							|  |  |  |  |   EMISSION_RESTART | 
					
						
							|  |  |  |  | } EmissionState; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- prototypes --- */ | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  | static inline guint   signal_id_lookup  (const gchar *name, | 
					
						
							|  |  |  |  |                                          GType        itype); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | static	      void		signal_destroy_R	(SignalNode	 *signal_node); | 
					
						
							|  |  |  |  | static inline HandlerList*	handler_list_ensure	(guint		  signal_id, | 
					
						
							|  |  |  |  | 							 gpointer	  instance); | 
					
						
							|  |  |  |  | static inline HandlerList*	handler_list_lookup	(guint		  signal_id, | 
					
						
							|  |  |  |  | 							 gpointer	  instance); | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | static inline Handler*		handler_new		(guint            signal_id, | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  | 							 gpointer         instance, | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |                                                          gboolean	  after); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | static	      void		handler_insert		(guint		  signal_id, | 
					
						
							|  |  |  |  | 							 gpointer	  instance, | 
					
						
							|  |  |  |  | 							 Handler	 *handler); | 
					
						
							|  |  |  |  | static	      Handler*		handler_lookup		(gpointer	  instance, | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 							 gulong		  handler_id, | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | 							 GClosure        *closure, | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | 							 guint		 *signal_id_p); | 
					
						
							|  |  |  |  | static inline HandlerMatch*	handler_match_prepend	(HandlerMatch	 *list, | 
					
						
							|  |  |  |  | 							 Handler	 *handler, | 
					
						
							|  |  |  |  | 							 guint		  signal_id); | 
					
						
							|  |  |  |  | static inline HandlerMatch*	handler_match_free1_R	(HandlerMatch	 *node, | 
					
						
							|  |  |  |  | 							 gpointer	  instance); | 
					
						
							|  |  |  |  | static	      HandlerMatch*	handlers_find		(gpointer	  instance, | 
					
						
							|  |  |  |  | 							 GSignalMatchType mask, | 
					
						
							|  |  |  |  | 							 guint		  signal_id, | 
					
						
							|  |  |  |  | 							 GQuark		  detail, | 
					
						
							|  |  |  |  | 							 GClosure	 *closure, | 
					
						
							|  |  |  |  | 							 gpointer	  func, | 
					
						
							|  |  |  |  | 							 gpointer	  data, | 
					
						
							|  |  |  |  | 							 gboolean	  one_and_only); | 
					
						
							|  |  |  |  | static inline void		handler_ref		(Handler	 *handler); | 
					
						
							|  |  |  |  | static inline void		handler_unref_R		(guint		  signal_id, | 
					
						
							|  |  |  |  | 							 gpointer	  instance, | 
					
						
							|  |  |  |  | 							 Handler	 *handler); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | static gint			handler_lists_cmp	(gconstpointer	  node1, | 
					
						
							|  |  |  |  | 							 gconstpointer	  node2); | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | static inline void		emission_push		(Emission	 *emission); | 
					
						
							|  |  |  |  | static inline void		emission_pop		(Emission	 *emission); | 
					
						
							|  |  |  |  | static inline Emission*		emission_find		(guint		  signal_id, | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | 							 GQuark		  detail, | 
					
						
							|  |  |  |  | 							 gpointer	  instance); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | static gint			class_closures_cmp	(gconstpointer	  node1, | 
					
						
							|  |  |  |  | 							 gconstpointer	  node2); | 
					
						
							| 
									
										
										
										
											2001-03-18 04:44:38 +00:00
										 |  |  |  | static gint			signal_key_cmp		(gconstpointer	  node1, | 
					
						
							|  |  |  |  | 							 gconstpointer	  node2); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | static	      gboolean		signal_emit_unlocked_R	(SignalNode	 *node, | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | 							 GQuark		  detail, | 
					
						
							|  |  |  |  | 							 gpointer	  instance, | 
					
						
							|  |  |  |  | 							 GValue		 *return_value, | 
					
						
							|  |  |  |  | 							 const GValue	 *instance_and_params); | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | static       void               add_invalid_closure_notify    (Handler         *handler, | 
					
						
							|  |  |  |  | 							       gpointer         instance); | 
					
						
							|  |  |  |  | static       void               remove_invalid_closure_notify (Handler         *handler, | 
					
						
							|  |  |  |  | 							       gpointer         instance); | 
					
						
							|  |  |  |  | static       void               invalid_closure_notify  (gpointer         data, | 
					
						
							|  |  |  |  | 							 GClosure        *closure); | 
					
						
							| 
									
										
										
										
											2002-05-20 19:58:16 +00:00
										 |  |  |  | static const gchar *            type_debug_name         (GType            type); | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  | static void                     node_check_deprecated   (const SignalNode *node); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | static void                     node_update_single_va_closure (SignalNode *node); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- structures --- */ | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | typedef struct | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GSignalAccumulator func; | 
					
						
							|  |  |  |  |   gpointer           data; | 
					
						
							|  |  |  |  | } SignalAccumulator; | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  | typedef struct | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GHook hook; | 
					
						
							|  |  |  |  |   GQuark detail; | 
					
						
							|  |  |  |  | } SignalHook; | 
					
						
							|  |  |  |  | #define	SIGNAL_HOOK(hook)	((SignalHook*) (hook))
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | struct _SignalNode | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   /* permanent portion */ | 
					
						
							|  |  |  |  |   guint              signal_id; | 
					
						
							|  |  |  |  |   GType              itype; | 
					
						
							| 
									
										
										
										
											2005-09-05 19:23:32 +00:00
										 |  |  |  |   const gchar       *name; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   guint              destroyed : 1; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   /* reinitializable portion */ | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  |   guint              flags : 9; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   guint              n_params : 8; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   guint              single_va_closure_is_valid : 1; | 
					
						
							|  |  |  |  |   guint              single_va_closure_is_after : 1; | 
					
						
							| 
									
										
										
										
											2001-02-17 05:32:00 +00:00
										 |  |  |  |   GType		    *param_types; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */ | 
					
						
							|  |  |  |  |   GType		     return_type; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */ | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   GBSearchArray     *class_closure_bsa; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   SignalAccumulator *accumulator; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   GSignalCMarshaller c_marshaller; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |   GSignalCVaMarshaller va_marshaller; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   GHookList         *emission_hooks; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   GClosure *single_va_closure; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | struct _SignalKey | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GType  itype; | 
					
						
							|  |  |  |  |   GQuark quark; | 
					
						
							|  |  |  |  |   guint  signal_id; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | struct _Emission | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   Emission             *next; | 
					
						
							|  |  |  |  |   gpointer              instance; | 
					
						
							|  |  |  |  |   GSignalInvocationHint ihint; | 
					
						
							|  |  |  |  |   EmissionState         state; | 
					
						
							|  |  |  |  |   GType			chain_type; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | struct _HandlerList | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   guint    signal_id; | 
					
						
							|  |  |  |  |   Handler *handlers; | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |   Handler *tail_before;  /* normal signal handlers are appended here  */ | 
					
						
							|  |  |  |  |   Handler *tail_after;   /* CONNECT_AFTER handlers are appended here  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | struct _Handler | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   gulong        sequential_number; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   Handler      *next; | 
					
						
							|  |  |  |  |   Handler      *prev; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   GQuark	detail; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |   guint         signal_id; | 
					
						
							| 
									
										
										
										
											2005-07-30 19:46:11 +00:00
										 |  |  |  |   guint         ref_count; | 
					
						
							|  |  |  |  |   guint         block_count : 16; | 
					
						
							|  |  |  |  | #define HANDLER_MAX_BLOCK_COUNT (1 << 16)
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   guint         after : 1; | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  |   guint         has_invalid_closure_notify : 1; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   GClosure     *closure; | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  |   gpointer      instance; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | struct _HandlerMatch | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler      *handler; | 
					
						
							|  |  |  |  |   HandlerMatch *next; | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |   guint         signal_id; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | }; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | typedef struct | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GType     instance_type; /* 0 for default closure */ | 
					
						
							|  |  |  |  |   GClosure *closure; | 
					
						
							|  |  |  |  | } ClassClosure; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- variables --- */ | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | static GBSearchArray *g_signal_key_bsa = NULL; | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  | static const GBSearchConfig g_signal_key_bconfig = { | 
					
						
							|  |  |  |  |   sizeof (SignalKey), | 
					
						
							|  |  |  |  |   signal_key_cmp, | 
					
						
							|  |  |  |  |   G_BSEARCH_ARRAY_ALIGN_POWER2, | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | static GBSearchConfig g_signal_hlbsa_bconfig = { | 
					
						
							|  |  |  |  |   sizeof (HandlerList), | 
					
						
							|  |  |  |  |   handler_lists_cmp, | 
					
						
							|  |  |  |  |   0, | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | static GBSearchConfig g_class_closure_bconfig = { | 
					
						
							|  |  |  |  |   sizeof (ClassClosure), | 
					
						
							|  |  |  |  |   class_closures_cmp, | 
					
						
							|  |  |  |  |   0, | 
					
						
							|  |  |  |  | }; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | static GHashTable    *g_handler_list_bsa_ht = NULL; | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | static Emission      *g_emissions = NULL; | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | static gulong         g_handler_sequential_number = 1; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | static GHashTable    *g_handlers = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | G_LOCK_DEFINE_STATIC (g_signal_mutex); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | #define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
 | 
					
						
							|  |  |  |  | #define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- signal nodes --- */ | 
					
						
							|  |  |  |  | static guint          g_n_signal_nodes = 0; | 
					
						
							|  |  |  |  | static SignalNode   **g_signal_nodes = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline SignalNode* | 
					
						
							| 
									
										
										
										
											2014-05-25 12:18:14 +02:00
										 |  |  |  | LOOKUP_SIGNAL_NODE (guint signal_id) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   if (signal_id < g_n_signal_nodes) | 
					
						
							|  |  |  |  |     return g_signal_nodes[signal_id]; | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     return NULL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* --- functions --- */ | 
					
						
							| 
									
										
										
										
											2019-11-12 19:40:12 +00:00
										 |  |  |  | /* @key must have already been validated with is_valid()
 | 
					
						
							|  |  |  |  |  * Modifies @key in place. */ | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | canonicalize_key (gchar *key) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   gchar *p; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (p = key; *p != 0; p++) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       gchar c = *p; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (c == '_') | 
					
						
							|  |  |  |  |         *p = '-'; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* @key must have already been validated with is_valid() */ | 
					
						
							|  |  |  |  | static gboolean | 
					
						
							|  |  |  |  | is_canonical (const gchar *key) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   return (strchr (key, '_') == NULL); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_is_valid_name: | 
					
						
							|  |  |  |  |  * @name: the canonical name of the signal | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Validate a signal name. This can be useful for dynamically-generated signals | 
					
						
							|  |  |  |  |  * which need to be validated at run-time before actually trying to create them. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-05-21 22:32:20 +00:00
										 |  |  |  |  * See [func@GObject.signal_new] for details of the rules for valid names. | 
					
						
							|  |  |  |  |  * The rules for signal names are the same as those for property names. | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: %TRUE if @name is a valid signal name, %FALSE otherwise. | 
					
						
							|  |  |  |  |  * Since: 2.66 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | gboolean | 
					
						
							|  |  |  |  | g_signal_is_valid_name (const gchar *name) | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   /* FIXME: We allow this, against our own documentation (the leading `-` is
 | 
					
						
							|  |  |  |  |    * invalid), because GTK has historically used this. */ | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  |   if (g_str_equal (name, "-gtk-private-changed")) | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |     return TRUE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  |   return g_param_spec_is_valid_name (name); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | static inline guint | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  | signal_id_lookup (const gchar *name, | 
					
						
							|  |  |  |  |                   GType  itype) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  |   GQuark quark; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   GType *ifaces, type = itype; | 
					
						
							|  |  |  |  |   SignalKey key; | 
					
						
							|  |  |  |  |   guint n_ifaces; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  |   quark = g_quark_try_string (name); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   key.quark = quark; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-23 01:51:42 +00:00
										 |  |  |  |   /* try looking up signals for this type and its ancestors */ | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |   do | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       SignalKey *signal_key; | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       key.itype = type; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key); | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |        | 
					
						
							|  |  |  |  |       if (signal_key) | 
					
						
							|  |  |  |  | 	return signal_key->signal_id; | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       type = g_type_parent (type); | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   while (type); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /* no luck, try interfaces it exports */ | 
					
						
							|  |  |  |  |   ifaces = g_type_interfaces (itype, &n_ifaces); | 
					
						
							|  |  |  |  |   while (n_ifaces--) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalKey *signal_key; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       key.itype = ifaces[n_ifaces]; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (signal_key) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  g_free (ifaces); | 
					
						
							|  |  |  |  | 	  return signal_key->signal_id; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   g_free (ifaces); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:40:12 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   /* If the @name is non-canonical, try again. This is the slow path — people
 | 
					
						
							|  |  |  |  |    * should use canonical names in their queries if they want performance. */ | 
					
						
							|  |  |  |  |   if (!is_canonical (name)) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       guint signal_id; | 
					
						
							|  |  |  |  |       gchar *name_copy = g_strdup (name); | 
					
						
							|  |  |  |  |       canonicalize_key (name_copy); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       signal_id = signal_id_lookup (name_copy, itype); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       g_free (name_copy); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return signal_id; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |   return 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | static gint | 
					
						
							|  |  |  |  | class_closures_cmp (gconstpointer node1, | 
					
						
							|  |  |  |  | 		    gconstpointer node2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   const ClassClosure *c1 = node1, *c2 = node2; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return G_BSEARCH_ARRAY_CMP (c1->instance_type, c2->instance_type); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | static gint | 
					
						
							|  |  |  |  | handler_lists_cmp (gconstpointer node1, | 
					
						
							|  |  |  |  |                    gconstpointer node2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   const HandlerList *hlist1 = node1, *hlist2 = node2; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return G_BSEARCH_ARRAY_CMP (hlist1->signal_id, hlist2->signal_id); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline HandlerList* | 
					
						
							|  |  |  |  | handler_list_ensure (guint    signal_id, | 
					
						
							|  |  |  |  | 		     gpointer instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); | 
					
						
							|  |  |  |  |   HandlerList key; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   key.signal_id = signal_id; | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |   key.handlers    = NULL; | 
					
						
							|  |  |  |  |   key.tail_before = NULL; | 
					
						
							|  |  |  |  |   key.tail_after  = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (!hlbsa) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |       hlbsa = g_bsearch_array_create (&g_signal_hlbsa_bconfig); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-12-14 23:55:21 +00:00
										 |  |  |  |   hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key); | 
					
						
							|  |  |  |  |   g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   return g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline HandlerList* | 
					
						
							|  |  |  |  | handler_list_lookup (guint    signal_id, | 
					
						
							|  |  |  |  | 		     gpointer instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); | 
					
						
							|  |  |  |  |   HandlerList key; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   key.signal_id = signal_id; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   return hlbsa ? g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key) : NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | static guint | 
					
						
							|  |  |  |  | handler_hash (gconstpointer key) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   return (guint)((Handler*)key)->sequential_number; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static gboolean | 
					
						
							|  |  |  |  | handler_equal (gconstpointer a, gconstpointer b) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  |   Handler *ha = (Handler *)a; | 
					
						
							|  |  |  |  |   Handler *hb = (Handler *)b; | 
					
						
							|  |  |  |  |   return (ha->sequential_number == hb->sequential_number) && | 
					
						
							|  |  |  |  |       (ha->instance  == hb->instance); | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | static Handler* | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | handler_lookup (gpointer  instance, | 
					
						
							|  |  |  |  | 		gulong    handler_id, | 
					
						
							|  |  |  |  | 		GClosure *closure, | 
					
						
							|  |  |  |  | 		guint    *signal_id_p) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |   GBSearchArray *hlbsa; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (handler_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       Handler key; | 
					
						
							|  |  |  |  |       key.sequential_number = handler_id; | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  |       key.instance = instance; | 
					
						
							|  |  |  |  |       return g_hash_table_lookup (g_handlers, &key); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   if (hlbsa) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       guint i; | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       for (i = 0; i < hlbsa->n_nodes; i++) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |           HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |           Handler *handler; | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |           for (handler = hlist->handlers; handler; handler = handler->next) | 
					
						
							| 
									
										
										
										
											2013-01-16 22:55:27 -05:00
										 |  |  |  |             if (closure ? (handler->closure == closure) : (handler->sequential_number == handler_id)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |               { | 
					
						
							|  |  |  |  |                 if (signal_id_p) | 
					
						
							|  |  |  |  |                   *signal_id_p = hlist->signal_id; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |                 return handler; | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return NULL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | static inline HandlerMatch* | 
					
						
							|  |  |  |  | handler_match_prepend (HandlerMatch *list, | 
					
						
							|  |  |  |  | 		       Handler      *handler, | 
					
						
							|  |  |  |  | 		       guint	     signal_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   HandlerMatch *node; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |   node = g_slice_new (HandlerMatch); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   node->handler = handler; | 
					
						
							|  |  |  |  |   node->next = list; | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |   node->signal_id = signal_id; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   handler_ref (handler); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return node; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | static inline HandlerMatch* | 
					
						
							|  |  |  |  | handler_match_free1_R (HandlerMatch *node, | 
					
						
							|  |  |  |  | 		       gpointer      instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   HandlerMatch *next = node->next; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |   handler_unref_R (node->signal_id, instance, node->handler); | 
					
						
							|  |  |  |  |   g_slice_free (HandlerMatch, node); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   return next; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static HandlerMatch* | 
					
						
							|  |  |  |  | handlers_find (gpointer         instance, | 
					
						
							|  |  |  |  | 	       GSignalMatchType mask, | 
					
						
							|  |  |  |  | 	       guint            signal_id, | 
					
						
							|  |  |  |  | 	       GQuark           detail, | 
					
						
							|  |  |  |  | 	       GClosure        *closure, | 
					
						
							|  |  |  |  | 	       gpointer         func, | 
					
						
							|  |  |  |  | 	       gpointer         data, | 
					
						
							|  |  |  |  | 	       gboolean         one_and_only) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   HandlerMatch *mlist = NULL; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (mask & G_SIGNAL_MATCH_ID) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       HandlerList *hlist = handler_list_lookup (signal_id, instance); | 
					
						
							|  |  |  |  |       Handler *handler; | 
					
						
							| 
									
										
										
										
											2000-11-28 23:44:21 +00:00
										 |  |  |  |       SignalNode *node = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2000-11-29 12:34:14 +00:00
										 |  |  |  |       if (mask & G_SIGNAL_MATCH_FUNC) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  | 	  if (!node || !node->c_marshaller) | 
					
						
							|  |  |  |  | 	    return NULL; | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       mask = ~mask; | 
					
						
							| 
									
										
										
										
											2005-07-30 19:46:11 +00:00
										 |  |  |  |       for (handler = hlist ? hlist->handlers : NULL; handler; handler = handler->next) | 
					
						
							|  |  |  |  |         if (handler->sequential_number && | 
					
						
							|  |  |  |  | 	    ((mask & G_SIGNAL_MATCH_DETAIL) || handler->detail == detail) && | 
					
						
							|  |  |  |  | 	    ((mask & G_SIGNAL_MATCH_CLOSURE) || handler->closure == closure) && | 
					
						
							|  |  |  |  |             ((mask & G_SIGNAL_MATCH_DATA) || handler->closure->data == data) && | 
					
						
							|  |  |  |  | 	    ((mask & G_SIGNAL_MATCH_UNBLOCKED) || handler->block_count == 0) && | 
					
						
							|  |  |  |  | 	    ((mask & G_SIGNAL_MATCH_FUNC) || (handler->closure->marshal == node->c_marshaller && | 
					
						
							| 
									
										
										
										
											2012-02-22 17:46:21 +01:00
										 |  |  |  | 					      G_REAL_CLOSURE (handler->closure)->meta_marshal == NULL && | 
					
						
							| 
									
										
										
										
											2005-07-30 19:46:11 +00:00
										 |  |  |  | 					      ((GCClosure*) handler->closure)->callback == func))) | 
					
						
							|  |  |  |  | 	  { | 
					
						
							|  |  |  |  | 	    mlist = handler_match_prepend (mlist, handler, signal_id); | 
					
						
							|  |  |  |  | 	    if (one_and_only) | 
					
						
							|  |  |  |  | 	      return mlist; | 
					
						
							|  |  |  |  | 	  } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       mask = ~mask; | 
					
						
							|  |  |  |  |       if (hlbsa) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           guint i; | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |           for (i = 0; i < hlbsa->n_nodes; i++) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |               HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i); | 
					
						
							| 
									
										
										
										
											2000-11-28 23:44:21 +00:00
										 |  |  |  | 	      SignalNode *node = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |               Handler *handler; | 
					
						
							|  |  |  |  |                | 
					
						
							|  |  |  |  | 	      if (!(mask & G_SIGNAL_MATCH_FUNC)) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 		  node = LOOKUP_SIGNAL_NODE (hlist->signal_id); | 
					
						
							|  |  |  |  | 		  if (!node->c_marshaller) | 
					
						
							|  |  |  |  | 		    continue; | 
					
						
							|  |  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | 	       | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |               for (handler = hlist->handlers; handler; handler = handler->next) | 
					
						
							| 
									
										
										
										
											2005-07-30 19:46:11 +00:00
										 |  |  |  | 		if (handler->sequential_number && | 
					
						
							|  |  |  |  | 		    ((mask & G_SIGNAL_MATCH_DETAIL) || handler->detail == detail) && | 
					
						
							|  |  |  |  |                     ((mask & G_SIGNAL_MATCH_CLOSURE) || handler->closure == closure) && | 
					
						
							|  |  |  |  |                     ((mask & G_SIGNAL_MATCH_DATA) || handler->closure->data == data) && | 
					
						
							|  |  |  |  | 		    ((mask & G_SIGNAL_MATCH_UNBLOCKED) || handler->block_count == 0) && | 
					
						
							|  |  |  |  | 		    ((mask & G_SIGNAL_MATCH_FUNC) || (handler->closure->marshal == node->c_marshaller && | 
					
						
							| 
									
										
										
										
											2012-02-22 17:46:21 +01:00
										 |  |  |  | 						      G_REAL_CLOSURE (handler->closure)->meta_marshal == NULL && | 
					
						
							| 
									
										
										
										
											2005-07-30 19:46:11 +00:00
										 |  |  |  | 						      ((GCClosure*) handler->closure)->callback == func))) | 
					
						
							|  |  |  |  | 		  { | 
					
						
							|  |  |  |  | 		    mlist = handler_match_prepend (mlist, handler, hlist->signal_id); | 
					
						
							|  |  |  |  | 		    if (one_and_only) | 
					
						
							|  |  |  |  | 		      return mlist; | 
					
						
							|  |  |  |  | 		  } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   return mlist; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline Handler* | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  | handler_new (guint signal_id, gpointer instance, gboolean after) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |   Handler *handler = g_slice_new (Handler); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | #ifndef G_DISABLE_CHECKS
 | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   if (g_handler_sequential_number < 1) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     g_error (G_STRLOC ": handler id overflow, %s", REPORT_BUG); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   handler->sequential_number = g_handler_sequential_number++; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   handler->prev = NULL; | 
					
						
							|  |  |  |  |   handler->next = NULL; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   handler->detail = 0; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |   handler->signal_id = signal_id; | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  |   handler->instance = instance; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   handler->ref_count = 1; | 
					
						
							|  |  |  |  |   handler->block_count = 0; | 
					
						
							|  |  |  |  |   handler->after = after != FALSE; | 
					
						
							|  |  |  |  |   handler->closure = NULL; | 
					
						
							| 
									
										
										
										
											2012-10-08 11:18:00 -04:00
										 |  |  |  |   handler->has_invalid_closure_notify = 0; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_hash_table_add (g_handlers, handler); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   return handler; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline void | 
					
						
							|  |  |  |  | handler_ref (Handler *handler) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (handler->ref_count > 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2013-02-21 16:06:24 +01:00
										 |  |  |  |   handler->ref_count++; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline void | 
					
						
							|  |  |  |  | handler_unref_R (guint    signal_id, | 
					
						
							|  |  |  |  | 		 gpointer instance, | 
					
						
							|  |  |  |  | 		 Handler *handler) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (handler->ref_count > 0); | 
					
						
							| 
									
										
											  
											
												Make refcounting threadsafe by using atomic operations. (#166020, Wim
2005-07-15  Matthias Clasen  <mclasen@redhat.com>
	Make refcounting threadsafe by using atomic
	operations.  (#166020, Wim Taymans)
	* gobject.c: Use a recursive lock to protect the
	notify queue.
	(g_object_unref): Get rid of g_object_last_unref and
	do the last unref handling in g_object_unref.
	(g_object_ref, g_object_unref): Use atomic operations.
	* gsignal.c (struct _HandlerMatch): Use a full integer
	for the ref_count field.
	(handler_ref, handler_unref_R): Use atomic operations.
	* gparam.c (g_param_spec_ref, g_param_spec_unref):
	Use atomic operations instead of a lock to make the
	refcounting threadsafe.
	* gclosure.c (g_closure_ref, g_closure_unref): Use atomic
	operations. This is more complicated here, since the
	refcount is stored in a bitfield, so we also have
	to access all other bitfield members atomically.
	* gsignal.c (handlers_find): Read the meta_marshal flag
	of the closure atomically.
	* tests/Makefile.am (SUBDIRS): Add tests/refcount
	* configure.in: Add tests/refcount
	* tests/refcount/properties.c: Test property changes
	from multiple threads.
	* tests/refcount/signals.c: Test signal emission from
	multiple threads.
	* tests/refcount/objects.c: Test refcounting from
	multiple threads.
	* tests/refcount/objects2.c:
	* tests/refcount/properties2.c: Tests to measure the
	overhead of threadsafe refcounting.
	* glib/giochannel.c (g_io_channel_ref, g_io_channel_unref):
	Use atomic operations to make refcounting
	threadsafe.  (#166020, Wim Taymans)
											
										 
											2005-07-15 16:51:10 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 16:06:24 +01:00
										 |  |  |  |   handler->ref_count--; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (G_UNLIKELY (handler->ref_count == 0)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |       HandlerList *hlist = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       if (handler->next) | 
					
						
							|  |  |  |  |         handler->next->prev = handler->prev; | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |       if (handler->prev)    /* watch out for g_signal_handlers_destroy()! */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |         handler->prev->next = handler->next; | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |           hlist = handler_list_lookup (signal_id, instance); | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  |           g_assert (hlist != NULL); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |           hlist->handlers = handler->next; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (instance) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           /*  check if we are removing the handler pointed to by tail_before  */ | 
					
						
							|  |  |  |  |           if (!handler->after && (!handler->next || handler->next->after)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |               if (!hlist) | 
					
						
							|  |  |  |  |                 hlist = handler_list_lookup (signal_id, instance); | 
					
						
							|  |  |  |  |               if (hlist) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                   g_assert (hlist->tail_before == handler); /* paranoid */ | 
					
						
							|  |  |  |  |                   hlist->tail_before = handler->prev; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           /*  check if we are removing the handler pointed to by tail_after  */ | 
					
						
							|  |  |  |  |           if (!handler->next) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |               if (!hlist) | 
					
						
							|  |  |  |  |                 hlist = handler_list_lookup (signal_id, instance); | 
					
						
							|  |  |  |  |               if (hlist) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                   g_assert (hlist->tail_after == handler); /* paranoid */ | 
					
						
							|  |  |  |  |                   hlist->tail_after = handler->prev; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       g_closure_unref (handler->closure); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2005-11-01 18:10:31 +00:00
										 |  |  |  |       g_slice_free (Handler, handler); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | handler_insert (guint    signal_id, | 
					
						
							|  |  |  |  | 		gpointer instance, | 
					
						
							|  |  |  |  | 		Handler  *handler) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   HandlerList *hlist; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   g_assert (handler->prev == NULL && handler->next == NULL); /* paranoid */ | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   hlist = handler_list_ensure (signal_id, instance); | 
					
						
							|  |  |  |  |   if (!hlist->handlers) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       hlist->handlers = handler; | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |       if (!handler->after) | 
					
						
							|  |  |  |  |         hlist->tail_before = handler; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else if (handler->after) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       handler->prev = hlist->tail_after; | 
					
						
							|  |  |  |  |       hlist->tail_after->next = handler; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  |       if (hlist->tail_before) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           handler->next = hlist->tail_before->next; | 
					
						
							|  |  |  |  |           if (handler->next) | 
					
						
							|  |  |  |  |             handler->next->prev = handler; | 
					
						
							|  |  |  |  |           handler->prev = hlist->tail_before; | 
					
						
							|  |  |  |  |           hlist->tail_before->next = handler; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       else /* insert !after handler into a list of only after handlers */ | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           handler->next = hlist->handlers; | 
					
						
							|  |  |  |  |           if (handler->next) | 
					
						
							|  |  |  |  |             handler->next->prev = handler; | 
					
						
							|  |  |  |  |           hlist->handlers = handler; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       hlist->tail_before = handler; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2004-11-28 00:40:07 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (!handler->next) | 
					
						
							|  |  |  |  |     hlist->tail_after = handler; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | node_update_single_va_closure (SignalNode *node) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GClosure *closure = NULL; | 
					
						
							|  |  |  |  |   gboolean is_after = FALSE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /* Fast path single-handler without boxing the arguments in GValues */ | 
					
						
							|  |  |  |  |   if (G_TYPE_IS_OBJECT (node->itype) && | 
					
						
							| 
									
										
										
										
											2012-03-03 21:36:10 +01:00
										 |  |  |  |       (node->flags & (G_SIGNAL_MUST_COLLECT)) == 0 && | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |       (node->emission_hooks == NULL || node->emission_hooks->hooks == NULL)) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       GSignalFlags run_type; | 
					
						
							|  |  |  |  |       ClassClosure * cc;  | 
					
						
							|  |  |  |  |       GBSearchArray *bsa = node->class_closure_bsa; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (bsa == NULL || bsa->n_nodes == 0) | 
					
						
							|  |  |  |  | 	closure = SINGLE_VA_CLOSURE_EMPTY_MAGIC; | 
					
						
							|  |  |  |  |       else if (bsa->n_nodes == 1) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  /* Look for default class closure (can't support non-default as it
 | 
					
						
							|  |  |  |  | 	     chains up using GValues */ | 
					
						
							|  |  |  |  | 	  cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0); | 
					
						
							|  |  |  |  | 	  if (cc->instance_type == 0) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      run_type = node->flags & (G_SIGNAL_RUN_FIRST|G_SIGNAL_RUN_LAST|G_SIGNAL_RUN_CLEANUP); | 
					
						
							|  |  |  |  | 	      /* Only support *one* of run-first or run-last, not multiple or cleanup */ | 
					
						
							|  |  |  |  | 	      if (run_type == G_SIGNAL_RUN_FIRST || | 
					
						
							|  |  |  |  | 		  run_type == G_SIGNAL_RUN_LAST) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 		  closure = cc->closure; | 
					
						
							|  |  |  |  | 		  is_after = (run_type == G_SIGNAL_RUN_LAST); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   node->single_va_closure_is_valid = TRUE; | 
					
						
							|  |  |  |  |   node->single_va_closure = closure; | 
					
						
							| 
									
										
										
										
											2025-04-22 23:04:46 +01:00
										 |  |  |  |   node->single_va_closure_is_after = (guint) is_after; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | static inline void | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | emission_push (Emission  *emission) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   emission->next = g_emissions; | 
					
						
							|  |  |  |  |   g_emissions = emission; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline void | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | emission_pop (Emission  *emission) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   Emission *node, *last = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   for (node = g_emissions; node; last = node, node = last->next) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     if (node == emission) | 
					
						
							|  |  |  |  |       { | 
					
						
							|  |  |  |  | 	if (last) | 
					
						
							|  |  |  |  | 	  last->next = node->next; | 
					
						
							|  |  |  |  | 	else | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | 	  g_emissions = node->next; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	return; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |   g_assert_not_reached (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline Emission* | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | emission_find (guint     signal_id, | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 	       GQuark    detail, | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	       gpointer  instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Emission *emission; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   for (emission = g_emissions; emission; emission = emission->next) | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |     if (emission->instance == instance && | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	emission->ihint.signal_id == signal_id && | 
					
						
							|  |  |  |  | 	emission->ihint.detail == detail) | 
					
						
							|  |  |  |  |       return emission; | 
					
						
							|  |  |  |  |   return NULL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline Emission* | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  | emission_find_innermost (gpointer instance) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   Emission *emission; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   for (emission = g_emissions; emission; emission = emission->next) | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |     if (emission->instance == instance) | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |       return emission; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static gint | 
					
						
							|  |  |  |  | signal_key_cmp (gconstpointer node1, | 
					
						
							|  |  |  |  |                 gconstpointer node2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   const SignalKey *key1 = node1, *key2 = node2; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   if (key1->itype == key2->itype) | 
					
						
							|  |  |  |  |     return G_BSEARCH_ARRAY_CMP (key1->quark, key2->quark); | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     return G_BSEARCH_ARRAY_CMP (key1->itype, key2->itype); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void | 
					
						
							| 
									
										
										
										
											2011-06-02 17:14:58 -04:00
										 |  |  |  | _g_signal_init (void) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (!g_n_signal_nodes) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       /* setup handler list binary searchable array hash table (in german, that'd be one word ;) */ | 
					
						
							|  |  |  |  |       g_handler_list_bsa_ht = g_hash_table_new (g_direct_hash, NULL); | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |       g_signal_key_bsa = g_bsearch_array_create (&g_signal_key_bconfig); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							|  |  |  |  |       /* invalid (0) signal_id */ | 
					
						
							|  |  |  |  |       g_n_signal_nodes = 1; | 
					
						
							|  |  |  |  |       g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes); | 
					
						
							|  |  |  |  |       g_signal_nodes[0] = NULL; | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |       g_handlers = g_hash_table_new (handler_hash, handler_equal); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | _g_signals_destroy (GType itype) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   guint i; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   for (i = 1; i < g_n_signal_nodes; i++) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalNode *node = g_signal_nodes[i]; | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       if (node->itype == itype) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           if (node->destroyed) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |             g_critical (G_STRLOC ": signal \"%s\" of type '%s' already destroyed", | 
					
						
							|  |  |  |  |                         node->name, | 
					
						
							|  |  |  |  |                         type_debug_name (node->itype)); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |           else | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | 	    signal_destroy_R (node); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_stop_emission: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the object whose signal handlers you wish to stop. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the signal identifier, as returned by g_signal_lookup(). | 
					
						
							|  |  |  |  |  * @detail: the detail which the signal was emitted with. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Stops a signal's current emission. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * This will prevent the default method from running, if the signal was | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * %G_SIGNAL_RUN_LAST and you connected normally (i.e. without the "after" | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * flag). | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Prints a warning if used on a signal which isn't being emitted. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_stop_emission (gpointer instance, | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |                         guint    signal_id, | 
					
						
							|  |  |  |  | 			GQuark   detail) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (signal_id > 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (node && detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       return; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   if (node && g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |       Emission *emission = emission_find (signal_id, detail, instance); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							|  |  |  |  |       if (emission) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |           if (emission->state == EMISSION_HOOK) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |             g_critical (G_STRLOC ": emission of signal \"%s\" for instance '%p' cannot be stopped from emission hook", | 
					
						
							|  |  |  |  |                         node->name, instance); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |           else if (emission->state == EMISSION_RUN) | 
					
						
							|  |  |  |  |             emission->state = EMISSION_STOP; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  |       else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical (G_STRLOC ": no emission of signal \"%s\" to stop for instance '%p'", | 
					
						
							|  |  |  |  |                     node->name, instance); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | signal_finalize_hook (GHookList *hook_list, | 
					
						
							|  |  |  |  | 		      GHook     *hook) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GDestroyNotify destroy = hook->destroy; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (destroy) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       hook->destroy = NULL; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       destroy (hook->data); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_add_emission_hook: | 
					
						
							|  |  |  |  |  * @signal_id: the signal identifier, as returned by g_signal_lookup(). | 
					
						
							|  |  |  |  |  * @detail: the detail on which to call the hook. | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @hook_func: (not nullable): a #GSignalEmissionHook function. | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @hook_data: (nullable) (closure hook_func): user data for @hook_func. | 
					
						
							|  |  |  |  |  * @data_destroy: (nullable) (destroy hook_data): a #GDestroyNotify for @hook_data. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Adds an emission hook for a signal, which will get called for any emission | 
					
						
							|  |  |  |  |  * of that signal, independent of the instance. This is possible only | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  * for signals which don't have %G_SIGNAL_NO_HOOKS flag set. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: the hook id, for later use with g_signal_remove_emission_hook(). | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | gulong | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | g_signal_add_emission_hook (guint               signal_id, | 
					
						
							|  |  |  |  | 			    GQuark              detail, | 
					
						
							|  |  |  |  | 			    GSignalEmissionHook hook_func, | 
					
						
							|  |  |  |  | 			    gpointer            hook_data, | 
					
						
							|  |  |  |  | 			    GDestroyNotify      data_destroy) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   static gulong seq_hook_id = 1; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   SignalNode *node; | 
					
						
							|  |  |  |  |   GHook *hook; | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  |   SignalHook *signal_hook; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_id > 0, 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (hook_func != NULL, 0); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
										
										
											2004-10-04 20:20:05 +00:00
										 |  |  |  |   if (!node || node->destroyed) | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: invalid signal id '%u'", G_STRLOC, signal_id); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2004-10-04 20:20:05 +00:00
										 |  |  |  |   if (node->flags & G_SIGNAL_NO_HOOKS)  | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' does not support emission hooks (G_SIGNAL_NO_HOOKS flag set)", G_STRLOC, signal_id); | 
					
						
							| 
									
										
										
										
											2004-10-04 20:20:05 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2012-03-13 16:02:30 -05:00
										 |  |  |  |     node->single_va_closure_is_valid = FALSE; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   if (!node->emission_hooks) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       node->emission_hooks = g_new (GHookList, 1); | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  |       g_hook_list_init (node->emission_hooks, sizeof (SignalHook)); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       node->emission_hooks->finalize_hook = signal_finalize_hook; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   node_check_deprecated (node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   hook = g_hook_alloc (node->emission_hooks); | 
					
						
							|  |  |  |  |   hook->data = hook_data; | 
					
						
							| 
									
										
										
										
											2002-03-13 15:36:04 +00:00
										 |  |  |  |   hook->func = (gpointer) hook_func; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   hook->destroy = data_destroy; | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  |   signal_hook = SIGNAL_HOOK (hook); | 
					
						
							|  |  |  |  |   signal_hook->detail = detail; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   node->emission_hooks->seq_id = seq_hook_id; | 
					
						
							|  |  |  |  |   g_hook_append (node->emission_hooks, hook); | 
					
						
							|  |  |  |  |   seq_hook_id = node->emission_hooks->seq_id; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   return hook->hook_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_remove_emission_hook: | 
					
						
							|  |  |  |  |  * @signal_id: the id of the signal | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @hook_id: the id of the emission hook, as returned by | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  g_signal_add_emission_hook() | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Deletes an emission hook. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | void | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | g_signal_remove_emission_hook (guint  signal_id, | 
					
						
							|  |  |  |  | 			       gulong hook_id) | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_if_fail (signal_id > 0); | 
					
						
							|  |  |  |  |   g_return_if_fail (hook_id > 0); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   if (!node || node->destroyed) | 
					
						
							| 
									
										
										
										
											2012-06-21 12:12:53 -04:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: invalid signal id '%u'", G_STRLOC, signal_id); | 
					
						
							| 
									
										
										
										
											2012-06-21 12:12:53 -04:00
										 |  |  |  |       goto out; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   else if (!node->emission_hooks || !g_hook_destroy (node->emission_hooks, hook_id)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal \"%s\" had no hook (%lu) to remove", G_STRLOC, node->name, hook_id); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   node->single_va_closure_is_valid = FALSE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-21 12:12:53 -04:00
										 |  |  |  |  out: | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | static inline guint | 
					
						
							|  |  |  |  | signal_parse_name (const gchar *name, | 
					
						
							|  |  |  |  | 		   GType        itype, | 
					
						
							|  |  |  |  | 		   GQuark      *detail_p, | 
					
						
							|  |  |  |  | 		   gboolean     force_quark) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   const gchar *colon = strchr (name, ':'); | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   if (!colon) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  |       signal_id = signal_id_lookup (name, itype); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |       if (signal_id && detail_p) | 
					
						
							|  |  |  |  | 	*detail_p = 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else if (colon[1] == ':') | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       gchar buffer[32]; | 
					
						
							| 
									
										
										
										
											2025-04-11 23:46:05 +01:00
										 |  |  |  |       size_t l = (size_t) (colon - name); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-11-12 20:59:40 +00:00
										 |  |  |  |       if (colon[2] == '\0') | 
					
						
							|  |  |  |  |         return 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |       if (l < 32) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  memcpy (buffer, name, l); | 
					
						
							|  |  |  |  | 	  buffer[l] = 0; | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  | 	  signal_id = signal_id_lookup (buffer, itype); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  gchar *signal = g_new (gchar, l + 1); | 
					
						
							|  |  |  |  | 	   | 
					
						
							|  |  |  |  | 	  memcpy (signal, name, l); | 
					
						
							|  |  |  |  | 	  signal[l] = 0; | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  | 	  signal_id = signal_id_lookup (signal, itype); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | 	  g_free (signal); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       if (signal_id && detail_p) | 
					
						
							| 
									
										
										
										
											2019-11-12 20:59:40 +00:00
										 |  |  |  |         *detail_p = (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     signal_id = 0; | 
					
						
							|  |  |  |  |   return signal_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_parse_name: | 
					
						
							|  |  |  |  |  * @detailed_signal: a string of the form "signal-name::detail". | 
					
						
							|  |  |  |  |  * @itype: The interface/instance type that introduced "signal-name". | 
					
						
							| 
									
										
										
										
											2011-08-21 17:15:52 +02:00
										 |  |  |  |  * @signal_id_p: (out): Location to store the signal id. | 
					
						
							|  |  |  |  |  * @detail_p: (out): Location to store the detail quark. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @force_detail_quark: %TRUE forces creation of a #GQuark for the detail. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Internal function to parse a signal name into its @signal_id | 
					
						
							|  |  |  |  |  * and @detail quark. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: Whether the signal name could successfully be parsed and @signal_id_p and @detail_p contain valid return values. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | gboolean | 
					
						
							|  |  |  |  | g_signal_parse_name (const gchar *detailed_signal, | 
					
						
							|  |  |  |  | 		     GType        itype, | 
					
						
							|  |  |  |  | 		     guint       *signal_id_p, | 
					
						
							|  |  |  |  | 		     GQuark      *detail_p, | 
					
						
							|  |  |  |  | 		     gboolean	  force_detail_quark) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |   GQuark detail = 0; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |   g_return_val_if_fail (detailed_signal != NULL, FALSE); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), FALSE); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  |   signal_id = signal_parse_name (detailed_signal, itype, &detail, force_detail_quark); | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   node = signal_id ? LOOKUP_SIGNAL_NODE (signal_id) : NULL; | 
					
						
							| 
									
										
										
										
											2022-07-15 16:09:14 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |   if (!node || node->destroyed || | 
					
						
							|  |  |  |  |       (detail && !(node->flags & G_SIGNAL_DETAILED))) | 
					
						
							| 
									
										
										
										
											2022-07-15 16:09:14 +02:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |       return FALSE; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (signal_id_p) | 
					
						
							|  |  |  |  |     *signal_id_p = signal_id; | 
					
						
							|  |  |  |  |   if (detail_p) | 
					
						
							|  |  |  |  |     *detail_p = detail; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return TRUE; | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_stop_emission_by_name: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the object whose signal handlers you wish to stop. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @detailed_signal: a string of the form "signal-name::detail". | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Stops a signal's current emission. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * This is just like g_signal_stop_emission() except it will look up the | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * signal id for you. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_stop_emission_by_name (gpointer     instance, | 
					
						
							|  |  |  |  | 				const gchar *detailed_signal) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  |   GQuark detail = 0; | 
					
						
							|  |  |  |  |   GType itype; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (detailed_signal != NULL); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |   itype = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							|  |  |  |  |   signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE); | 
					
						
							|  |  |  |  |   if (signal_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal '%s' does not support details", G_STRLOC, detailed_signal); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |       else if (!g_type_is_a (itype, node->itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                     G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | 	  Emission *emission = emission_find (signal_id, detail, instance); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | 	   | 
					
						
							|  |  |  |  | 	  if (emission) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	      if (emission->state == EMISSION_HOOK) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 		g_critical (G_STRLOC ": emission of signal \"%s\" for instance '%p' cannot be stopped from emission hook", | 
					
						
							|  |  |  |  | 			    node->name, instance); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	      else if (emission->state == EMISSION_RUN) | 
					
						
							|  |  |  |  | 		emission->state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	  else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	    g_critical (G_STRLOC ": no emission of signal \"%s\" to stop for instance '%p'", | 
					
						
							|  |  |  |  | 		        node->name, instance); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                 G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_lookup: | 
					
						
							|  |  |  |  |  * @name: the signal's name. | 
					
						
							|  |  |  |  |  * @itype: the type that the signal operates on. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Given the name of the signal and the type of object it connects to, gets | 
					
						
							|  |  |  |  |  * the signal's identifying integer. Emitting the signal by number is | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * somewhat faster than using the name each time. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Also tries the ancestors of the given type. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-09-20 11:23:08 +02:00
										 |  |  |  |  * The type class passed as @itype must already have been instantiated (for | 
					
						
							|  |  |  |  |  * example, using g_type_class_ref()) for this function to work, as signals are | 
					
						
							|  |  |  |  |  * always installed during class initialization. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * See g_signal_new() for details on allowed signal names. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: the signal's identifying number, or 0 if no signal was found. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_lookup (const gchar *name, | 
					
						
							|  |  |  |  |                  GType        itype) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |   guint signal_id; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   g_return_val_if_fail (name != NULL, 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  |   signal_id = signal_id_lookup (name, itype); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |   if (!signal_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       /* give elaborate warnings */ | 
					
						
							|  |  |  |  |       if (!g_type_name (itype)) | 
					
						
							| 
									
										
										
										
											2022-12-14 23:55:17 +00:00
										 |  |  |  | 	g_critical (G_STRLOC ": unable to look up signal \"%s\" for invalid type id '%"G_GUINTPTR_FORMAT"'", | 
					
						
							|  |  |  |  | 		    name, (guintptr) itype); | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  |       else if (!g_signal_is_valid_name (name)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical (G_STRLOC ": unable to look up invalid signal name \"%s\" on type '%s'", | 
					
						
							|  |  |  |  |                     name, g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-10-27 03:33:31 +00:00
										 |  |  |  |   return signal_id; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_list_ids: | 
					
						
							|  |  |  |  |  * @itype: Instance or interface type. | 
					
						
							|  |  |  |  |  * @n_ids: Location to store the number of signal ids for @itype. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Lists the signals by id that a certain instance or interface type | 
					
						
							|  |  |  |  |  * created. Further information about the signals can be acquired through | 
					
						
							|  |  |  |  |  * g_signal_query(). | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2016-02-03 18:12:04 +01:00
										 |  |  |  |  * Returns: (array length=n_ids) (transfer full): Newly allocated array of signal IDs. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  | guint* | 
					
						
							|  |  |  |  | g_signal_list_ids (GType  itype, | 
					
						
							|  |  |  |  | 		   guint *n_ids) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   SignalKey *keys; | 
					
						
							|  |  |  |  |   GArray *result; | 
					
						
							|  |  |  |  |   guint n_nodes; | 
					
						
							|  |  |  |  |   guint i; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), NULL); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (n_ids != NULL, NULL); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |   keys = g_bsearch_array_get_nth (g_signal_key_bsa, &g_signal_key_bconfig, 0); | 
					
						
							|  |  |  |  |   n_nodes = g_bsearch_array_get_n_nodes (g_signal_key_bsa); | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |   result = g_array_new (FALSE, FALSE, sizeof (guint)); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   for (i = 0; i < n_nodes; i++) | 
					
						
							|  |  |  |  |     if (keys[i].itype == itype) | 
					
						
							|  |  |  |  |       { | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |         g_array_append_val (result, keys[i].signal_id); | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |       } | 
					
						
							|  |  |  |  |   *n_ids = result->len; | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |   if (!n_nodes) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       /* give elaborate warnings */ | 
					
						
							|  |  |  |  |       if (!g_type_name (itype)) | 
					
						
							| 
									
										
										
										
											2022-12-14 23:55:17 +00:00
										 |  |  |  | 	g_critical (G_STRLOC ": unable to list signals for invalid type id '%"G_GUINTPTR_FORMAT"'", | 
					
						
							|  |  |  |  | 		    (guintptr) itype); | 
					
						
							| 
									
										
										
										
											2007-08-14 22:55:23 +00:00
										 |  |  |  |       else if (!G_TYPE_IS_INSTANTIATABLE (itype) && !G_TYPE_IS_INTERFACE (itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical (G_STRLOC ": unable to list signals of non instantiatable type '%s'", | 
					
						
							|  |  |  |  | 		    g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2007-08-14 22:55:23 +00:00
										 |  |  |  |       else if (!g_type_class_peek (itype) && !G_TYPE_IS_INTERFACE (itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical (G_STRLOC ": unable to list signals of unloaded type '%s'", | 
					
						
							|  |  |  |  | 		    g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return (guint*) g_array_free (result, FALSE); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_name: | 
					
						
							|  |  |  |  |  * @signal_id: the signal's identifying number. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Given the signal's identifier, finds its name. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Two different signals may have the same name, if they have differing types. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * Returns: (nullable): the signal name, or %NULL if the signal number was invalid. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-03-12 21:50:45 -05:00
										 |  |  |  | const gchar * | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | g_signal_name (guint signal_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2005-09-05 19:23:32 +00:00
										 |  |  |  |   const gchar *name; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   name = node ? node->name : NULL; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2005-09-05 19:23:32 +00:00
										 |  |  |  |   return (char*) name; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_query: | 
					
						
							|  |  |  |  |  * @signal_id: The signal id of the signal to query information for. | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @query: (out caller-allocates) (not optional): A user provided structure that is | 
					
						
							| 
									
										
										
										
											2011-08-21 17:15:52 +02:00
										 |  |  |  |  *  filled in with constant values upon success. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Queries the signal system for in-depth information about a | 
					
						
							|  |  |  |  |  * specific signal. This function will fill in a user-provided | 
					
						
							|  |  |  |  |  * structure to hold signal-specific information. If an invalid | 
					
						
							|  |  |  |  |  * signal id is passed in, the @signal_id member of the #GSignalQuery | 
					
						
							|  |  |  |  |  * is 0. All members filled into the #GSignalQuery structure should | 
					
						
							|  |  |  |  |  * be considered constant and have to be left untouched. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_query (guint         signal_id, | 
					
						
							|  |  |  |  | 		GSignalQuery *query) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   g_return_if_fail (query != NULL); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   if (!node || node->destroyed) | 
					
						
							|  |  |  |  |     query->signal_id = 0; | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       query->signal_id = node->signal_id; | 
					
						
							|  |  |  |  |       query->signal_name = node->name; | 
					
						
							|  |  |  |  |       query->itype = node->itype; | 
					
						
							|  |  |  |  |       query->signal_flags = node->flags; | 
					
						
							|  |  |  |  |       query->return_type = node->return_type; | 
					
						
							|  |  |  |  |       query->n_params = node->n_params; | 
					
						
							|  |  |  |  |       query->param_types = node->param_types; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_new: | 
					
						
							|  |  |  |  |  * @signal_name: the name for the signal | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @itype: the type this signal pertains to. It will also pertain to | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  types which are derived from this type. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @signal_flags: a combination of #GSignalFlags specifying detail of when | 
					
						
							|  |  |  |  |  *  the default handler is to be invoked. You should at least specify | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @class_offset: The offset of the function pointer in the class structure | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  for this type. Used to invoke a class method generically. Pass 0 to | 
					
						
							| 
									
										
										
										
											2010-03-06 14:15:25 +02:00
										 |  |  |  |  *  not associate a class method slot with this signal. | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @accumulator: (nullable) (scope forever): the accumulator for this signal; may be %NULL. | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @c_marshaller: (nullable): the function to translate arrays of parameter | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  *  values to signal emissions into C language callback invocations or %NULL. | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  * @return_type: the type of return value, or %G_TYPE_NONE for a signal | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  without a return value. | 
					
						
							|  |  |  |  |  * @n_params: the number of parameter types to follow. | 
					
						
							|  |  |  |  |  * @...: a list of types, one for each parameter. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Creates a new signal. (This is usually done in the class initializer.) | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * A signal name consists of segments consisting of ASCII letters and | 
					
						
							| 
									
										
										
										
											2019-11-12 19:35:19 +00:00
										 |  |  |  |  * digits, separated by either the `-` or `_` character. The first | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * character of a signal name must be a letter. Names which violate these | 
					
						
							| 
									
										
										
										
											2019-11-12 19:35:19 +00:00
										 |  |  |  |  * rules lead to undefined behaviour. These are the same rules as for property | 
					
						
							|  |  |  |  |  * naming (see g_param_spec_internal()). | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * When registering a signal and looking up a signal, either separator can | 
					
						
							| 
									
										
										
										
											2019-11-12 19:35:19 +00:00
										 |  |  |  |  * be used, but they cannot be mixed. Using `-` is considerably more efficient. | 
					
						
							|  |  |  |  |  * Using `_` is discouraged. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2010-03-06 14:15:25 +02:00
										 |  |  |  |  * If 0 is used for @class_offset subclasses cannot override the class handler | 
					
						
							| 
									
										
										
										
											2014-01-31 22:05:04 -05:00
										 |  |  |  |  * in their class_init method by doing super_class->signal_handler = my_signal_handler. | 
					
						
							|  |  |  |  |  * Instead they will have to use g_signal_override_class_handler(). | 
					
						
							| 
									
										
										
										
											2010-03-06 14:15:25 +02:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-05-30 18:41:02 -07:00
										 |  |  |  |  * If @c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as | 
					
						
							|  |  |  |  |  * the marshaller for this signal. In some simple cases, g_signal_new() | 
					
						
							|  |  |  |  |  * will use a more optimized c_marshaller and va_marshaller for the signal | 
					
						
							|  |  |  |  |  * instead of g_cclosure_marshal_generic(). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * If @c_marshaller is non-%NULL, you need to also specify a va_marshaller | 
					
						
							|  |  |  |  |  * using g_signal_set_va_marshaller() or the generic va_marshaller will | 
					
						
							|  |  |  |  |  * be used. | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: the signal id | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-12-15 07:05:10 +00:00
										 |  |  |  | guint | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  | g_signal_new (const gchar	 *signal_name, | 
					
						
							|  |  |  |  | 	      GType		  itype, | 
					
						
							|  |  |  |  | 	      GSignalFlags	  signal_flags, | 
					
						
							|  |  |  |  | 	      guint               class_offset, | 
					
						
							|  |  |  |  | 	      GSignalAccumulator  accumulator, | 
					
						
							|  |  |  |  | 	      gpointer		  accu_data, | 
					
						
							|  |  |  |  | 	      GSignalCMarshaller  c_marshaller, | 
					
						
							|  |  |  |  | 	      GType		  return_type, | 
					
						
							|  |  |  |  | 	      guint		  n_params, | 
					
						
							|  |  |  |  | 	      ...) | 
					
						
							| 
									
										
										
										
											2000-12-15 07:05:10 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   va_list args; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_name != NULL, 0); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   va_start (args, n_params); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   signal_id = g_signal_new_valist (signal_name, itype, signal_flags, | 
					
						
							| 
									
										
										
										
											2001-03-09 14:02:30 +00:00
										 |  |  |  |                                    class_offset ? g_signal_type_cclosure_new (itype, class_offset) : NULL, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 				   accumulator, accu_data, c_marshaller, | 
					
						
							| 
									
										
										
										
											2000-12-15 07:05:10 +00:00
										 |  |  |  |                                    return_type, n_params, args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   va_end (args); | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-12-15 07:05:10 +00:00
										 |  |  |  |   return signal_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_new_class_handler: | 
					
						
							|  |  |  |  |  * @signal_name: the name for the signal | 
					
						
							|  |  |  |  |  * @itype: the type this signal pertains to. It will also pertain to | 
					
						
							|  |  |  |  |  *  types which are derived from this type. | 
					
						
							|  |  |  |  |  * @signal_flags: a combination of #GSignalFlags specifying detail of when | 
					
						
							|  |  |  |  |  *  the default handler is to be invoked. You should at least specify | 
					
						
							|  |  |  |  |  *  %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST. | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @class_handler: (nullable) (scope forever): a #GCallback which acts as class implementation of | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  *  this signal. Used to invoke a class method generically. Pass %NULL to | 
					
						
							|  |  |  |  |  *  not associate a class method with this signal. | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @accumulator: (nullable) (scope forever): the accumulator for this signal; may be %NULL. | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @c_marshaller: (nullable): the function to translate arrays of parameter | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  *  values to signal emissions into C language callback invocations or %NULL. | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  * @return_type: the type of return value, or %G_TYPE_NONE for a signal | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  *  without a return value. | 
					
						
							|  |  |  |  |  * @n_params: the number of parameter types to follow. | 
					
						
							|  |  |  |  |  * @...: a list of types, one for each parameter. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Creates a new signal. (This is usually done in the class initializer.) | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * This is a variant of g_signal_new() that takes a C callback instead | 
					
						
							| 
									
										
										
										
											2018-05-17 13:54:46 +01:00
										 |  |  |  |  * of a class offset for the signal's class handler. This function | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * doesn't need a function pointer exposed in the class structure of | 
					
						
							|  |  |  |  |  * an object definition, instead the function pointer is passed | 
					
						
							| 
									
										
										
										
											2020-06-12 14:02:30 +01:00
										 |  |  |  |  * directly and can be overridden by derived classes with | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * g_signal_override_class_closure() or | 
					
						
							| 
									
										
										
										
											2022-09-16 08:25:46 +00:00
										 |  |  |  |  * g_signal_override_class_handler() and chained to with | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * g_signal_chain_from_overridden() or | 
					
						
							| 
									
										
										
										
											2008-07-21 10:36:03 +00:00
										 |  |  |  |  * g_signal_chain_from_overridden_handler(). | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * See g_signal_new() for information about signal names. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2014-04-21 14:50:53 +02:00
										 |  |  |  |  * If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  * the marshaller for this signal. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * Returns: the signal id | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.18 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_new_class_handler (const gchar        *signal_name, | 
					
						
							|  |  |  |  |                             GType               itype, | 
					
						
							|  |  |  |  |                             GSignalFlags        signal_flags, | 
					
						
							|  |  |  |  |                             GCallback           class_handler, | 
					
						
							|  |  |  |  |                             GSignalAccumulator  accumulator, | 
					
						
							|  |  |  |  |                             gpointer            accu_data, | 
					
						
							|  |  |  |  |                             GSignalCMarshaller  c_marshaller, | 
					
						
							|  |  |  |  |                             GType               return_type, | 
					
						
							|  |  |  |  |                             guint               n_params, | 
					
						
							|  |  |  |  |                             ...) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   va_list args; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_name != NULL, 0); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   va_start (args, n_params); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   signal_id = g_signal_new_valist (signal_name, itype, signal_flags, | 
					
						
							|  |  |  |  |                                    class_handler ? g_cclosure_new (class_handler, NULL, NULL) : NULL, | 
					
						
							|  |  |  |  |                                    accumulator, accu_data, c_marshaller, | 
					
						
							|  |  |  |  |                                    return_type, n_params, args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   va_end (args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return signal_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | static inline ClassClosure* | 
					
						
							|  |  |  |  | signal_find_class_closure (SignalNode *node, | 
					
						
							|  |  |  |  | 			   GType       itype) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GBSearchArray *bsa = node->class_closure_bsa; | 
					
						
							|  |  |  |  |   ClassClosure *cc; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (bsa) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       ClassClosure key; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       /* cc->instance_type is 0 for default closure */ | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (g_bsearch_array_get_n_nodes (bsa) == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0); | 
					
						
							|  |  |  |  |           if (cc && cc->instance_type == 0) /* check for default closure */ | 
					
						
							|  |  |  |  |             return cc; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       key.instance_type = itype; | 
					
						
							|  |  |  |  |       cc = g_bsearch_array_lookup (bsa, &g_class_closure_bconfig, &key); | 
					
						
							|  |  |  |  |       while (!cc && key.instance_type) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  key.instance_type = g_type_parent (key.instance_type); | 
					
						
							|  |  |  |  | 	  cc = g_bsearch_array_lookup (bsa, &g_class_closure_bconfig, &key); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     cc = NULL; | 
					
						
							|  |  |  |  |   return cc; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static inline GClosure* | 
					
						
							|  |  |  |  | signal_lookup_closure (SignalNode    *node, | 
					
						
							|  |  |  |  | 		       GTypeInstance *instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   ClassClosure *cc; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-13 09:22:57 +00:00
										 |  |  |  |   cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   return cc ? cc->closure : NULL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_add_class_closure (SignalNode *node, | 
					
						
							|  |  |  |  | 			  GType       itype, | 
					
						
							|  |  |  |  | 			  GClosure   *closure) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   ClassClosure key; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   node->single_va_closure_is_valid = FALSE; | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (!node->class_closure_bsa) | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |     node->class_closure_bsa = g_bsearch_array_create (&g_class_closure_bconfig); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   key.instance_type = itype; | 
					
						
							|  |  |  |  |   key.closure = g_closure_ref (closure); | 
					
						
							|  |  |  |  |   node->class_closure_bsa = g_bsearch_array_insert (node->class_closure_bsa, | 
					
						
							|  |  |  |  | 						    &g_class_closure_bconfig, | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  | 						    &key); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   g_closure_sink (closure); | 
					
						
							|  |  |  |  |   if (node->c_marshaller && closure && G_CLOSURE_NEEDS_MARSHAL (closure)) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       g_closure_set_marshal (closure, node->c_marshaller); | 
					
						
							|  |  |  |  |       if (node->va_marshaller) | 
					
						
							|  |  |  |  | 	_g_closure_set_va_marshal (closure, node->va_marshaller); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_newv: | 
					
						
							|  |  |  |  |  * @signal_name: the name for the signal | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @itype: the type this signal pertains to. It will also pertain to | 
					
						
							| 
									
										
										
										
											2008-11-28 23:53:13 +00:00
										 |  |  |  |  *     types which are derived from this type | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @signal_flags: a combination of #GSignalFlags specifying detail of when | 
					
						
							| 
									
										
										
										
											2008-11-28 23:53:13 +00:00
										 |  |  |  |  *     the default handler is to be invoked. You should at least specify | 
					
						
							|  |  |  |  |  *     %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @class_closure: (nullable): The closure to invoke on signal emission; | 
					
						
							| 
									
										
										
										
											2011-08-21 17:15:52 +02:00
										 |  |  |  |  *     may be %NULL | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @accumulator: (nullable) (scope forever): the accumulator for this signal; may be %NULL | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @c_marshaller: (nullable): the function to translate arrays of | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  *     parameter values to signal emissions into C language callback | 
					
						
							|  |  |  |  |  *     invocations or %NULL | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  * @return_type: the type of return value, or %G_TYPE_NONE for a signal | 
					
						
							| 
									
										
										
										
											2008-11-28 23:53:13 +00:00
										 |  |  |  |  *     without a return value | 
					
						
							|  |  |  |  |  * @n_params: the length of @param_types | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @param_types: (array length=n_params) (nullable): an array of types, one for | 
					
						
							|  |  |  |  |  *     each parameter (may be %NULL if @n_params is zero) | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Creates a new signal. (This is usually done in the class initializer.) | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * See g_signal_new() for details on allowed signal names. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2014-04-21 14:50:53 +02:00
										 |  |  |  |  * If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  * the marshaller for this signal. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: the signal id | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_newv (const gchar       *signal_name, | 
					
						
							|  |  |  |  |                GType              itype, | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |                GSignalFlags       signal_flags, | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |                GClosure          *class_closure, | 
					
						
							|  |  |  |  |                GSignalAccumulator accumulator, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 	       gpointer		  accu_data, | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |                GSignalCMarshaller c_marshaller, | 
					
						
							|  |  |  |  |                GType		  return_type, | 
					
						
							|  |  |  |  |                guint              n_params, | 
					
						
							|  |  |  |  |                GType		 *param_types) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |   const gchar *name; | 
					
						
							|  |  |  |  |   gchar *signal_name_copy = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   guint signal_id, i; | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |   GSignalCMarshaller builtin_c_marshaller; | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  |   GSignalCVaMarshaller builtin_va_marshaller; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |   GSignalCVaMarshaller va_marshaller; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_name != NULL, 0); | 
					
						
							| 
									
										
										
										
											2019-12-23 18:36:21 +01:00
										 |  |  |  |   g_return_val_if_fail (g_signal_is_valid_name (signal_name), 0); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0); | 
					
						
							|  |  |  |  |   if (n_params) | 
					
						
							|  |  |  |  |     g_return_val_if_fail (param_types != NULL, 0); | 
					
						
							| 
									
										
										
										
											2001-03-09 14:02:30 +00:00
										 |  |  |  |   g_return_val_if_fail ((return_type & G_SIGNAL_TYPE_STATIC_SCOPE) == 0, 0); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     g_return_val_if_fail (accumulator == NULL, 0); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   if (!accumulator) | 
					
						
							|  |  |  |  |     g_return_val_if_fail (accu_data == NULL, 0); | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  |   g_return_val_if_fail ((signal_flags & G_SIGNAL_ACCUMULATOR_FIRST_RUN) == 0, 0); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |   if (!is_canonical (signal_name)) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       signal_name_copy = g_strdup (signal_name); | 
					
						
							|  |  |  |  |       canonicalize_key (signal_name_copy); | 
					
						
							|  |  |  |  |       name = signal_name_copy; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       name = signal_name; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2019-11-12 17:38:44 +00:00
										 |  |  |  |   signal_id = signal_id_lookup (name, itype); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   if (node && !node->destroyed) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical (G_STRLOC ": signal \"%s\" already exists in the '%s' %s", | 
					
						
							|  |  |  |  |                   name, | 
					
						
							|  |  |  |  |                   type_debug_name (node->itype), | 
					
						
							|  |  |  |  |                   G_TYPE_IS_INTERFACE (node->itype) ? "interface" : "class ancestry"); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |       g_free (signal_name_copy); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   if (node && node->itype != itype) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical (G_STRLOC ": signal \"%s\" for type '%s' was previously created for type '%s'", | 
					
						
							|  |  |  |  |                   name, | 
					
						
							|  |  |  |  |                   type_debug_name (itype), | 
					
						
							|  |  |  |  |                   type_debug_name (node->itype)); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |       g_free (signal_name_copy); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   for (i = 0; i < n_params; i++) | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |     if (!G_TYPE_IS_VALUE (param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical (G_STRLOC ": parameter %d of type '%s' for signal \"%s::%s\" is not a value type", | 
					
						
							|  |  |  |  | 		    i + 1, type_debug_name (param_types[i]), type_debug_name (itype), name); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  | 	g_free (signal_name_copy); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	return 0; | 
					
						
							|  |  |  |  |       } | 
					
						
							| 
									
										
										
										
											2001-02-17 05:32:00 +00:00
										 |  |  |  |   if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical (G_STRLOC ": return value of type '%s' for signal \"%s::%s\" is not a value type", | 
					
						
							|  |  |  |  | 		  type_debug_name (return_type), type_debug_name (itype), name); | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |       g_free (signal_name_copy); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   /* setup permanent portion of signal node */ | 
					
						
							|  |  |  |  |   if (!node) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalKey key; | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       signal_id = g_n_signal_nodes++; | 
					
						
							|  |  |  |  |       node = g_new (SignalNode, 1); | 
					
						
							|  |  |  |  |       node->signal_id = signal_id; | 
					
						
							|  |  |  |  |       g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes); | 
					
						
							|  |  |  |  |       g_signal_nodes[signal_id] = node; | 
					
						
							|  |  |  |  |       node->itype = itype; | 
					
						
							|  |  |  |  |       key.itype = itype; | 
					
						
							|  |  |  |  |       key.signal_id = signal_id; | 
					
						
							| 
									
										
										
										
											2005-09-05 19:23:32 +00:00
										 |  |  |  |       node->name = g_intern_string (name); | 
					
						
							|  |  |  |  |       key.quark = g_quark_from_string (name); | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |       g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key); | 
					
						
							| 
									
										
										
										
											2010-01-01 21:39:52 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  |       TRACE (GOBJECT_SIGNAL_NEW (signal_id, name, (uintmax_t) itype)); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   node->destroyed = FALSE; | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   /* setup reinitializable portion */ | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   node->single_va_closure_is_valid = FALSE; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   node->flags = signal_flags & G_SIGNAL_FLAGS_MASK; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node->n_params = n_params; | 
					
						
							| 
									
										
										
										
											2021-02-04 13:39:25 +00:00
										 |  |  |  |   node->param_types = g_memdup2 (param_types, sizeof (GType) * n_params); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node->return_type = return_type; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   node->class_closure_bsa = NULL; | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   if (accumulator) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       node->accumulator = g_new (SignalAccumulator, 1); | 
					
						
							|  |  |  |  |       node->accumulator->func = accumulator; | 
					
						
							|  |  |  |  |       node->accumulator->data = accu_data; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     node->accumulator = NULL; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   builtin_c_marshaller = NULL; | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  |   builtin_va_marshaller = NULL; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   /* Pick up built-in va marshallers for standard types, and
 | 
					
						
							|  |  |  |  |      instead of generic marshaller if no marshaller specified */ | 
					
						
							|  |  |  |  |   if (n_params == 0 && return_type == G_TYPE_NONE) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       builtin_c_marshaller = g_cclosure_marshal_VOID__VOID; | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  |       builtin_va_marshaller = g_cclosure_marshal_VOID__VOIDv; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else if (n_params == 1 && return_type == G_TYPE_NONE) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  | #define ADD_CHECK(__type__) \
 | 
					
						
							| 
									
										
										
										
											2012-03-02 20:22:29 +01:00
										 |  |  |  |       else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \ | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  | 	{                                                                \ | 
					
						
							|  |  |  |  | 	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \ | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  | 	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \ | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (0) {} | 
					
						
							|  |  |  |  |       ADD_CHECK (BOOLEAN) | 
					
						
							|  |  |  |  |       ADD_CHECK (CHAR) | 
					
						
							|  |  |  |  |       ADD_CHECK (UCHAR) | 
					
						
							|  |  |  |  |       ADD_CHECK (INT) | 
					
						
							|  |  |  |  |       ADD_CHECK (UINT) | 
					
						
							|  |  |  |  |       ADD_CHECK (LONG) | 
					
						
							|  |  |  |  |       ADD_CHECK (ULONG) | 
					
						
							|  |  |  |  |       ADD_CHECK (ENUM) | 
					
						
							|  |  |  |  |       ADD_CHECK (FLAGS) | 
					
						
							|  |  |  |  |       ADD_CHECK (FLOAT) | 
					
						
							|  |  |  |  |       ADD_CHECK (DOUBLE) | 
					
						
							|  |  |  |  |       ADD_CHECK (STRING) | 
					
						
							|  |  |  |  |       ADD_CHECK (PARAM) | 
					
						
							|  |  |  |  |       ADD_CHECK (BOXED) | 
					
						
							|  |  |  |  |       ADD_CHECK (POINTER) | 
					
						
							|  |  |  |  |       ADD_CHECK (OBJECT) | 
					
						
							|  |  |  |  |       ADD_CHECK (VARIANT) | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |   if (c_marshaller == NULL) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |       if (builtin_c_marshaller) | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  |         { | 
					
						
							|  |  |  |  | 	  c_marshaller = builtin_c_marshaller; | 
					
						
							|  |  |  |  |           va_marshaller = builtin_va_marshaller; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  c_marshaller = g_cclosure_marshal_generic; | 
					
						
							|  |  |  |  | 	  va_marshaller = g_cclosure_marshal_generic_va; | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-07-28 08:51:17 -04:00
										 |  |  |  |   else | 
					
						
							|  |  |  |  |     va_marshaller = NULL; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node->c_marshaller = c_marshaller; | 
					
						
							| 
									
										
										
										
											2012-03-02 11:20:45 +01:00
										 |  |  |  |   node->va_marshaller = va_marshaller; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node->emission_hooks = NULL; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (class_closure) | 
					
						
							|  |  |  |  |     signal_add_class_closure (node, 0, class_closure); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-12 19:42:44 +00:00
										 |  |  |  |   g_free (signal_name_copy); | 
					
						
							| 
									
										
										
										
											2005-09-05 19:23:32 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   return signal_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-05 15:24:27 +01:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_set_va_marshaller: | 
					
						
							|  |  |  |  |  * @signal_id: the signal id | 
					
						
							|  |  |  |  |  * @instance_type: the instance type on which to set the marshaller. | 
					
						
							|  |  |  |  |  * @va_marshaller: the marshaller to set. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Change the #GSignalCVaMarshaller used for a given signal.  This is a | 
					
						
							|  |  |  |  |  * specialised form of the marshaller that can often be used for the | 
					
						
							|  |  |  |  |  * common case of a single connected signal handler and avoids the | 
					
						
							|  |  |  |  |  * overhead of #GValue.  Its use is optional. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.32 | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_set_va_marshaller (guint              signal_id, | 
					
						
							|  |  |  |  | 			    GType              instance_type, | 
					
						
							|  |  |  |  | 			    GSignalCVaMarshaller va_marshaller) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (signal_id > 0); | 
					
						
							|  |  |  |  |   g_return_if_fail (va_marshaller != NULL); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   if (node) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       node->va_marshaller = va_marshaller; | 
					
						
							|  |  |  |  |       if (node->class_closure_bsa) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  ClassClosure *cc = g_bsearch_array_get_nth (node->class_closure_bsa, &g_class_closure_bconfig, 0); | 
					
						
							|  |  |  |  | 	  if (cc->closure->marshal == node->c_marshaller) | 
					
						
							|  |  |  |  | 	    _g_closure_set_va_marshal (cc->closure, va_marshaller); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-21 12:12:53 -04:00
										 |  |  |  |       node->single_va_closure_is_valid = FALSE; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_new_valist: | 
					
						
							|  |  |  |  |  * @signal_name: the name for the signal | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @itype: the type this signal pertains to. It will also pertain to | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  types which are derived from this type. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @signal_flags: a combination of #GSignalFlags specifying detail of when | 
					
						
							|  |  |  |  |  *  the default handler is to be invoked. You should at least specify | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST. | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @class_closure: (nullable): The closure to invoke on signal emission; may be %NULL. | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @accumulator: (nullable) (scope forever): the accumulator for this signal; may be %NULL. | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @c_marshaller: (nullable): the function to translate arrays of parameter | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  *  values to signal emissions into C language callback invocations or %NULL. | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  * @return_type: the type of return value, or %G_TYPE_NONE for a signal | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  without a return value. | 
					
						
							|  |  |  |  |  * @n_params: the number of parameter types in @args. | 
					
						
							|  |  |  |  |  * @args: va_list of #GType, one for each parameter. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Creates a new signal. (This is usually done in the class initializer.) | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * See g_signal_new() for details on allowed signal names. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-08-13 13:53:34 -04:00
										 |  |  |  |  * If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as | 
					
						
							| 
									
										
										
										
											2011-07-12 13:39:45 -03:00
										 |  |  |  |  * the marshaller for this signal. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: the signal id | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_new_valist (const gchar       *signal_name, | 
					
						
							|  |  |  |  |                      GType              itype, | 
					
						
							|  |  |  |  |                      GSignalFlags       signal_flags, | 
					
						
							|  |  |  |  |                      GClosure          *class_closure, | 
					
						
							|  |  |  |  |                      GSignalAccumulator accumulator, | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |                      gpointer           accu_data, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |                      GSignalCMarshaller c_marshaller, | 
					
						
							|  |  |  |  |                      GType              return_type, | 
					
						
							|  |  |  |  |                      guint              n_params, | 
					
						
							|  |  |  |  |                      va_list            args) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |   /* Somewhat arbitrarily reserve 200 bytes. That should cover the majority
 | 
					
						
							|  |  |  |  |    * of cases where n_params is small and still be small enough for what we | 
					
						
							|  |  |  |  |    * want to put on the stack. */ | 
					
						
							|  |  |  |  |   GType param_types_stack[200 / sizeof (GType)]; | 
					
						
							|  |  |  |  |   GType *param_types_heap = NULL; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   GType *param_types; | 
					
						
							|  |  |  |  |   guint i; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |   param_types = param_types_stack; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (n_params > 0) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |       if (G_UNLIKELY (n_params > G_N_ELEMENTS (param_types_stack))) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           param_types_heap = g_new (GType, n_params); | 
					
						
							|  |  |  |  |           param_types = param_types_heap; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (i = 0; i < n_params; i++) | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |         param_types[i] = va_arg (args, GType); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   signal_id = g_signal_newv (signal_name, itype, signal_flags, | 
					
						
							| 
									
										
										
										
											2021-01-26 13:38:18 +01:00
										 |  |  |  |                              class_closure, accumulator, accu_data, c_marshaller, | 
					
						
							|  |  |  |  |                              return_type, n_params, param_types); | 
					
						
							|  |  |  |  |   g_free (param_types_heap); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   return signal_id; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_destroy_R (SignalNode *signal_node) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode node = *signal_node; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   signal_node->destroyed = TRUE; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   /* reentrancy caution, zero out real contents first */ | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   signal_node->single_va_closure_is_valid = FALSE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   signal_node->n_params = 0; | 
					
						
							|  |  |  |  |   signal_node->param_types = NULL; | 
					
						
							|  |  |  |  |   signal_node->return_type = 0; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   signal_node->class_closure_bsa = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   signal_node->accumulator = NULL; | 
					
						
							|  |  |  |  |   signal_node->c_marshaller = NULL; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  |   signal_node->va_marshaller = NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   signal_node->emission_hooks = NULL; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-12-29 02:16:51 +00:00
										 |  |  |  | #ifdef	G_ENABLE_DEBUG
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   /* check current emissions */ | 
					
						
							|  |  |  |  |   { | 
					
						
							|  |  |  |  |     Emission *emission; | 
					
						
							|  |  |  |  |      | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |     for (emission = g_emissions; emission; emission = emission->next) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission->ihint.signal_id == node.signal_id) | 
					
						
							| 
									
										
										
										
											2013-05-20 17:54:48 -03:00
										 |  |  |  |         g_critical (G_STRLOC ": signal \"%s\" being destroyed is currently in emission (instance '%p')", | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |                     node.name, emission->instance); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   /* free contents that need to
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   g_free (node.param_types); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (node.class_closure_bsa) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       guint i; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (i = 0; i < node.class_closure_bsa->n_nodes; i++) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  ClassClosure *cc = g_bsearch_array_get_nth (node.class_closure_bsa, &g_class_closure_bconfig, i); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  g_closure_unref (cc->closure); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |       g_bsearch_array_free (node.class_closure_bsa, &g_class_closure_bconfig); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   g_free (node.accumulator); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (node.emission_hooks) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       g_hook_list_clear (node.emission_hooks); | 
					
						
							|  |  |  |  |       g_free (node.emission_hooks); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_override_class_closure: | 
					
						
							|  |  |  |  |  * @signal_id: the signal id | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @instance_type: the instance type on which to override the class closure | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  for the signal. | 
					
						
							|  |  |  |  |  * @class_closure: the closure. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Overrides the class closure (i.e. the default handler) for the given signal | 
					
						
							|  |  |  |  |  * for emissions on instances of @instance_type. @instance_type must be derived | 
					
						
							|  |  |  |  |  * from the type to which the signal belongs. | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * See g_signal_chain_from_overridden() and | 
					
						
							|  |  |  |  |  * g_signal_chain_from_overridden_handler() for how to chain up to the | 
					
						
							|  |  |  |  |  * parent class closure from inside the overridden one. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-11-14 03:02:22 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_override_class_closure (guint     signal_id, | 
					
						
							|  |  |  |  | 				 GType     instance_type, | 
					
						
							|  |  |  |  | 				 GClosure *class_closure) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   g_return_if_fail (signal_id > 0); | 
					
						
							|  |  |  |  |   g_return_if_fail (class_closure != NULL); | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  |   node_check_deprecated (node); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (!g_type_is_a (instance_type, node->itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: type '%s' cannot be overridden for signal id '%u'", G_STRLOC, type_debug_name (instance_type), signal_id); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       ClassClosure *cc = signal_find_class_closure (node, instance_type); | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (cc && cc->instance_type == instance_type) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: type '%s' is already overridden for signal id '%u'", G_STRLOC, type_debug_name (instance_type), signal_id); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	signal_add_class_closure (node, instance_type, class_closure); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-11-14 03:02:22 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_override_class_handler: | 
					
						
							|  |  |  |  |  * @signal_name: the name for the signal | 
					
						
							|  |  |  |  |  * @instance_type: the instance type on which to override the class handler | 
					
						
							|  |  |  |  |  *  for the signal. | 
					
						
							| 
									
										
										
										
											2023-11-29 12:04:59 +00:00
										 |  |  |  |  * @class_handler: (scope forever): the handler. | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Overrides the class closure (i.e. the default handler) for the | 
					
						
							|  |  |  |  |  * given signal for emissions on instances of @instance_type with | 
					
						
							| 
									
										
										
										
											2013-07-28 22:06:57 -04:00
										 |  |  |  |  * callback @class_handler. @instance_type must be derived from the | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * type to which the signal belongs. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * See g_signal_chain_from_overridden() and | 
					
						
							|  |  |  |  |  * g_signal_chain_from_overridden_handler() for how to chain up to the | 
					
						
							|  |  |  |  |  * parent class closure from inside the overridden one. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.18 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_override_class_handler (const gchar *signal_name, | 
					
						
							|  |  |  |  | 				 GType        instance_type, | 
					
						
							|  |  |  |  | 				 GCallback    class_handler) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_if_fail (signal_name != NULL); | 
					
						
							|  |  |  |  |   g_return_if_fail (instance_type != G_TYPE_NONE); | 
					
						
							|  |  |  |  |   g_return_if_fail (class_handler != NULL); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   signal_id = g_signal_lookup (signal_name, instance_type); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (signal_id) | 
					
						
							|  |  |  |  |     g_signal_override_class_closure (signal_id, instance_type, | 
					
						
							|  |  |  |  |                                      g_cclosure_new (class_handler, NULL, NULL)); | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-12-14 23:55:17 +00:00
										 |  |  |  |     g_critical ("%s: signal name '%s' is invalid for type id '%"G_GUINTPTR_FORMAT"'", | 
					
						
							|  |  |  |  |                 G_STRLOC, signal_name, (guintptr) instance_type); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_chain_from_overridden: | 
					
						
							| 
									
										
										
										
											2023-10-13 12:56:26 +01:00
										 |  |  |  |  * @instance_and_params: (array): the argument list of the signal emission. | 
					
						
							| 
									
										
										
										
											2011-08-21 17:15:52 +02:00
										 |  |  |  |  *  The first element in the array is a #GValue for the instance the signal | 
					
						
							|  |  |  |  |  *  is being emitted on. The rest are any arguments to be passed to the signal. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @return_value: Location for the return value. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Calls the original class closure of a signal. This function should only | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * be called from an overridden class closure; see | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * g_signal_override_class_closure() and | 
					
						
							|  |  |  |  |  * g_signal_override_class_handler(). | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-11-14 03:02:22 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_chain_from_overridden (const GValue *instance_and_params, | 
					
						
							|  |  |  |  | 				GValue       *return_value) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   GType chain_type = 0, restore_type = 0; | 
					
						
							|  |  |  |  |   Emission *emission = NULL; | 
					
						
							|  |  |  |  |   GClosure *closure = NULL; | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |   guint n_params = 0; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   gpointer instance; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (instance_and_params != NULL); | 
					
						
							|  |  |  |  |   instance = g_value_peek_pointer (instance_and_params); | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |   emission = emission_find_innermost (instance); | 
					
						
							|  |  |  |  |   if (emission) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |       SignalNode *node = LOOKUP_SIGNAL_NODE (emission->ihint.signal_id); | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       g_assert (node != NULL);	/* paranoid */ | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       /* we should probably do the same parameter checks as g_signal_emit() here.
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |        */ | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  |       if (emission->chain_type != G_TYPE_NONE) | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  ClassClosure *cc = signal_find_class_closure (node, emission->chain_type); | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  | 	   | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	  g_assert (cc != NULL);	/* closure currently in call stack */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  | 	  n_params = node->n_params; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	  restore_type = cc->instance_type; | 
					
						
							|  |  |  |  | 	  cc = signal_find_class_closure (node, g_type_parent (cc->instance_type)); | 
					
						
							|  |  |  |  | 	  if (cc && cc->instance_type != restore_type) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      closure = cc->closure; | 
					
						
							|  |  |  |  | 	      chain_type = cc->instance_type; | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |       else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal id '%u' cannot be chained from current emission stage for instance '%p'", G_STRLOC, node->signal_id, instance); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: no signal is currently being emitted for instance '%p'", G_STRLOC, instance); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   if (closure) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       emission->chain_type = chain_type; | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |       g_closure_invoke (closure, | 
					
						
							|  |  |  |  | 			return_value, | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  | 			n_params + 1, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 			instance_and_params, | 
					
						
							|  |  |  |  | 			&emission->ihint); | 
					
						
							|  |  |  |  |       SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |       emission->chain_type = restore_type; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-11-14 03:02:22 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | /**
 | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * g_signal_chain_from_overridden_handler: (skip) | 
					
						
							| 
									
										
										
										
											2013-12-06 12:23:09 +00:00
										 |  |  |  |  * @instance: (type GObject.TypeInstance): the instance the signal is being | 
					
						
							|  |  |  |  |  *    emitted on. | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * @...: parameters to be passed to the parent class closure, followed by a | 
					
						
							|  |  |  |  |  *  location for the return value. If the return type of the signal | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  *  is %G_TYPE_NONE, the return value location can be omitted. | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Calls the original class closure of a signal. This function should | 
					
						
							|  |  |  |  |  * only be called from an overridden class closure; see | 
					
						
							|  |  |  |  |  * g_signal_override_class_closure() and | 
					
						
							|  |  |  |  |  * g_signal_override_class_handler(). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.18 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_chain_from_overridden_handler (gpointer instance, | 
					
						
							|  |  |  |  |                                         ...) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GType chain_type = 0, restore_type = 0; | 
					
						
							|  |  |  |  |   Emission *emission = NULL; | 
					
						
							|  |  |  |  |   GClosure *closure = NULL; | 
					
						
							| 
									
										
										
										
											2022-01-19 18:55:21 +01:00
										 |  |  |  |   SignalNode *node = NULL; | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |   guint n_params = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   emission = emission_find_innermost (instance); | 
					
						
							|  |  |  |  |   if (emission) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       node = LOOKUP_SIGNAL_NODE (emission->ihint.signal_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       g_assert (node != NULL);	/* paranoid */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       /* we should probably do the same parameter checks as g_signal_emit() here.
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  |       if (emission->chain_type != G_TYPE_NONE) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  ClassClosure *cc = signal_find_class_closure (node, emission->chain_type); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  g_assert (cc != NULL);	/* closure currently in call stack */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  n_params = node->n_params; | 
					
						
							|  |  |  |  | 	  restore_type = cc->instance_type; | 
					
						
							|  |  |  |  | 	  cc = signal_find_class_closure (node, g_type_parent (cc->instance_type)); | 
					
						
							|  |  |  |  | 	  if (cc && cc->instance_type != restore_type) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      closure = cc->closure; | 
					
						
							|  |  |  |  | 	      chain_type = cc->instance_type; | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |       else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal id '%u' cannot be chained from current emission stage for instance '%p'", G_STRLOC, node->signal_id, instance); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: no signal is currently being emitted for instance '%p'", G_STRLOC, instance); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (closure) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-07-21 10:36:03 +00:00
										 |  |  |  |       GValue *instance_and_params; | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |       GType signal_return_type; | 
					
						
							|  |  |  |  |       GValue *param_values; | 
					
						
							|  |  |  |  |       va_list var_args; | 
					
						
							|  |  |  |  |       guint i; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       va_start (var_args, instance); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       signal_return_type = node->return_type; | 
					
						
							| 
									
										
										
										
											2021-11-25 13:48:04 +05:30
										 |  |  |  |       instance_and_params = g_newa0 (GValue, n_params + 1); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |       param_values = instance_and_params + 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (i = 0; i < node->n_params; i++) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           gchar *error; | 
					
						
							|  |  |  |  |           GType ptype = node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  |           gboolean static_scope = node->param_types[i] & G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2009-12-02 11:49:49 +01:00
										 |  |  |  |           G_VALUE_COLLECT_INIT (param_values + i, ptype, | 
					
						
							|  |  |  |  | 				var_args, | 
					
						
							|  |  |  |  | 				static_scope ? G_VALUE_NOCOPY_CONTENTS : 0, | 
					
						
							|  |  |  |  | 				&error); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |           if (error) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |               g_critical ("%s: %s", G_STRLOC, error); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |               g_free (error); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               /* we purposely leak the value here, it might not be
 | 
					
						
							| 
									
										
										
										
											2020-06-23 10:49:44 +01:00
										 |  |  |  |                * in a correct state if an error condition occurred | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |                */ | 
					
						
							|  |  |  |  |               while (i--) | 
					
						
							|  |  |  |  |                 g_value_unset (param_values + i); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               va_end (var_args); | 
					
						
							|  |  |  |  |               return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2014-06-19 11:28:48 +02:00
										 |  |  |  |       g_value_init_from_instance (instance_and_params, instance); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       emission->chain_type = chain_type; | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (signal_return_type == G_TYPE_NONE) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           g_closure_invoke (closure, | 
					
						
							|  |  |  |  |                             NULL, | 
					
						
							|  |  |  |  |                             n_params + 1, | 
					
						
							|  |  |  |  |                             instance_and_params, | 
					
						
							|  |  |  |  |                             &emission->ihint); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2011-09-30 17:19:50 +01:00
										 |  |  |  |           GValue return_value = G_VALUE_INIT; | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |           gchar *error = NULL; | 
					
						
							|  |  |  |  |           GType rtype = signal_return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  |           gboolean static_scope = signal_return_type & G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           g_value_init (&return_value, rtype); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           g_closure_invoke (closure, | 
					
						
							|  |  |  |  |                             &return_value, | 
					
						
							|  |  |  |  |                             n_params + 1, | 
					
						
							|  |  |  |  |                             instance_and_params, | 
					
						
							|  |  |  |  |                             &emission->ihint); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           G_VALUE_LCOPY (&return_value, | 
					
						
							|  |  |  |  |                          var_args, | 
					
						
							|  |  |  |  |                          static_scope ? G_VALUE_NOCOPY_CONTENTS : 0, | 
					
						
							|  |  |  |  |                          &error); | 
					
						
							|  |  |  |  |           if (!error) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |               g_value_unset (&return_value); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           else | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |               g_critical ("%s: %s", G_STRLOC, error); | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |               g_free (error); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               /* we purposely leak the value here, it might not be
 | 
					
						
							| 
									
										
										
										
											2020-06-23 10:49:44 +01:00
										 |  |  |  |                * in a correct state if an error condition occurred | 
					
						
							| 
									
										
										
										
											2008-07-04 11:10:17 +00:00
										 |  |  |  |                */ | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (i = 0; i < n_params; i++) | 
					
						
							|  |  |  |  |         g_value_unset (param_values + i); | 
					
						
							|  |  |  |  |       g_value_unset (instance_and_params); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       va_end (var_args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |       emission->chain_type = restore_type; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_get_invocation_hint: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance to query | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns the invocation hint of the innermost signal emission of instance. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * Returns: (transfer none) (nullable): the invocation hint of the innermost | 
					
						
							|  |  |  |  |  *     signal emission, or %NULL if not found. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-12-18 20:38:58 +00:00
										 |  |  |  | GSignalInvocationHint* | 
					
						
							|  |  |  |  | g_signal_get_invocation_hint (gpointer instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Emission *emission = NULL; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), NULL); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   emission = emission_find_innermost (instance); | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return emission ? &emission->ihint : NULL; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_connect_closure_by_id: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance to connect to. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the id of the signal. | 
					
						
							|  |  |  |  |  * @detail: the detail. | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @closure: (not nullable): the closure to connect. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @after: whether the handler should be called before or after the | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  default handler of the signal. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Connects a closure to a signal for a particular object. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-12-02 11:59:43 +00:00
										 |  |  |  |  * If @closure is a floating reference (see g_closure_sink()), this function | 
					
						
							|  |  |  |  |  * takes ownership of @closure. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-12-02 14:28:59 +00:00
										 |  |  |  |  * This function cannot fail. If the given signal name doesn’t exist, | 
					
						
							|  |  |  |  |  * a critical warning is emitted. No validation is performed on the | 
					
						
							|  |  |  |  |  * ‘detail’ string when specified in @detailed_signal, other than a | 
					
						
							|  |  |  |  |  * non-empty check. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Refer to the [signals documentation](signals.html) for more | 
					
						
							|  |  |  |  |  * details. | 
					
						
							| 
									
										
										
										
											2024-03-06 13:25:38 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: the handler ID (always greater than 0) | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | gulong | 
					
						
							| 
									
										
										
										
											2000-11-03 08:18:09 +00:00
										 |  |  |  | g_signal_connect_closure_by_id (gpointer  instance, | 
					
						
							|  |  |  |  | 				guint     signal_id, | 
					
						
							|  |  |  |  | 				GQuark    detail, | 
					
						
							|  |  |  |  | 				GClosure *closure, | 
					
						
							|  |  |  |  | 				gboolean  after) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   gulong handler_seq_no = 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_id > 0, 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (closure != NULL, 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   if (node) | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else if (!g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  | 	  Handler *handler = handler_new (signal_id, instance, after); | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (G_TYPE_IS_OBJECT (node->itype)) | 
					
						
							| 
									
										
										
										
											2022-05-15 07:52:10 -04:00
										 |  |  |  |             _g_object_set_has_signal_handler ((GObject *) instance, signal_id); | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-15 07:52:10 -04:00
										 |  |  |  |           handler_seq_no = handler->sequential_number; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler->detail = detail; | 
					
						
							|  |  |  |  | 	  handler->closure = g_closure_ref (closure); | 
					
						
							| 
									
										
										
										
											2001-02-16 07:22:59 +00:00
										 |  |  |  | 	  g_closure_sink (closure); | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | 	  add_invalid_closure_notify (handler, instance); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler_insert (signal_id, instance, handler); | 
					
						
							|  |  |  |  | 	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (closure)) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      g_closure_set_marshal (closure, node->c_marshaller); | 
					
						
							|  |  |  |  | 	      if (node->va_marshaller) | 
					
						
							|  |  |  |  | 		_g_closure_set_va_marshal (closure, node->va_marshaller); | 
					
						
							|  |  |  |  | 	    } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   return handler_seq_no; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_connect_closure: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance to connect to. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @detailed_signal: a string of the form "signal-name::detail". | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @closure: (not nullable): the closure to connect. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @after: whether the handler should be called before or after the | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  default handler of the signal. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Connects a closure to a signal for a particular object. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-12-02 11:59:43 +00:00
										 |  |  |  |  * If @closure is a floating reference (see g_closure_sink()), this function | 
					
						
							|  |  |  |  |  * takes ownership of @closure. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-12-02 14:28:59 +00:00
										 |  |  |  |  * This function cannot fail. If the given signal name doesn’t exist, | 
					
						
							|  |  |  |  |  * a critical warning is emitted. No validation is performed on the | 
					
						
							|  |  |  |  |  * ‘detail’ string when specified in @detailed_signal, other than a | 
					
						
							|  |  |  |  |  * non-empty check. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Refer to the [signals documentation](signals.html) for more | 
					
						
							|  |  |  |  |  * details. | 
					
						
							| 
									
										
										
										
											2024-03-06 13:25:38 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: the handler ID (always greater than 0) | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | gulong | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | g_signal_connect_closure (gpointer     instance, | 
					
						
							|  |  |  |  | 			  const gchar *detailed_signal, | 
					
						
							|  |  |  |  | 			  GClosure    *closure, | 
					
						
							|  |  |  |  | 			  gboolean     after) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  |   gulong handler_seq_no = 0; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   GQuark detail = 0; | 
					
						
							|  |  |  |  |   GType itype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (detailed_signal != NULL, 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (closure != NULL, 0); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   itype = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							|  |  |  |  |   signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE); | 
					
						
							|  |  |  |  |   if (signal_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal '%s' does not support details", G_STRLOC, detailed_signal); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else if (!g_type_is_a (itype, node->itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                     G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  | 	  Handler *handler = handler_new (signal_id, instance, after); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  |           if (G_TYPE_IS_OBJECT (node->itype)) | 
					
						
							| 
									
										
										
										
											2022-05-15 07:52:10 -04:00
										 |  |  |  |             _g_object_set_has_signal_handler ((GObject *) instance, signal_id); | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-15 07:52:10 -04:00
										 |  |  |  |           handler_seq_no = handler->sequential_number; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler->detail = detail; | 
					
						
							|  |  |  |  | 	  handler->closure = g_closure_ref (closure); | 
					
						
							| 
									
										
										
										
											2001-02-16 07:22:59 +00:00
										 |  |  |  | 	  g_closure_sink (closure); | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | 	  add_invalid_closure_notify (handler, instance); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler_insert (signal_id, instance, handler); | 
					
						
							|  |  |  |  | 	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (handler->closure)) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      g_closure_set_marshal (handler->closure, node->c_marshaller); | 
					
						
							|  |  |  |  | 	      if (node->va_marshaller) | 
					
						
							|  |  |  |  | 		_g_closure_set_va_marshal (handler->closure, node->va_marshaller); | 
					
						
							|  |  |  |  | 	    } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                 G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   return handler_seq_no; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | node_check_deprecated (const SignalNode *node) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   static const gchar * g_enable_diagnostic = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (G_UNLIKELY (!g_enable_diagnostic)) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       g_enable_diagnostic = g_getenv ("G_ENABLE_DIAGNOSTIC"); | 
					
						
							|  |  |  |  |       if (!g_enable_diagnostic) | 
					
						
							|  |  |  |  |         g_enable_diagnostic = "0"; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (g_enable_diagnostic[0] == '1') | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       if (node->flags & G_SIGNAL_DEPRECATED) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           g_warning ("The signal %s::%s is deprecated and shouldn't be used " | 
					
						
							|  |  |  |  |                      "anymore. It will be removed in a future version.", | 
					
						
							|  |  |  |  |                      type_debug_name (node->itype), node->name); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_connect_data: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance to connect to. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @detailed_signal: a string of the form "signal-name::detail". | 
					
						
							| 
									
										
										
										
											2020-12-11 23:49:30 +00:00
										 |  |  |  |  * @c_handler: (not nullable): the #GCallback to connect. | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @data: (nullable) (closure c_handler): data to pass to @c_handler calls. | 
					
						
							|  |  |  |  |  * @destroy_data: (nullable) (destroy data): a #GClosureNotify for @data. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @connect_flags: a combination of #GConnectFlags. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Connects a #GCallback function to a signal for a particular object. Similar | 
					
						
							|  |  |  |  |  * to g_signal_connect(), but allows to provide a #GClosureNotify for the data | 
					
						
							|  |  |  |  |  * which will be called when the signal handler is disconnected and no longer | 
					
						
							| 
									
										
										
										
											2014-02-06 08:04:52 -05:00
										 |  |  |  |  * used. Specify @connect_flags if you need `..._after()` or | 
					
						
							|  |  |  |  |  * `..._swapped()` variants of this function. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-12-02 14:28:59 +00:00
										 |  |  |  |  * This function cannot fail. If the given signal name doesn’t exist, | 
					
						
							|  |  |  |  |  * a critical warning is emitted. No validation is performed on the | 
					
						
							|  |  |  |  |  * ‘detail’ string when specified in @detailed_signal, other than a | 
					
						
							|  |  |  |  |  * non-empty check. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Refer to the [signals documentation](signals.html) for more | 
					
						
							|  |  |  |  |  * details. | 
					
						
							| 
									
										
										
										
											2024-03-06 13:25:38 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: the handler ID (always greater than 0) | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | gulong | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | g_signal_connect_data (gpointer       instance, | 
					
						
							|  |  |  |  | 		       const gchar   *detailed_signal, | 
					
						
							|  |  |  |  | 		       GCallback      c_handler, | 
					
						
							|  |  |  |  | 		       gpointer       data, | 
					
						
							|  |  |  |  | 		       GClosureNotify destroy_data, | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  | 		       GConnectFlags  connect_flags) | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  |   gulong handler_seq_no = 0; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   GQuark detail = 0; | 
					
						
							|  |  |  |  |   GType itype; | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |   gboolean swapped, after; | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (detailed_signal != NULL, 0); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (c_handler != NULL, 0); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-28 17:05:12 +00:00
										 |  |  |  |   swapped = (connect_flags & G_CONNECT_SWAPPED) != FALSE; | 
					
						
							|  |  |  |  |   after = (connect_flags & G_CONNECT_AFTER) != FALSE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   itype = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							|  |  |  |  |   signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE); | 
					
						
							|  |  |  |  |   if (signal_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-07 20:04:15 +01:00
										 |  |  |  |       node_check_deprecated (node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	g_critical ("%s: signal '%s' does not support details", G_STRLOC, detailed_signal); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else if (!g_type_is_a (itype, node->itype)) | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                     G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2015-07-15 17:01:03 +01:00
										 |  |  |  | 	  Handler *handler = handler_new (signal_id, instance, after); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  |           if (G_TYPE_IS_OBJECT (node->itype)) | 
					
						
							| 
									
										
										
										
											2022-05-15 07:52:10 -04:00
										 |  |  |  |             _g_object_set_has_signal_handler ((GObject *) instance, signal_id); | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 	  handler_seq_no = handler->sequential_number; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler->detail = detail; | 
					
						
							|  |  |  |  | 	  handler->closure = g_closure_ref ((swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data)); | 
					
						
							| 
									
										
										
										
											2001-02-16 07:22:59 +00:00
										 |  |  |  | 	  g_closure_sink (handler->closure); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  handler_insert (signal_id, instance, handler); | 
					
						
							|  |  |  |  | 	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (handler->closure)) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:34:05 +01:00
										 |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      g_closure_set_marshal (handler->closure, node->c_marshaller); | 
					
						
							|  |  |  |  | 	      if (node->va_marshaller) | 
					
						
							|  |  |  |  | 		_g_closure_set_va_marshal (handler->closure, node->va_marshaller); | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: signal '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                 G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   return handler_seq_no; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_block_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                gulong   handler_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handler_block: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to block the signal handler of. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @handler_id: Handler id of the handler to be blocked. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Blocks a handler of an instance so it will not be called during any | 
					
						
							|  |  |  |  |  * signal emissions unless it is unblocked again. Thus "blocking" a | 
					
						
							| 
									
										
										
										
											2020-06-12 14:02:30 +01:00
										 |  |  |  |  * signal handler means to temporarily deactivate it, a signal handler | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * has to be unblocked exactly the same amount of times it has been | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * blocked before to become active again. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * The @handler_id has to be a valid signal handler id, connected to a | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * signal of @instance. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_handler_block (gpointer instance, | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |                         gulong   handler_id) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (handler_id > 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |   signal_handler_block_unlocked (instance, handler_id); | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_block_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                gulong   handler_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler *handler; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  |   handler = handler_lookup (instance, handler_id, NULL, NULL); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   if (handler) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  | #ifndef G_DISABLE_CHECKS
 | 
					
						
							|  |  |  |  |       if (handler->block_count >= HANDLER_MAX_BLOCK_COUNT - 1) | 
					
						
							|  |  |  |  |         g_error (G_STRLOC ": handler block_count overflow, %s", REPORT_BUG); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  |       handler->block_count += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: instance '%p' has no handler with id '%lu'", G_STRLOC, instance, handler_id); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_unblock_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                  gulong   handler_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handler_unblock: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to unblock the signal handler of. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @handler_id: Handler id of the handler to be unblocked. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Undoes the effect of a previous g_signal_handler_block() call.  A | 
					
						
							|  |  |  |  |  * blocked handler is skipped during signal emissions and will not be | 
					
						
							|  |  |  |  |  * invoked, unblocking it (for exactly the amount of times it has been | 
					
						
							|  |  |  |  |  * blocked before) reverts its "blocked" state, so the handler will be | 
					
						
							|  |  |  |  |  * recognized by the signal system and is called upon future or | 
					
						
							|  |  |  |  |  * currently ongoing signal emissions (since the order in which | 
					
						
							|  |  |  |  |  * handlers are called during signal emissions is deterministic, | 
					
						
							|  |  |  |  |  * whether the unblocked handler in question is called as part of a | 
					
						
							|  |  |  |  |  * currently ongoing emission depends on how far that emission has | 
					
						
							|  |  |  |  |  * proceeded yet). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * The @handler_id has to be a valid id of a signal handler that is | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * connected to a signal of @instance and is currently blocked. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_handler_unblock (gpointer instance, | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |                           gulong   handler_id) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (handler_id > 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |   signal_handler_unblock_unlocked (instance, handler_id); | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_unblock_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                  gulong   handler_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler *handler; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  |   handler = handler_lookup (instance, handler_id, NULL, NULL); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   if (handler) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       if (handler->block_count) | 
					
						
							|  |  |  |  |         handler->block_count -= 1; | 
					
						
							|  |  |  |  |       else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |         g_critical (G_STRLOC ": handler '%lu' of instance '%p' is not blocked", handler_id, instance); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: instance '%p' has no handler with id '%lu'", G_STRLOC, instance, handler_id); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_disconnect_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                     gulong   handler_id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handler_disconnect: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to remove the signal handler from. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @handler_id: Handler id of the handler to be disconnected. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Disconnects a handler from an instance so it will not be called during | 
					
						
							|  |  |  |  |  * any future or currently ongoing emissions of the signal it has been | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * connected to. The @handler_id becomes invalid and may be reused. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * The @handler_id has to be a valid signal handler id, connected to a | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * signal of @instance. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_handler_disconnect (gpointer instance, | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |                              gulong   handler_id) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (handler_id > 0); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |   signal_handler_disconnect_unlocked (instance, handler_id); | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_handler_disconnect_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                                     gulong   handler_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler *handler; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |   handler = handler_lookup (instance, handler_id, 0, 0); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (handler) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |       g_hash_table_remove (g_handlers, handler); | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |       handler->sequential_number = 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       handler->block_count = 1; | 
					
						
							| 
									
										
										
										
											2013-01-16 22:55:27 -05:00
										 |  |  |  |       remove_invalid_closure_notify (handler, instance); | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |       handler_unref_R (handler->signal_id, instance, handler); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |     g_critical ("%s: instance '%p' has no handler with id '%lu'", G_STRLOC, instance, handler_id); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handler_is_connected: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance where a signal handler is sought. | 
					
						
							| 
									
										
										
										
											2016-11-10 16:12:41 +00:00
										 |  |  |  |  * @handler_id: the handler ID. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2016-11-10 16:12:41 +00:00
										 |  |  |  |  * Returns whether @handler_id is the ID of a handler connected to @instance. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: whether @handler_id identifies a handler connected to @instance. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-05-14 13:55:51 +00:00
										 |  |  |  | gboolean | 
					
						
							|  |  |  |  | g_signal_handler_is_connected (gpointer instance, | 
					
						
							|  |  |  |  | 			       gulong   handler_id) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler *handler; | 
					
						
							|  |  |  |  |   gboolean connected; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), FALSE); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  |   handler = handler_lookup (instance, handler_id, NULL, NULL); | 
					
						
							| 
									
										
										
										
											2001-05-14 13:55:51 +00:00
										 |  |  |  |   connected = handler != NULL; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2001-05-14 13:55:51 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   return connected; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-02 12:04:43 +02:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handlers_destroy: | 
					
						
							| 
									
										
										
										
											2014-05-31 09:02:27 -04:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance whose signal handlers are destroyed | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Destroy all signal handlers of a type instance. This function is | 
					
						
							|  |  |  |  |  * an implementation detail of the #GObject dispose implementation, | 
					
						
							|  |  |  |  |  * and should not be used outside of the type system. | 
					
						
							| 
									
										
										
										
											2013-09-02 12:04:43 +02:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | void | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | g_signal_handlers_destroy (gpointer instance) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   GBSearchArray *hlbsa; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); | 
					
						
							|  |  |  |  |   if (hlbsa) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       guint i; | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |       /* reentrancy caution, delete instance trace first */ | 
					
						
							|  |  |  |  |       g_hash_table_remove (g_handler_list_bsa_ht, instance); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       for (i = 0; i < hlbsa->n_nodes; i++) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |           HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |           Handler *handler = hlist->handlers; | 
					
						
							|  |  |  |  | 	   | 
					
						
							|  |  |  |  |           while (handler) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |               Handler *tmp = handler; | 
					
						
							|  |  |  |  | 	       | 
					
						
							|  |  |  |  |               handler = tmp->next; | 
					
						
							|  |  |  |  |               tmp->block_count = 1; | 
					
						
							|  |  |  |  |               /* cruel unlink, this works because _all_ handlers vanish */ | 
					
						
							|  |  |  |  |               tmp->next = NULL; | 
					
						
							|  |  |  |  |               tmp->prev = tmp; | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |               if (tmp->sequential_number) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2014-09-20 01:08:32 -04:00
										 |  |  |  |                   g_hash_table_remove (g_handlers, tmp); | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | 		  remove_invalid_closure_notify (tmp, instance); | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 		  tmp->sequential_number = 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		  handler_unref_R (0, NULL, tmp); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2003-08-19 02:15:40 +00:00
										 |  |  |  |       g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handler_find: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance owning the signal handler to be found. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @mask: Mask indicating which of @signal_id, @detail, @closure, @func | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  and/or @data the handler has to match. | 
					
						
							|  |  |  |  |  * @signal_id: Signal the handler has to be connected to. | 
					
						
							|  |  |  |  |  * @detail: Signal detail the handler has to be connected to. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @closure: (nullable): The closure the handler will invoke. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @func: The C closure callback of the handler (useless for non-C closures). | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @data: (nullable) (closure closure): The closure data of the handler's closure. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Finds the first signal handler that matches certain selection criteria. | 
					
						
							|  |  |  |  |  * The criteria mask is passed as an OR-ed combination of #GSignalMatchType | 
					
						
							|  |  |  |  |  * flags, and the criteria values are passed as arguments. | 
					
						
							|  |  |  |  |  * The match @mask has to be non-0 for successful matches. | 
					
						
							|  |  |  |  |  * If no handler was found, 0 is returned. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: A valid non-0 signal handler id for a successful match. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | gulong | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | g_signal_handler_find (gpointer         instance, | 
					
						
							|  |  |  |  |                        GSignalMatchType mask, | 
					
						
							|  |  |  |  |                        guint            signal_id, | 
					
						
							|  |  |  |  | 		       GQuark		detail, | 
					
						
							|  |  |  |  |                        GClosure        *closure, | 
					
						
							|  |  |  |  |                        gpointer         func, | 
					
						
							|  |  |  |  |                        gpointer         data) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   gulong handler_seq_no = 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   g_return_val_if_fail ((mask & (unsigned) ~G_SIGNAL_MATCH_MASK) == 0, 0); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   if (mask & G_SIGNAL_MATCH_MASK) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |       HandlerMatch *mlist; | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |       mlist = handlers_find (instance, mask, signal_id, detail, closure, func, data, TRUE); | 
					
						
							|  |  |  |  |       if (mlist) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 	  handler_seq_no = mlist->handler->sequential_number; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  | 	  handler_match_free1_R (mlist, instance); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   return handler_seq_no; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | typedef void (*CallbackHandlerFunc) (gpointer instance, gulong handler_seq_no); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | static guint | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | signal_handlers_foreach_matched_unlocked_R (gpointer             instance, | 
					
						
							|  |  |  |  |                                             GSignalMatchType     mask, | 
					
						
							|  |  |  |  |                                             guint                signal_id, | 
					
						
							|  |  |  |  |                                             GQuark               detail, | 
					
						
							|  |  |  |  |                                             GClosure            *closure, | 
					
						
							|  |  |  |  |                                             gpointer             func, | 
					
						
							|  |  |  |  |                                             gpointer             data, | 
					
						
							|  |  |  |  |                                             CallbackHandlerFunc  callback) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   HandlerMatch *mlist; | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   guint n_handlers = 0; | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   mlist = handlers_find (instance, mask, signal_id, detail, closure, func, data, FALSE); | 
					
						
							|  |  |  |  |   while (mlist) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |       n_handlers++; | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |       if (mlist->handler->sequential_number) | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |         callback (instance, mlist->handler->sequential_number); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |       mlist = handler_match_free1_R (mlist, instance); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   return n_handlers; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handlers_block_matched: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to block handlers from. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @mask: Mask indicating which of @signal_id, @detail, @closure, @func | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  and/or @data the handlers have to match. | 
					
						
							|  |  |  |  |  * @signal_id: Signal the handlers have to be connected to. | 
					
						
							|  |  |  |  |  * @detail: Signal detail the handlers have to be connected to. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @closure: (nullable): The closure the handlers will invoke. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @func: The C closure callback of the handlers (useless for non-C closures). | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @data: (nullable) (closure closure): The closure data of the handlers' closures. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Blocks all handlers on an instance that match a certain selection criteria. | 
					
						
							| 
									
										
										
										
											2023-04-14 13:55:20 +01:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * The criteria mask is passed as a combination of #GSignalMatchType flags, and | 
					
						
							|  |  |  |  |  * the criteria values are passed as arguments. A handler must match on all | 
					
						
							|  |  |  |  |  * flags set in @mask to be blocked (i.e. the match is conjunctive). | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Passing at least one of the %G_SIGNAL_MATCH_ID, %G_SIGNAL_MATCH_CLOSURE, | 
					
						
							|  |  |  |  |  * %G_SIGNAL_MATCH_FUNC | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * or %G_SIGNAL_MATCH_DATA match flags is required for successful matches. | 
					
						
							|  |  |  |  |  * If no handlers were found, 0 is returned, the number of blocked handlers | 
					
						
							|  |  |  |  |  * otherwise. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Support for %G_SIGNAL_MATCH_ID was added in GLib 2.78. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: The number of handlers that matched. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | guint | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | g_signal_handlers_block_matched (gpointer         instance, | 
					
						
							|  |  |  |  | 				 GSignalMatchType mask, | 
					
						
							|  |  |  |  | 				 guint            signal_id, | 
					
						
							|  |  |  |  | 				 GQuark           detail, | 
					
						
							|  |  |  |  | 				 GClosure        *closure, | 
					
						
							|  |  |  |  | 				 gpointer         func, | 
					
						
							|  |  |  |  | 				 gpointer         data) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   guint n_handlers = 0; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2003-03-06 22:48:16 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   g_return_val_if_fail ((mask & (unsigned) ~G_SIGNAL_MATCH_MASK) == 0, 0); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |   if (mask & (G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA)) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |       n_handlers = | 
					
						
							|  |  |  |  |         signal_handlers_foreach_matched_unlocked_R (instance, mask, signal_id, detail, | 
					
						
							|  |  |  |  |                                                     closure, func, data, | 
					
						
							|  |  |  |  |                                                     signal_handler_block_unlocked); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   return n_handlers; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handlers_unblock_matched: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to unblock handlers from. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @mask: Mask indicating which of @signal_id, @detail, @closure, @func | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  and/or @data the handlers have to match. | 
					
						
							|  |  |  |  |  * @signal_id: Signal the handlers have to be connected to. | 
					
						
							|  |  |  |  |  * @detail: Signal detail the handlers have to be connected to. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @closure: (nullable): The closure the handlers will invoke. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @func: The C closure callback of the handlers (useless for non-C closures). | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @data: (nullable) (closure closure): The closure data of the handlers' closures. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Unblocks all handlers on an instance that match a certain selection | 
					
						
							| 
									
										
										
										
											2023-04-14 13:55:20 +01:00
										 |  |  |  |  * criteria. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * The criteria mask is passed as a combination of #GSignalMatchType flags, and | 
					
						
							|  |  |  |  |  * the criteria values are passed as arguments. A handler must match on all | 
					
						
							|  |  |  |  |  * flags set in @mask to be unblocked (i.e. the match is conjunctive). | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Passing at least one of the %G_SIGNAL_MATCH_ID, %G_SIGNAL_MATCH_CLOSURE, | 
					
						
							|  |  |  |  |  * %G_SIGNAL_MATCH_FUNC | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * or %G_SIGNAL_MATCH_DATA match flags is required for successful matches. | 
					
						
							|  |  |  |  |  * If no handlers were found, 0 is returned, the number of unblocked handlers | 
					
						
							|  |  |  |  |  * otherwise. The match criteria should not apply to any handlers that are | 
					
						
							|  |  |  |  |  * not currently blocked. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Support for %G_SIGNAL_MATCH_ID was added in GLib 2.78. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: The number of handlers that matched. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_handlers_unblock_matched (gpointer         instance, | 
					
						
							|  |  |  |  | 				   GSignalMatchType mask, | 
					
						
							|  |  |  |  | 				   guint            signal_id, | 
					
						
							|  |  |  |  | 				   GQuark           detail, | 
					
						
							|  |  |  |  | 				   GClosure        *closure, | 
					
						
							|  |  |  |  | 				   gpointer         func, | 
					
						
							|  |  |  |  | 				   gpointer         data) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   guint n_handlers = 0; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2003-03-06 22:48:16 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   g_return_val_if_fail ((mask & (unsigned) ~G_SIGNAL_MATCH_MASK) == 0, 0); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |   if (mask & (G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA)) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |       n_handlers = | 
					
						
							|  |  |  |  |         signal_handlers_foreach_matched_unlocked_R (instance, mask, signal_id, detail, | 
					
						
							|  |  |  |  |                                                     closure, func, data, | 
					
						
							|  |  |  |  |                                                     signal_handler_unblock_unlocked); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   return n_handlers; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_handlers_disconnect_matched: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): The instance to remove handlers from. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * @mask: Mask indicating which of @signal_id, @detail, @closure, @func | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  *  and/or @data the handlers have to match. | 
					
						
							|  |  |  |  |  * @signal_id: Signal the handlers have to be connected to. | 
					
						
							|  |  |  |  |  * @detail: Signal detail the handlers have to be connected to. | 
					
						
							| 
									
										
										
										
											2016-10-28 18:29:02 -07:00
										 |  |  |  |  * @closure: (nullable): The closure the handlers will invoke. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @func: The C closure callback of the handlers (useless for non-C closures). | 
					
						
							| 
									
										
										
										
											2020-12-12 18:08:40 +00:00
										 |  |  |  |  * @data: (nullable) (closure closure): The closure data of the handlers' closures. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Disconnects all handlers on an instance that match a certain | 
					
						
							| 
									
										
										
										
											2023-04-14 13:55:20 +01:00
										 |  |  |  |  * selection criteria. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * The criteria mask is passed as a combination of #GSignalMatchType flags, and | 
					
						
							|  |  |  |  |  * the criteria values are passed as arguments. A handler must match on all | 
					
						
							|  |  |  |  |  * flags set in @mask to be disconnected (i.e. the match is conjunctive). | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Passing at least one of the %G_SIGNAL_MATCH_ID, %G_SIGNAL_MATCH_CLOSURE, | 
					
						
							|  |  |  |  |  * %G_SIGNAL_MATCH_FUNC or | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * %G_SIGNAL_MATCH_DATA match flags is required for successful | 
					
						
							|  |  |  |  |  * matches.  If no handlers were found, 0 is returned, the number of | 
					
						
							|  |  |  |  |  * disconnected handlers otherwise. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |  * Support for %G_SIGNAL_MATCH_ID was added in GLib 2.78. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: The number of handlers that matched. | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | guint | 
					
						
							|  |  |  |  | g_signal_handlers_disconnect_matched (gpointer         instance, | 
					
						
							|  |  |  |  | 				      GSignalMatchType mask, | 
					
						
							|  |  |  |  | 				      guint            signal_id, | 
					
						
							|  |  |  |  | 				      GQuark           detail, | 
					
						
							|  |  |  |  | 				      GClosure        *closure, | 
					
						
							|  |  |  |  | 				      gpointer         func, | 
					
						
							|  |  |  |  | 				      gpointer         data) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   guint n_handlers = 0; | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2003-03-06 22:48:16 +00:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0); | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   g_return_val_if_fail ((mask & (unsigned) ~G_SIGNAL_MATCH_MASK) == 0, 0); | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2023-04-14 08:45:57 +02:00
										 |  |  |  |   if (mask & (G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA)) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:05:23 +02:00
										 |  |  |  |       n_handlers = | 
					
						
							|  |  |  |  |         signal_handlers_foreach_matched_unlocked_R (instance, mask, signal_id, detail, | 
					
						
							|  |  |  |  |                                                     closure, func, data, | 
					
						
							|  |  |  |  |                                                     signal_handler_disconnect_unlocked); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |   return n_handlers; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_has_handler_pending: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the object whose signal handlers are sought. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the signal id. | 
					
						
							|  |  |  |  |  * @detail: the detail. | 
					
						
							|  |  |  |  |  * @may_be_blocked: whether blocked handlers should count as match. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns whether there are any handlers connected to @instance for the | 
					
						
							|  |  |  |  |  * given signal id and detail. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2014-11-28 16:20:40 -05:00
										 |  |  |  |  * If @detail is 0 then it will only match handlers that were connected | 
					
						
							|  |  |  |  |  * without detail.  If @detail is non-zero then it will match handlers | 
					
						
							|  |  |  |  |  * connected both without detail and with the given detail.  This is | 
					
						
							|  |  |  |  |  * consistent with how a signal emitted with @detail would be delivered | 
					
						
							|  |  |  |  |  * to those handlers. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  |  * Since 2.46 this also checks for a non-default class closure being | 
					
						
							|  |  |  |  |  * installed, as this is basically always what you want. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * One example of when you might use this is when the arguments to the | 
					
						
							|  |  |  |  |  * signal are difficult to compute. A class implementor may opt to not | 
					
						
							|  |  |  |  |  * emit the signal if no one is attached anyway, thus saving the cost | 
					
						
							|  |  |  |  |  * of building the arguments. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: %TRUE if a handler is connected to the signal, %FALSE | 
					
						
							|  |  |  |  |  *          otherwise. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | gboolean | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  | g_signal_has_handler_pending (gpointer instance, | 
					
						
							|  |  |  |  | 			      guint    signal_id, | 
					
						
							|  |  |  |  | 			      GQuark   detail, | 
					
						
							|  |  |  |  | 			      gboolean may_be_blocked) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   HandlerMatch *mlist; | 
					
						
							|  |  |  |  |   gboolean has_pending; | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), FALSE); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_id > 0, FALSE); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (detail) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       if (!(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	  g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	  SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 	  return FALSE; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   mlist = handlers_find (instance, | 
					
						
							|  |  |  |  | 			 (G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | (may_be_blocked ? 0 : G_SIGNAL_MATCH_UNBLOCKED)), | 
					
						
							|  |  |  |  | 			 signal_id, detail, NULL, NULL, NULL, TRUE); | 
					
						
							|  |  |  |  |   if (mlist) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       has_pending = TRUE; | 
					
						
							|  |  |  |  |       handler_match_free1_R (mlist, instance); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       ClassClosure *class_closure = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); | 
					
						
							|  |  |  |  |       if (class_closure != NULL && class_closure->instance_type != 0) | 
					
						
							|  |  |  |  |         has_pending = TRUE; | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  |         has_pending = FALSE; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2015-09-14 13:15:51 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-05 05:07:26 +00:00
										 |  |  |  |   return has_pending; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:52:40 +02:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | signal_emitv_unlocked (const GValue *instance_and_params, | 
					
						
							|  |  |  |  |                        guint         signal_id, | 
					
						
							|  |  |  |  |                        GQuark        detail, | 
					
						
							|  |  |  |  |                        GValue       *return_value); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_emitv: | 
					
						
							| 
									
										
										
										
											2011-08-21 17:15:52 +02:00
										 |  |  |  |  * @instance_and_params: (array): argument list for the signal emission. | 
					
						
							|  |  |  |  |  *  The first element in the array is a #GValue for the instance the signal | 
					
						
							|  |  |  |  |  *  is being emitted on. The rest are any arguments to be passed to the signal. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the signal id | 
					
						
							|  |  |  |  |  * @detail: the detail | 
					
						
							| 
									
										
										
										
											2014-06-30 15:57:28 +01:00
										 |  |  |  |  * @return_value: (inout) (optional): Location to | 
					
						
							|  |  |  |  |  * store the return value of the signal emission. This must be provided if the | 
					
						
							|  |  |  |  |  * specified signal returns a value, but may be ignored otherwise. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-01-18 08:53:20 +00:00
										 |  |  |  |  * Emits a signal. Signal emission is done synchronously. | 
					
						
							|  |  |  |  |  * The method will only return control after all handlers are called or signal emission was stopped. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Note that g_signal_emitv() doesn't change @return_value if no handlers are | 
					
						
							|  |  |  |  |  * connected, in contrast to g_signal_emit() and g_signal_emit_valist(). | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_emitv (const GValue *instance_and_params, | 
					
						
							|  |  |  |  | 		guint         signal_id, | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 		GQuark	      detail, | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		GValue       *return_value) | 
					
						
							| 
									
										
										
										
											2022-07-15 16:52:40 +02:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   signal_emitv_unlocked (instance_and_params, signal_id, detail, return_value); | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | signal_emitv_unlocked (const GValue *instance_and_params, | 
					
						
							|  |  |  |  |                        guint         signal_id, | 
					
						
							|  |  |  |  |                        GQuark        detail, | 
					
						
							|  |  |  |  |                        GValue       *return_value) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   gpointer instance; | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2001-07-11 20:08:50 +00:00
										 |  |  |  | #ifdef G_ENABLE_DEBUG
 | 
					
						
							| 
									
										
										
										
											2005-09-08 06:35:44 +00:00
										 |  |  |  |   const GValue *param_values; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   guint i; | 
					
						
							| 
									
										
										
										
											2001-07-11 20:08:50 +00:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |   g_return_if_fail (instance_and_params != NULL); | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |   instance = g_value_peek_pointer (instance_and_params); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (signal_id > 0); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-08 06:35:44 +00:00
										 |  |  |  | #ifdef G_ENABLE_DEBUG
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   param_values = instance_and_params + 1; | 
					
						
							| 
									
										
										
										
											2005-09-08 06:35:44 +00:00
										 |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype)) | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); | 
					
						
							| 
									
										
										
										
											2000-11-01 03:03:04 +00:00
										 |  |  |  |       return; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2000-12-29 02:16:51 +00:00
										 |  |  |  | #ifdef G_ENABLE_DEBUG
 | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       return; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   for (i = 0; i < node->n_params; i++) | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |     if (!G_TYPE_CHECK_VALUE_TYPE (param_values + i, node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       { | 
					
						
							| 
									
										
										
										
											2013-05-20 17:54:48 -03:00
										 |  |  |  | 	g_critical ("%s: value for '%s' parameter %u for signal \"%s\" is of type '%s'", | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 		    G_STRLOC, | 
					
						
							| 
									
										
										
										
											2002-05-20 19:58:16 +00:00
										 |  |  |  | 		    type_debug_name (node->param_types[i]), | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		    i, | 
					
						
							|  |  |  |  | 		    node->name, | 
					
						
							|  |  |  |  | 		    G_VALUE_TYPE_NAME (param_values + i)); | 
					
						
							|  |  |  |  | 	return; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |   if (node->return_type != G_TYPE_NONE) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       if (!return_value) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2013-05-20 17:54:48 -03:00
										 |  |  |  | 	  g_critical ("%s: return value '%s' for signal \"%s\" is (NULL)", | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 		      G_STRLOC, | 
					
						
							| 
									
										
										
										
											2002-05-20 19:58:16 +00:00
										 |  |  |  | 		      type_debug_name (node->return_type), | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		      node->name); | 
					
						
							|  |  |  |  | 	  return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
											  
											
												changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.
	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.
	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.
	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.
	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.
	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.
	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.
	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.
	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.
	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.
	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().
	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
	* *.[hc]: many fixes and cleanups.
	* many warning improvements.
Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.
	* gparam.c: fixed G_PARAM_USER_MASK.
	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.
	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.
	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.
	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.
	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>
        * glib-object.h: add gvaluearray.h.
        * gstring.[hc]: fixup naming of g_string_sprint*.
        * gtypes.h: fixed GCompareDataFunc naming.
Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>
        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.
        * gobject/gobject-sections.txt: updates.
        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
											
										 
											2001-03-07 14:46:45 +00:00
										 |  |  |  |       else if (!node->accumulator && !G_TYPE_CHECK_VALUE_TYPE (return_value, node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE)) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2013-05-20 17:54:48 -03:00
										 |  |  |  | 	  g_critical ("%s: return value '%s' for signal \"%s\" is of type '%s'", | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 		      G_STRLOC, | 
					
						
							| 
									
										
										
										
											2002-05-20 19:58:16 +00:00
										 |  |  |  | 		      type_debug_name (node->return_type), | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 		      node->name, | 
					
						
							|  |  |  |  | 		      G_VALUE_TYPE_NAME (return_value)); | 
					
						
							|  |  |  |  | 	  return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     return_value = NULL; | 
					
						
							| 
									
										
										
										
											2000-12-29 02:16:51 +00:00
										 |  |  |  | #endif	/* G_ENABLE_DEBUG */
 | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  |   /* optimize NOP emissions */ | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   if (!node->single_va_closure_is_valid) | 
					
						
							|  |  |  |  |     node_update_single_va_closure (node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (node->single_va_closure != NULL && | 
					
						
							|  |  |  |  |       (node->single_va_closure == SINGLE_VA_CLOSURE_EMPTY_MAGIC || | 
					
						
							| 
									
										
										
										
											2013-12-02 22:26:48 -05:00
										 |  |  |  |        _g_closure_is_void (node->single_va_closure, instance))) | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  |       HandlerList* hlist; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       /* single_va_closure is only true for GObjects, so fast path if no handler ever connected to the signal */ | 
					
						
							|  |  |  |  |       if (_g_object_has_signal_handler ((GObject *)instance)) | 
					
						
							|  |  |  |  |         hlist = handler_list_lookup (node->signal_id, instance); | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  |         hlist = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |       if (hlist == NULL || hlist->handlers == NULL) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  /* nothing to do to emit this signal */ | 
					
						
							|  |  |  |  | 	  /* g_printerr ("omitting emission of \"%s\"\n", node->name); */ | 
					
						
							|  |  |  |  | 	  return; | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |   /* Pass a stable node pointer, whose address can't change even if the
 | 
					
						
							|  |  |  |  |    * g_signal_nodes array gets reallocated. */ | 
					
						
							|  |  |  |  |   SignalNode node_copy = *node; | 
					
						
							|  |  |  |  |   signal_emit_unlocked_R (&node_copy, detail, instance, return_value, instance_and_params); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | static inline gboolean | 
					
						
							|  |  |  |  | accumulate (GSignalInvocationHint *ihint, | 
					
						
							|  |  |  |  | 	    GValue                *return_accu, | 
					
						
							|  |  |  |  | 	    GValue	          *handler_return, | 
					
						
							|  |  |  |  | 	    SignalAccumulator     *accumulator) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   gboolean continue_emission; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (!accumulator) | 
					
						
							|  |  |  |  |     return TRUE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   continue_emission = accumulator->func (ihint, return_accu, handler_return, accumulator->data); | 
					
						
							|  |  |  |  |   g_value_reset (handler_return); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   ihint->run_type &= (unsigned) ~G_SIGNAL_ACCUMULATOR_FIRST_RUN; | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   return continue_emission; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  | static gboolean | 
					
						
							|  |  |  |  | signal_emit_valist_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                              guint    signal_id, | 
					
						
							|  |  |  |  |                              GQuark   detail, | 
					
						
							|  |  |  |  |                              va_list  var_args); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * g_signal_emit_valist: (skip) | 
					
						
							| 
									
										
										
										
											2013-12-06 12:23:09 +00:00
										 |  |  |  |  * @instance: (type GObject.TypeInstance): the instance the signal is being | 
					
						
							|  |  |  |  |  *    emitted on. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the signal id | 
					
						
							|  |  |  |  |  * @detail: the detail | 
					
						
							|  |  |  |  |  * @var_args: a list of parameters to be passed to the signal, followed by a | 
					
						
							|  |  |  |  |  *  location for the return value. If the return type of the signal | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  *  is %G_TYPE_NONE, the return value location can be omitted. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-01-18 08:53:20 +00:00
										 |  |  |  |  * Emits a signal. Signal emission is done synchronously. | 
					
						
							|  |  |  |  |  * The method will only return control after all handlers are called or signal emission was stopped. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Note that g_signal_emit_valist() resets the return value to the default | 
					
						
							|  |  |  |  |  * if no handlers are connected, in contrast to g_signal_emitv(). | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_emit_valist (gpointer instance, | 
					
						
							|  |  |  |  | 		      guint    signal_id, | 
					
						
							|  |  |  |  | 		      GQuark   detail, | 
					
						
							|  |  |  |  | 		      va_list  var_args) | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |   if (signal_emit_valist_unlocked (instance, signal_id, detail, var_args)) | 
					
						
							|  |  |  |  |     SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*<private>
 | 
					
						
							|  |  |  |  |  * signal_emit_valist_unlocked: | 
					
						
							|  |  |  |  |  * @instance: The instance to emit from | 
					
						
							|  |  |  |  |  * @signal_id: Signal id to emit | 
					
						
							|  |  |  |  |  * @detail: Signal detail | 
					
						
							|  |  |  |  |  * @var_args: Call arguments | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: %TRUE if the signal mutex has been left locked | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | static gboolean | 
					
						
							|  |  |  |  | signal_emit_valist_unlocked (gpointer instance, | 
					
						
							|  |  |  |  |                              guint    signal_id, | 
					
						
							|  |  |  |  |                              GQuark   detail, | 
					
						
							|  |  |  |  |                              va_list  var_args) | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-07-21 10:36:03 +00:00
										 |  |  |  |   GValue *instance_and_params; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   GValue *param_values; | 
					
						
							|  |  |  |  |   SignalNode *node; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   guint i; | 
					
						
							| 
									
										
										
										
											2011-03-02 15:48:40 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |   g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), TRUE); | 
					
						
							|  |  |  |  |   g_return_val_if_fail (signal_id > 0, TRUE); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   node = LOOKUP_SIGNAL_NODE (signal_id); | 
					
						
							|  |  |  |  |   if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype)) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |       return TRUE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | #ifndef G_DISABLE_CHECKS
 | 
					
						
							|  |  |  |  |   if (detail && !(node->flags & G_SIGNAL_DETAILED)) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  |       g_critical ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |       return TRUE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | #endif  /* !G_DISABLE_CHECKS */
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |   if (!node->single_va_closure_is_valid) | 
					
						
							|  |  |  |  |     node_update_single_va_closure (node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   /* There's no need to deep copy this, because a SignalNode instance won't
 | 
					
						
							|  |  |  |  |    * ever be destroyed, given that _g_signals_destroy() is not called in any | 
					
						
							|  |  |  |  |    * real program, however the SignalNode pointer could change, so just store | 
					
						
							|  |  |  |  |    * the struct contents references, so that we won't try to deference a | 
					
						
							|  |  |  |  |    * potentially invalid (or changed) pointer; | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   SignalNode node_copy = *node; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-02 22:26:48 -05:00
										 |  |  |  |   if (node->single_va_closure != NULL) | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  |       HandlerList* hlist; | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  |       Handler *fastpath_handler = NULL; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |       Handler *l; | 
					
						
							|  |  |  |  |       GClosure *closure = NULL; | 
					
						
							|  |  |  |  |       gboolean fastpath = TRUE; | 
					
						
							|  |  |  |  |       GSignalFlags run_type = G_SIGNAL_RUN_FIRST; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (node->single_va_closure != SINGLE_VA_CLOSURE_EMPTY_MAGIC && | 
					
						
							|  |  |  |  | 	  !_g_closure_is_void (node->single_va_closure, instance)) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  if (_g_closure_supports_invoke_va (node->single_va_closure)) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      closure = node->single_va_closure; | 
					
						
							|  |  |  |  | 	      if (node->single_va_closure_is_after) | 
					
						
							|  |  |  |  | 		run_type = G_SIGNAL_RUN_LAST; | 
					
						
							|  |  |  |  | 	      else | 
					
						
							|  |  |  |  | 		run_type = G_SIGNAL_RUN_FIRST; | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	  else | 
					
						
							|  |  |  |  | 	    fastpath = FALSE; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-02 15:48:32 +02:00
										 |  |  |  |       /* single_va_closure is only true for GObjects, so fast path if no handler ever connected to the signal */ | 
					
						
							|  |  |  |  |       if (_g_object_has_signal_handler ((GObject *)instance)) | 
					
						
							|  |  |  |  |         hlist = handler_list_lookup (node->signal_id, instance); | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  |         hlist = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |       for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  if (!l->block_count && | 
					
						
							|  |  |  |  | 	      (!l->detail || l->detail == detail)) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      if (closure != NULL || !_g_closure_supports_invoke_va (l->closure)) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 		  fastpath = FALSE; | 
					
						
							|  |  |  |  | 		  break; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	      else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  |                   fastpath_handler = l; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 		  closure = l->closure; | 
					
						
							|  |  |  |  | 		  if (l->after) | 
					
						
							|  |  |  |  | 		    run_type = G_SIGNAL_RUN_LAST; | 
					
						
							|  |  |  |  | 		  else | 
					
						
							|  |  |  |  | 		    run_type = G_SIGNAL_RUN_FIRST; | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |       if (fastpath && closure == NULL && node_copy.return_type == G_TYPE_NONE) | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |         return TRUE; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-03 21:36:10 +01:00
										 |  |  |  |       /* Don't allow no-recurse emission as we might have to restart, which means
 | 
					
						
							|  |  |  |  | 	 we will run multiple handlers and thus must ref all arguments */ | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |       if (closure != NULL && (node_copy.flags & (G_SIGNAL_NO_RECURSE)) != 0) | 
					
						
							| 
									
										
										
										
											2012-03-03 21:36:10 +01:00
										 |  |  |  | 	fastpath = FALSE; | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  |       if (fastpath) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  Emission emission; | 
					
						
							|  |  |  |  | 	  GValue *return_accu, accu = G_VALUE_INIT; | 
					
						
							| 
									
										
										
										
											2012-03-09 11:32:45 +01:00
										 |  |  |  | 	  GType instance_type = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	  GValue emission_return = G_VALUE_INIT; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |           GType rtype = node_copy.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  | 	  gboolean static_scope = node_copy.return_type & G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  if (rtype == G_TYPE_NONE) | 
					
						
							|  |  |  |  | 	    return_accu = NULL; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  | 	  else if (node_copy.accumulator) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	    return_accu = &accu; | 
					
						
							|  |  |  |  | 	  else | 
					
						
							|  |  |  |  | 	    return_accu = &emission_return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  emission.instance = instance; | 
					
						
							| 
									
										
										
										
											2012-03-06 11:35:17 +01:00
										 |  |  |  | 	  emission.ihint.signal_id = signal_id; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	  emission.ihint.detail = detail; | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  | 	  emission.ihint.run_type = run_type | G_SIGNAL_ACCUMULATOR_FIRST_RUN; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	  emission.state = EMISSION_RUN; | 
					
						
							| 
									
										
										
										
											2012-03-09 11:32:45 +01:00
										 |  |  |  | 	  emission.chain_type = instance_type; | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | 	  emission_push (&emission); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  |           if (fastpath_handler) | 
					
						
							|  |  |  |  |             handler_ref (fastpath_handler); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  | 	  if (closure != NULL) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  |               TRACE (GOBJECT_SIGNAL_EMIT (signal_id, detail, instance, (uintmax_t) instance_type)); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  |               SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  |               if (rtype != G_TYPE_NONE) | 
					
						
							|  |  |  |  |                 g_value_init (&emission_return, rtype); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |               if (node_copy.accumulator) | 
					
						
							|  |  |  |  |                 g_value_init (&accu, rtype); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-21 12:16:02 +01:00
										 |  |  |  |               /*
 | 
					
						
							|  |  |  |  |                * Coverity doesn’t understand the paired ref/unref here and seems | 
					
						
							|  |  |  |  |                * to ignore the ref, thus reports every call to g_signal_emit() | 
					
						
							|  |  |  |  |                * as causing a double-free. That’s incorrect, but I can’t get a | 
					
						
							|  |  |  |  |                * model file to work for avoiding the false positives, so instead | 
					
						
							|  |  |  |  |                * comment out the ref/unref when doing static analysis. | 
					
						
							|  |  |  |  |                */ | 
					
						
							|  |  |  |  | #ifndef __COVERITY__
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	      g_object_ref (instance); | 
					
						
							| 
									
										
										
										
											2022-06-21 12:16:02 +01:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	      _g_closure_invoke_va (closure, | 
					
						
							|  |  |  |  | 				    return_accu, | 
					
						
							|  |  |  |  | 				    instance, | 
					
						
							|  |  |  |  | 				    var_args, | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |                                     node_copy.n_params, | 
					
						
							|  |  |  |  |                                     node_copy.param_types); | 
					
						
							|  |  |  |  | 	      accumulate (&emission.ihint, &emission_return, &accu, node_copy.accumulator); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |               if (node_copy.accumulator) | 
					
						
							|  |  |  |  |                 g_value_unset (&accu); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  emission.chain_type = G_TYPE_NONE; | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  | 	  emission_pop (&emission); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  |           if (fastpath_handler) | 
					
						
							|  |  |  |  |             handler_unref_R (signal_id, instance, fastpath_handler); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |           SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  if (rtype != G_TYPE_NONE) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      gchar *error = NULL; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |               for (i = 0; i < node_copy.n_params; i++) | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |                   GType ptype = node_copy.param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 		  G_VALUE_COLLECT_SKIP (ptype, var_args); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |               if (closure == NULL) | 
					
						
							|  |  |  |  |                 g_value_init (&emission_return, rtype); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	      G_VALUE_LCOPY (&emission_return, | 
					
						
							|  |  |  |  | 			     var_args, | 
					
						
							|  |  |  |  | 			     static_scope ? G_VALUE_NOCOPY_CONTENTS : 0, | 
					
						
							|  |  |  |  | 			     &error); | 
					
						
							|  |  |  |  | 	      if (!error) | 
					
						
							|  |  |  |  | 		g_value_unset (&emission_return); | 
					
						
							|  |  |  |  | 	      else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 		  g_critical ("%s: %s", G_STRLOC, error); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 		  g_free (error); | 
					
						
							|  |  |  |  | 		  /* we purposely leak the value here, it might not be
 | 
					
						
							| 
									
										
										
										
											2020-06-23 10:49:44 +01:00
										 |  |  |  | 		   * in a correct state if an error condition occurred | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 		   */ | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	    } | 
					
						
							| 
									
										
										
										
											2025-08-08 22:53:15 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |           TRACE (GOBJECT_SIGNAL_EMIT_END (signal_id, detail, instance, (uintmax_t) instance_type)); | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-21 12:16:02 +01:00
										 |  |  |  |           /* See comment above paired ref above */ | 
					
						
							|  |  |  |  | #ifndef __COVERITY__
 | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  |           if (closure != NULL) | 
					
						
							|  |  |  |  |             g_object_unref (instance); | 
					
						
							| 
									
										
										
										
											2022-06-21 12:16:02 +01:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2013-02-21 16:10:36 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  | 	  return FALSE; | 
					
						
							| 
									
										
										
										
											2012-02-22 19:36:05 +01:00
										 |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 17:48:04 +00:00
										 |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2003-08-18 23:32:17 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   instance_and_params = g_newa0 (GValue, node_copy.n_params + 1); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   param_values = instance_and_params + 1; | 
					
						
							| 
									
										
										
										
											2008-07-21 10:36:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   for (i = 0; i < node_copy.n_params; i++) | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       gchar *error; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |       GType ptype = node_copy.param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  |       gboolean static_scope = node_copy.param_types[i] & G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							| 
									
										
										
										
											2008-07-21 10:36:03 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 11:49:49 +01:00
										 |  |  |  |       G_VALUE_COLLECT_INIT (param_values + i, ptype, | 
					
						
							|  |  |  |  | 			    var_args, | 
					
						
							|  |  |  |  | 			    static_scope ? G_VALUE_NOCOPY_CONTENTS : 0, | 
					
						
							|  |  |  |  | 			    &error); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       if (error) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	  g_critical ("%s: %s", G_STRLOC, error); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  g_free (error); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	  /* we purposely leak the value here, it might not be
 | 
					
						
							| 
									
										
										
										
											2020-06-23 10:49:44 +01:00
										 |  |  |  | 	   * in a correct state if an error condition occurred | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	   */ | 
					
						
							|  |  |  |  | 	  while (i--) | 
					
						
							|  |  |  |  | 	    g_value_unset (param_values + i); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |           return FALSE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-03-02 15:48:40 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-19 11:28:48 +02:00
										 |  |  |  |   g_value_init_from_instance (instance_and_params, instance); | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   if (node_copy.return_type == G_TYPE_NONE) | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       SIGNAL_LOCK (); | 
					
						
							|  |  |  |  |       signal_emit_unlocked_R (&node_copy, detail, instance, NULL, instance_and_params); | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   else | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-09-30 17:19:50 +01:00
										 |  |  |  |       GValue return_value = G_VALUE_INIT; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       gchar *error = NULL; | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |       GType rtype = node_copy.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							|  |  |  |  |       gboolean static_scope = node_copy.return_type & G_SIGNAL_TYPE_STATIC_SCOPE; | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |        | 
					
						
							|  |  |  |  |       g_value_init (&return_value, rtype); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |       signal_emit_unlocked_R (&node_copy, detail, instance, &return_value, instance_and_params); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-01 04:04:46 +00:00
										 |  |  |  |       G_VALUE_LCOPY (&return_value, | 
					
						
							|  |  |  |  | 		     var_args, | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | 		     static_scope ? G_VALUE_NOCOPY_CONTENTS : 0, | 
					
						
							| 
									
										
										
										
											2001-04-01 04:04:46 +00:00
										 |  |  |  | 		     &error); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       if (!error) | 
					
						
							|  |  |  |  | 	g_value_unset (&return_value); | 
					
						
							|  |  |  |  |       else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2022-08-03 18:35:33 -05:00
										 |  |  |  | 	  g_critical ("%s: %s", G_STRLOC, error); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  g_free (error); | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | 	   | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	  /* we purposely leak the value here, it might not be
 | 
					
						
							| 
									
										
										
										
											2020-06-23 10:49:44 +01:00
										 |  |  |  | 	   * in a correct state if an error condition occurred | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	   */ | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-07-15 18:43:02 +02:00
										 |  |  |  |   for (i = 0; i < node_copy.n_params; i++) | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     g_value_unset (param_values + i); | 
					
						
							|  |  |  |  |   g_value_unset (instance_and_params); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   return FALSE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_emit: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance the signal is being emitted on. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @signal_id: the signal id | 
					
						
							|  |  |  |  |  * @detail: the detail | 
					
						
							|  |  |  |  |  * @...: parameters to be passed to the signal, followed by a | 
					
						
							|  |  |  |  |  *  location for the return value. If the return type of the signal | 
					
						
							| 
									
										
										
										
											2022-03-04 16:21:55 +00:00
										 |  |  |  |  *  is %G_TYPE_NONE, the return value location can be omitted. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-01-18 08:53:20 +00:00
										 |  |  |  |  * Emits a signal. Signal emission is done synchronously. | 
					
						
							|  |  |  |  |  * The method will only return control after all handlers are called or signal emission was stopped. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Note that g_signal_emit() resets the return value to the default | 
					
						
							|  |  |  |  |  * if no handlers are connected, in contrast to g_signal_emitv(). | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_emit (gpointer instance, | 
					
						
							|  |  |  |  | 	       guint    signal_id, | 
					
						
							|  |  |  |  | 	       GQuark   detail, | 
					
						
							|  |  |  |  | 	       ...) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   va_list var_args; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   va_start (var_args, detail); | 
					
						
							|  |  |  |  |   g_signal_emit_valist (instance, signal_id, detail, var_args); | 
					
						
							|  |  |  |  |   va_end (var_args); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_emit_by_name: | 
					
						
							| 
									
										
										
										
											2013-08-27 14:11:47 +02:00
										 |  |  |  |  * @instance: (type GObject.Object): the instance the signal is being emitted on. | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * @detailed_signal: a string of the form "signal-name::detail". | 
					
						
							|  |  |  |  |  * @...: parameters to be passed to the signal, followed by a | 
					
						
							|  |  |  |  |  *  location for the return value. If the return type of the signal | 
					
						
							| 
									
										
										
										
											2021-09-06 11:23:14 +00:00
										 |  |  |  |  *  is %G_TYPE_NONE, the return value location can be omitted. The | 
					
						
							|  |  |  |  |  *  number of parameters to pass to this function is defined when creating the signal. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-01-18 08:53:20 +00:00
										 |  |  |  |  * Emits a signal. Signal emission is done synchronously. | 
					
						
							|  |  |  |  |  * The method will only return control after all handlers are called or signal emission was stopped. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Note that g_signal_emit_by_name() resets the return value to the default | 
					
						
							|  |  |  |  |  * if no handlers are connected, in contrast to g_signal_emitv(). | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | void | 
					
						
							|  |  |  |  | g_signal_emit_by_name (gpointer     instance, | 
					
						
							|  |  |  |  | 		       const gchar *detailed_signal, | 
					
						
							|  |  |  |  | 		       ...) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   GQuark detail = 0; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							| 
									
										
										
										
											2013-02-21 11:25:26 +00:00
										 |  |  |  |   GType itype; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); | 
					
						
							|  |  |  |  |   g_return_if_fail (detailed_signal != NULL); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 11:25:26 +00:00
										 |  |  |  |   itype = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |   SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2013-02-21 11:25:26 +00:00
										 |  |  |  |   signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (signal_id) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       va_list var_args; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       va_start (var_args, detailed_signal); | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |       if (signal_emit_valist_unlocked (instance, signal_id, detail, var_args)) | 
					
						
							|  |  |  |  |         SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       va_end (var_args); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							| 
									
										
										
										
											2022-07-15 16:46:38 +02:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       g_critical ("%s: signal name '%s' is invalid for instance '%p' of type '%s'", | 
					
						
							|  |  |  |  |                   G_STRLOC, detailed_signal, instance, g_type_name (itype)); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | G_ALWAYS_INLINE static inline GValue * | 
					
						
							|  |  |  |  | maybe_init_accumulator_unlocked (SignalNode *node, | 
					
						
							|  |  |  |  |                                  GValue     *emission_return, | 
					
						
							|  |  |  |  |                                  GValue     *accumulator_value) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   if (node->accumulator) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       if (accumulator_value->g_type) | 
					
						
							|  |  |  |  |         return accumulator_value; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       g_value_init (accumulator_value, | 
					
						
							|  |  |  |  |                     node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE); | 
					
						
							|  |  |  |  |       return accumulator_value; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return emission_return; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | static gboolean | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  | signal_emit_unlocked_R (SignalNode   *node, | 
					
						
							|  |  |  |  | 			GQuark	      detail, | 
					
						
							|  |  |  |  | 			gpointer      instance, | 
					
						
							|  |  |  |  | 			GValue	     *emission_return, | 
					
						
							|  |  |  |  | 			const GValue *instance_and_params) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | { | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |   SignalAccumulator *accumulator; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   Emission emission; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   GClosure *class_closure; | 
					
						
							|  |  |  |  |   HandlerList *hlist; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   Handler *handler_list = NULL; | 
					
						
							| 
									
										
										
										
											2011-09-30 17:19:50 +01:00
										 |  |  |  |   GValue *return_accu, accu = G_VALUE_INIT; | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |   guint signal_id; | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   gulong max_sequential_handler_number; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   gboolean return_value_altered = FALSE; | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |   guint n_params; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-01 21:39:52 +01:00
										 |  |  |  |   TRACE(GOBJECT_SIGNAL_EMIT(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance))); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |   /* We expect this function to be called with a stable SignalNode pointer
 | 
					
						
							|  |  |  |  |    * that cannot change location, so accessing its stable members should | 
					
						
							|  |  |  |  |    * always work even after a lock/unlock. | 
					
						
							|  |  |  |  |    */ | 
					
						
							| 
									
										
										
										
											2001-05-27 18:28:58 +00:00
										 |  |  |  |   signal_id = node->signal_id; | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |   n_params = node->n_params + 1; | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (node->flags & G_SIGNAL_NO_RECURSE) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-01-19 18:55:21 +01:00
										 |  |  |  |       Emission *emission_node = emission_find (signal_id, detail, instance); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (emission_node) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           emission_node->state = EMISSION_RESTART; | 
					
						
							|  |  |  |  |           return return_value_altered; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  |   accumulator = node->accumulator; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   emission.instance = instance; | 
					
						
							|  |  |  |  |   emission.ihint.signal_id = node->signal_id; | 
					
						
							|  |  |  |  |   emission.ihint.detail = detail; | 
					
						
							|  |  |  |  |   emission.ihint.run_type = 0; | 
					
						
							|  |  |  |  |   emission.state = 0; | 
					
						
							|  |  |  |  |   emission.chain_type = G_TYPE_NONE; | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   emission_push (&emission); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |   class_closure = signal_lookup_closure (node, instance); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							|  |  |  |  |  EMIT_RESTART: | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (handler_list) | 
					
						
							|  |  |  |  |     handler_unref_R (signal_id, instance, handler_list); | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  |   max_sequential_handler_number = g_handler_sequential_number; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   hlist = handler_list_lookup (signal_id, instance); | 
					
						
							|  |  |  |  |   handler_list = hlist ? hlist->handlers : NULL; | 
					
						
							|  |  |  |  |   if (handler_list) | 
					
						
							|  |  |  |  |     handler_ref (handler_list); | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  |   emission.ihint.run_type = G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if ((node->flags & G_SIGNAL_RUN_FIRST) && class_closure) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_RUN; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       emission.chain_type = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       return_accu = maybe_init_accumulator_unlocked (node, emission_return, &accu); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       g_closure_invoke (class_closure, | 
					
						
							|  |  |  |  | 			return_accu, | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                         n_params, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 			instance_and_params, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 			&emission.ihint); | 
					
						
							|  |  |  |  |       if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) && | 
					
						
							|  |  |  |  | 	  emission.state == EMISSION_RUN) | 
					
						
							|  |  |  |  | 	emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.chain_type = G_TYPE_NONE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       return_value_altered = TRUE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_STOP) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_CLEANUP; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       else if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (node->emission_hooks) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       GHook *hook; | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |       GHook *static_emission_hooks[3]; | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       size_t n_emission_hooks = 0; | 
					
						
							|  |  |  |  |       const gboolean may_recurse = TRUE; | 
					
						
							|  |  |  |  |       guint i; | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_HOOK; | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       /* Quick check to determine whether any hooks match this emission,
 | 
					
						
							|  |  |  |  |        * before committing to the more complex work of calling those hooks. | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |        * We save a few of them into a static array, to try to avoid further | 
					
						
							|  |  |  |  |        * allocations. | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |        */ | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       hook = g_hook_first_valid (node->emission_hooks, may_recurse); | 
					
						
							|  |  |  |  |       while (hook) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  | 	  SignalHook *signal_hook = SIGNAL_HOOK (hook); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-08 17:11:42 +00:00
										 |  |  |  | 	  if (!signal_hook->detail || signal_hook->detail == detail) | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |             { | 
					
						
							|  |  |  |  |               if (n_emission_hooks < G_N_ELEMENTS (static_emission_hooks)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                   static_emission_hooks[n_emission_hooks] = | 
					
						
							|  |  |  |  |                     g_hook_ref (node->emission_hooks, hook); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               n_emission_hooks += 1; | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 	  hook = g_hook_next_valid (node->emission_hooks, hook, may_recurse); | 
					
						
							|  |  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |       /* Re-iterate back through the matching hooks and copy them into
 | 
					
						
							|  |  |  |  |        * an array which won’t change when we unlock to call the | 
					
						
							|  |  |  |  |        * user-provided hook functions. | 
					
						
							|  |  |  |  |        * These functions may change hook configuration for this signal, | 
					
						
							|  |  |  |  |        * add / remove signal handlers, etc. | 
					
						
							|  |  |  |  |        */ | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       if G_UNLIKELY (n_emission_hooks > 0) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |           guint8 static_hook_returns[G_N_ELEMENTS (static_emission_hooks)]; | 
					
						
							|  |  |  |  |           GHook **emission_hooks = NULL; | 
					
						
							|  |  |  |  |           guint8 *hook_returns = NULL; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if G_LIKELY (n_emission_hooks <= G_N_ELEMENTS (static_emission_hooks)) | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |               emission_hooks = static_emission_hooks; | 
					
						
							|  |  |  |  |               hook_returns = static_hook_returns; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |               emission_hooks = g_newa (GHook *, n_emission_hooks); | 
					
						
							|  |  |  |  |               hook_returns = g_newa (guint8, n_emission_hooks); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |               /* We can't just memcpy the ones we have in the static array,
 | 
					
						
							|  |  |  |  |                * to the alloca()'d one because otherwise we'd get an invalid | 
					
						
							|  |  |  |  |                * ID assertion during unref | 
					
						
							|  |  |  |  |                */ | 
					
						
							|  |  |  |  |               i = 0; | 
					
						
							|  |  |  |  |               for (hook = g_hook_first_valid (node->emission_hooks, may_recurse); | 
					
						
							|  |  |  |  |                    hook != NULL; | 
					
						
							|  |  |  |  |                    hook = g_hook_next_valid (node->emission_hooks, hook, may_recurse)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                   SignalHook *signal_hook = SIGNAL_HOOK (hook); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                   if (!signal_hook->detail || signal_hook->detail == detail) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                        if (i < G_N_ELEMENTS (static_emission_hooks)) | 
					
						
							|  |  |  |  |                          { | 
					
						
							|  |  |  |  |                             emission_hooks[i] = g_steal_pointer (&static_emission_hooks[i]); | 
					
						
							|  |  |  |  |                             g_assert (emission_hooks[i] == hook); | 
					
						
							|  |  |  |  |                          } | 
					
						
							|  |  |  |  |                        else | 
					
						
							|  |  |  |  |                          { | 
					
						
							|  |  |  |  |                             emission_hooks[i] = g_hook_ref (node->emission_hooks, hook); | 
					
						
							|  |  |  |  |                          } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                       i += 1; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 03:52:59 +01:00
										 |  |  |  |                g_assert (i == n_emission_hooks); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             for (i = 0; i < n_emission_hooks; ++i) | 
					
						
							|  |  |  |  |               { | 
					
						
							|  |  |  |  |                 GSignalEmissionHook hook_func; | 
					
						
							|  |  |  |  |                 gboolean need_destroy; | 
					
						
							|  |  |  |  |                 guint old_flags; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 hook = emission_hooks[i]; | 
					
						
							|  |  |  |  |                 hook_func = (GSignalEmissionHook) hook->func; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 old_flags = g_atomic_int_or (&hook->flags, G_HOOK_FLAG_IN_CALL); | 
					
						
							|  |  |  |  |                 need_destroy = !hook_func (&emission.ihint, n_params, | 
					
						
							|  |  |  |  |                                            instance_and_params, hook->data); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (!(old_flags & G_HOOK_FLAG_IN_CALL)) | 
					
						
							|  |  |  |  |                   { | 
					
						
							| 
									
										
										
										
											2025-04-11 15:02:34 +01:00
										 |  |  |  |                     g_atomic_int_compare_and_exchange ((gint *) &hook->flags, | 
					
						
							|  |  |  |  |                                                        (gint) old_flags | G_HOOK_FLAG_IN_CALL, | 
					
						
							|  |  |  |  |                                                        (gint) old_flags); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 hook_returns[i] = !!need_destroy; | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             SIGNAL_LOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             for (i = 0; i < n_emission_hooks; i++) | 
					
						
							|  |  |  |  |               { | 
					
						
							|  |  |  |  |                 hook = emission_hooks[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 g_hook_unref (node->emission_hooks, hook); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (hook_returns[i]) | 
					
						
							|  |  |  |  |                   g_hook_destroy_link (node->emission_hooks, hook); | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (handler_list) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       Handler *handler = handler_list; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_RUN; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       handler_ref (handler); | 
					
						
							|  |  |  |  |       do | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  Handler *tmp; | 
					
						
							|  |  |  |  | 	   | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 	  if (handler->after) | 
					
						
							|  |  |  |  | 	    { | 
					
						
							|  |  |  |  | 	      handler_unref_R (signal_id, instance, handler_list); | 
					
						
							|  |  |  |  | 	      handler_list = handler; | 
					
						
							|  |  |  |  | 	      break; | 
					
						
							|  |  |  |  | 	    } | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 	  else if (!handler->block_count && (!handler->detail || handler->detail == detail) && | 
					
						
							|  |  |  |  | 		   handler->sequential_number < max_sequential_handler_number) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	    { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	      SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 	      return_accu = maybe_init_accumulator_unlocked (node, emission_return, &accu); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 	      g_closure_invoke (handler->closure, | 
					
						
							|  |  |  |  | 				return_accu, | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                                 n_params, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 				instance_and_params, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 				&emission.ihint); | 
					
						
							|  |  |  |  | 	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) && | 
					
						
							|  |  |  |  | 		  emission.state == EMISSION_RUN) | 
					
						
							|  |  |  |  | 		emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	      SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	      return_value_altered = TRUE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	       | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	  else | 
					
						
							|  |  |  |  | 	    tmp = handler->next; | 
					
						
							|  |  |  |  | 	   | 
					
						
							|  |  |  |  | 	  if (tmp) | 
					
						
							|  |  |  |  | 	    handler_ref (tmp); | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 	  handler_unref_R (signal_id, instance, handler_list); | 
					
						
							|  |  |  |  | 	  handler_list = handler; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	  handler = tmp; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |       while (handler); | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_STOP) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_CLEANUP; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       else if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   emission.ihint.run_type &= (unsigned) ~G_SIGNAL_RUN_FIRST; | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  |   emission.ihint.run_type |= G_SIGNAL_RUN_LAST; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if ((node->flags & G_SIGNAL_RUN_LAST) && class_closure) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_RUN; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.chain_type = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |       return_accu = maybe_init_accumulator_unlocked (node, emission_return, &accu); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       g_closure_invoke (class_closure, | 
					
						
							|  |  |  |  | 			return_accu, | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                         n_params, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 			instance_and_params, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 			&emission.ihint); | 
					
						
							|  |  |  |  |       if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) && | 
					
						
							|  |  |  |  | 	  emission.state == EMISSION_RUN) | 
					
						
							|  |  |  |  | 	emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.chain_type = G_TYPE_NONE; | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |       return_value_altered = TRUE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_STOP) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_CLEANUP; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       else if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (handler_list) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       Handler *handler = handler_list; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_RUN; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |       handler_ref (handler); | 
					
						
							|  |  |  |  |       do | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	  Handler *tmp; | 
					
						
							|  |  |  |  | 	   | 
					
						
							| 
									
										
										
										
											2001-04-29 03:04:27 +00:00
										 |  |  |  | 	  if (handler->after && !handler->block_count && (!handler->detail || handler->detail == detail) && | 
					
						
							|  |  |  |  | 	      handler->sequential_number < max_sequential_handler_number) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	    { | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	      SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  | 	      return_accu = maybe_init_accumulator_unlocked (node, emission_return, &accu); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 	      g_closure_invoke (handler->closure, | 
					
						
							|  |  |  |  | 				return_accu, | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                                 n_params, | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 				instance_and_params, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 				&emission.ihint); | 
					
						
							|  |  |  |  | 	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) && | 
					
						
							|  |  |  |  | 		  emission.state == EMISSION_RUN) | 
					
						
							|  |  |  |  | 		emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  | 	      SIGNAL_LOCK (); | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 	      return_value_altered = TRUE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	       | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	    } | 
					
						
							|  |  |  |  | 	  else | 
					
						
							|  |  |  |  | 	    tmp = handler->next; | 
					
						
							|  |  |  |  | 	   | 
					
						
							|  |  |  |  | 	  if (tmp) | 
					
						
							|  |  |  |  | 	    handler_ref (tmp); | 
					
						
							|  |  |  |  | 	  handler_unref_R (signal_id, instance, handler); | 
					
						
							|  |  |  |  | 	  handler = tmp; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  |       while (handler); | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_STOP) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_CLEANUP; | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       else if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |  EMIT_CLEANUP: | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2025-04-11 15:08:16 +01:00
										 |  |  |  |   emission.ihint.run_type &= (unsigned) ~G_SIGNAL_RUN_LAST; | 
					
						
							| 
									
										
										
										
											2012-02-16 10:09:27 +01:00
										 |  |  |  |   emission.ihint.run_type |= G_SIGNAL_RUN_CLEANUP; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if ((node->flags & G_SIGNAL_RUN_CLEANUP) && class_closure) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       gboolean need_unset = FALSE; | 
					
						
							|  |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.chain_type = G_TYPE_FROM_INSTANCE (instance); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_UNLOCK (); | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  |       if (node->return_type != G_TYPE_NONE && !accumulator) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
											  
											
												destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>
        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.
Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.
        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
											
										 
											2001-03-08 16:34:59 +00:00
										 |  |  |  | 	  g_value_init (&accu, node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE); | 
					
						
							|  |  |  |  | 	  need_unset = TRUE; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  |       g_closure_invoke (class_closure, | 
					
						
							|  |  |  |  | 			node->return_type != G_TYPE_NONE ? &accu : NULL, | 
					
						
							| 
									
										
										
										
											2022-07-15 21:19:54 +02:00
										 |  |  |  |                         n_params, | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  | 			instance_and_params, | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  | 			&emission.ihint); | 
					
						
							| 
									
										
										
										
											2019-08-25 19:10:45 +02:00
										 |  |  |  |       if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) && | 
					
						
							|  |  |  |  |           emission.state == EMISSION_RUN) | 
					
						
							|  |  |  |  |         emission.state = EMISSION_STOP; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |       if (need_unset) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	g_value_unset (&accu); | 
					
						
							| 
									
										
										
										
											2001-05-28 04:57:07 +00:00
										 |  |  |  |       SIGNAL_LOCK (); | 
					
						
							| 
									
										
										
										
											2019-08-25 19:10:45 +02:00
										 |  |  |  |       return_value_altered = TRUE; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       emission.chain_type = G_TYPE_NONE; | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |        | 
					
						
							| 
									
										
										
										
											2001-12-13 07:04:41 +00:00
										 |  |  |  |       if (emission.state == EMISSION_RESTART) | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | 	goto EMIT_RESTART; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |    | 
					
						
							| 
									
										
										
										
											2000-10-27 16:48:11 +00:00
										 |  |  |  |   if (handler_list) | 
					
						
							|  |  |  |  |     handler_unref_R (signal_id, instance, handler_list); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |    | 
					
						
							| 
									
										
										
										
											2014-09-07 05:28:56 +02:00
										 |  |  |  |   emission_pop (&emission); | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  |   if (accumulator) | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |     g_value_unset (&accu); | 
					
						
							| 
									
										
										
										
											2010-01-01 21:39:52 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |   TRACE(GOBJECT_SIGNAL_EMIT_END(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance))); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  |   return return_value_altered; | 
					
						
							| 
									
										
											  
											
												added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>
        * glib-object.h: added newly added gobject/ headers.
        * gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.
        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.
Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.
        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.
        * genum.c: macro cleanups.
        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.
        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.
        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.
        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.
        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.
        * many const corrections over the place.
Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
											
										 
											2000-10-25 20:36:35 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  | static void | 
					
						
							|  |  |  |  | add_invalid_closure_notify (Handler  *handler, | 
					
						
							|  |  |  |  | 			    gpointer  instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   g_closure_add_invalidate_notifier (handler->closure, instance, invalid_closure_notify); | 
					
						
							|  |  |  |  |   handler->has_invalid_closure_notify = 1; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | remove_invalid_closure_notify (Handler  *handler, | 
					
						
							|  |  |  |  | 			       gpointer  instance) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   if (handler->has_invalid_closure_notify) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       g_closure_remove_invalidate_notifier (handler->closure, instance, invalid_closure_notify); | 
					
						
							|  |  |  |  |       handler->has_invalid_closure_notify = 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static void | 
					
						
							|  |  |  |  | invalid_closure_notify (gpointer  instance, | 
					
						
							|  |  |  |  | 		        GClosure *closure) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   Handler *handler; | 
					
						
							|  |  |  |  |   guint signal_id; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   SIGNAL_LOCK (); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   handler = handler_lookup (instance, 0, closure, &signal_id); | 
					
						
							| 
									
										
										
										
											2014-06-06 12:15:22 -04:00
										 |  |  |  |   /* See https://bugzilla.gnome.org/show_bug.cgi?id=730296 for discussion about this... */ | 
					
						
							|  |  |  |  |   g_assert (handler != NULL); | 
					
						
							| 
									
										
										
										
											2013-01-16 22:55:27 -05:00
										 |  |  |  |   g_assert (handler->closure == closure); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-13 09:24:02 -04:00
										 |  |  |  |   g_hash_table_remove (g_handlers, handler); | 
					
						
							| 
									
										
										
										
											2013-01-16 22:55:27 -05:00
										 |  |  |  |   handler->sequential_number = 0; | 
					
						
							|  |  |  |  |   handler->block_count = 1; | 
					
						
							| 
									
										
										
										
											2004-06-23 01:49:24 -04:00
										 |  |  |  |   handler_unref_R (signal_id, instance, handler); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   SIGNAL_UNLOCK (); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-05-20 19:58:16 +00:00
										 |  |  |  | static const gchar* | 
					
						
							|  |  |  |  | type_debug_name (GType type) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   if (type) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |       const char *name = g_type_name (type & ~G_SIGNAL_TYPE_STATIC_SCOPE); | 
					
						
							|  |  |  |  |       return name ? name : "<unknown>"; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   else | 
					
						
							|  |  |  |  |     return "<invalid>"; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
											  
											
												fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
	* gboxed.c: fixed dealing with collection/lcopy of NULL values.
	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.
	* Makefile.am: cleanups, marshaller generation rules.
	* gmarshal.[hc]: new files with GRuntime standard marshallers.
	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.
	* glib-genmarshal.1: reflect glib-genmarshal.c updates.
	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().
	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().
	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.
	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.
	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.
	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.
	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
											
										 
											2000-12-12 07:32:00 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_accumulator_true_handled: | 
					
						
							|  |  |  |  |  * @ihint: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @return_accu: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @handler_return: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @dummy: standard #GSignalAccumulator parameter | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * A predefined #GSignalAccumulator for signals that return a | 
					
						
							|  |  |  |  |  * boolean values. The behavior that this accumulator gives is | 
					
						
							|  |  |  |  |  * that a return of %TRUE stops the signal emission: no further | 
					
						
							|  |  |  |  |  * callbacks will be invoked, while a return of %FALSE allows | 
					
						
							| 
									
										
										
										
											2010-10-12 21:34:26 -04:00
										 |  |  |  |  * the emission to continue. The idea here is that a %TRUE return | 
					
						
							| 
									
										
										
										
											2014-01-31 20:34:33 -05:00
										 |  |  |  |  * indicates that the callback handled the signal, and no further | 
					
						
							|  |  |  |  |  * handling is needed. | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Since: 2.4 | 
					
						
							| 
									
										
										
										
											2008-06-22 14:53:09 +00:00
										 |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-06-22 09:29:52 +00:00
										 |  |  |  |  * Returns: standard #GSignalAccumulator result | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2003-09-12 20:33:31 +00:00
										 |  |  |  | gboolean | 
					
						
							|  |  |  |  | g_signal_accumulator_true_handled (GSignalInvocationHint *ihint, | 
					
						
							|  |  |  |  | 				   GValue                *return_accu, | 
					
						
							|  |  |  |  | 				   const GValue          *handler_return, | 
					
						
							|  |  |  |  | 				   gpointer               dummy) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   gboolean continue_emission; | 
					
						
							|  |  |  |  |   gboolean signal_handled; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   signal_handled = g_value_get_boolean (handler_return); | 
					
						
							|  |  |  |  |   g_value_set_boolean (return_accu, signal_handled); | 
					
						
							|  |  |  |  |   continue_emission = !signal_handled; | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  |   return continue_emission; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-12 20:58:43 -04:00
										 |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_signal_accumulator_first_wins: | 
					
						
							|  |  |  |  |  * @ihint: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @return_accu: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @handler_return: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * @dummy: standard #GSignalAccumulator parameter | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * A predefined #GSignalAccumulator for signals intended to be used as a | 
					
						
							|  |  |  |  |  * hook for application code to provide a particular value.  Usually | 
					
						
							|  |  |  |  |  * only one such value is desired and multiple handlers for the same | 
					
						
							|  |  |  |  |  * signal don't make much sense (except for the case of the default | 
					
						
							|  |  |  |  |  * handler defined in the class structure, in which case you will | 
					
						
							|  |  |  |  |  * usually want the signal connection to override the class handler). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * This accumulator will use the return value from the first signal | 
					
						
							|  |  |  |  |  * handler that is run as the return value for the signal and not run | 
					
						
							|  |  |  |  |  * any further handlers (ie: the first handler "wins"). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Returns: standard #GSignalAccumulator result | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.28 | 
					
						
							|  |  |  |  |  **/ | 
					
						
							|  |  |  |  | gboolean | 
					
						
							|  |  |  |  | g_signal_accumulator_first_wins (GSignalInvocationHint *ihint, | 
					
						
							|  |  |  |  |                                  GValue                *return_accu, | 
					
						
							|  |  |  |  |                                  const GValue          *handler_return, | 
					
						
							|  |  |  |  |                                  gpointer               dummy) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   g_value_copy (handler_return, return_accu); | 
					
						
							|  |  |  |  |   return FALSE; | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-05-07 22:39:14 -05:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /**
 | 
					
						
							|  |  |  |  |  * g_clear_signal_handler: | 
					
						
							|  |  |  |  |  * @handler_id_ptr: A pointer to a handler ID (of type #gulong) of the handler to be disconnected. | 
					
						
							|  |  |  |  |  * @instance: (type GObject.Object): The instance to remove the signal handler from. | 
					
						
							| 
									
										
										
										
											2021-01-26 14:16:26 +01:00
										 |  |  |  |  *   This pointer may be %NULL or invalid, if the handler ID is zero. | 
					
						
							| 
									
										
										
										
											2019-05-07 22:39:14 -05:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Disconnects a handler from @instance so it will not be called during | 
					
						
							|  |  |  |  |  * any future or currently ongoing emissions of the signal it has been | 
					
						
							|  |  |  |  |  * connected to. The @handler_id_ptr is then set to zero, which is never a valid handler ID value (see g_signal_connect()). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * If the handler ID is 0 then this function does nothing. | 
					
						
							|  |  |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-01-26 14:16:26 +01:00
										 |  |  |  |  * There is also a macro version of this function so that the code | 
					
						
							|  |  |  |  |  * will be inlined. | 
					
						
							| 
									
										
										
										
											2019-05-07 22:39:14 -05:00
										 |  |  |  |  * | 
					
						
							|  |  |  |  |  * Since: 2.62 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | void | 
					
						
							| 
									
										
										
										
											2021-01-26 14:16:26 +01:00
										 |  |  |  | (g_clear_signal_handler) (gulong   *handler_id_ptr, | 
					
						
							|  |  |  |  |                           gpointer  instance) | 
					
						
							| 
									
										
										
										
											2019-05-07 22:39:14 -05:00
										 |  |  |  | { | 
					
						
							|  |  |  |  |   g_return_if_fail (handler_id_ptr != NULL); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-26 14:16:26 +01:00
										 |  |  |  | #ifndef g_clear_signal_handler
 | 
					
						
							|  |  |  |  | #error g_clear_signal_handler() macro is not defined
 | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   g_clear_signal_handler (handler_id_ptr, instance); | 
					
						
							| 
									
										
										
										
											2019-05-07 22:39:14 -05:00
										 |  |  |  | } |