This takes a `const GValue *' argument.
[platform/upstream/glib.git] / gobject / ChangeLog
1 2001-03-21  Martin Baulig  <baulig@suse.de>
2
3         * gboxed.[ch] (g_value_dup_boxed): This takes a `const GValue *'
4         argument.
5
6 2001-03-18  Tor Lillqvist  <tml@iki.fi>
7
8         * gobject.def: Correct some renamed functions.
9
10 Sat Mar 17 23:18:36 2001  Tim Janik  <timj@gtk.org>
11
12         * gobject.c (g_object_get_property): minor bug-fix.
13
14         * gbsearcharray.[hc]: provide a macro for static initialization and
15         functions g_bsearch_array_new() and g_bsearch_array_destroy() for
16         dynamic allocations.
17         
18         * gboxed.c: introduce G_TYPE_GSTRING, boxed type for GString.
19         
20         * gclosure.[hc]: naming corrections.
21
22 Fri Mar  9 16:42:08 2001  Tim Janik  <timj@gtk.org>
23
24         * gvaluetypes.[hc]: moved g_strdup_value_contents() into this file as
25         a public function (was static in gobject.c before). it's a bit odd
26         to have that function here, especially since it requires extra includes,
27         but then it doesn't very well fit somewhere else either.
28
29         * gparamspecs.c: added default/max/min checks to param spec creation
30         functions.
31
32 2001-03-10  Tor Lillqvist  <tml@iki.fi>
33
34         * gobject.def: Add a couple of missing entries.
35
36         * Makefile.am (libgobject_1_3_la_LIBADD): Use only on Win32.
37
38 Fri Mar  9 14:57:17 2001  Tim Janik  <timj@gtk.org>
39
40         * testgruntime.c: test program. covers run first/last/cleanup signal
41         handlers, return value accumulator, signal string returns, and
42         interface types in signal arguments.
43
44         * gtype.c (g_type_value_table_peek): for interface types without
45         value table, try looking up a value table from an instantiatable
46         prerequisite type (this is safe as an interface may only have
47         one instantiatable prerequisiste).
48         (type_check_is_value_type_U): same here.
49
50         * gsignal.c (g_signal_newv): assert that return types never have
51         G_SIGNAL_TYPE_STATIC_SCOPE set.
52         (g_signal_newc): only create class closure if the class_offset is not
53         0.
54
55 Fri Mar  9 10:14:00 2001  Tim Janik  <timj@gtk.org>
56
57         * gparamspecs.c (g_param_spec_object): use g_type_is_a() to check
58         for object_type being a G_TYPE_OBJECT, not G_TYPE_IS_OBJECT(), since
59         that wouldn't allow interface types.
60
61         * gtype.c (g_type_interface_add_prerequisite): arg, fixed small cnp bug
62         with bad implications and an off-by-one error.
63
64 Thu Mar  8 16:34:22 2001  Owen Taylor  <otaylor@redhat.com>
65
66         * gvaluetransform.c: Include <string.h> for memcpy.
67
68         * gvaluetransform.c (DEFINE_SPRINTF): Remove unnecessary
69         and ANSI-illegal ## token pasting.
70
71 Thu Mar  8 18:11:52 2001  Tim Janik  <timj@gtk.org>
72
73         * gsignal.c: eek, fixed old hook detail storage code.
74
75 Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>
76
77         * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.
78
79         * gsignal.[hc]: fixed accumulator invocation, implemented emission
80         hooks. and no, neither of these callbacks are called via a closure,
81         language bindings can wrap the accumulator and emission hook
82         interface, they already get parameters marshalled into a GValue array.
83         (g_signal_connect): removed this function as its C specific, doesn't
84         cover the swapped argument, is too close to its broken original
85         gtk_signal_connect() and creates demand for _swapped, _after and
86         _swapped_after variants <brrr>.
87         (g_signal_connectc): convenience macro to connect a C handler
88         func with data, like the old g_signal_connect() plus swapped
89         argument.
90
91         * gtype.h:
92         * gboxed.c: added G_TYPE_VALUE boxed type.
93
94 Wed Mar  7 19:02:51 2001  Tim Janik  <timj@gtk.org>
95
96         * gtype.c (type_node_add_iface_entry_W): catch when adding an interface
97         to an ancestor of a child that already conforms to this interface.
98         currently we spew a warning here, should we be silent?
99         (g_type_interface_add_prerequisite): new function to add a prerequisite
100         type to an interface, that must succeed an instance is_a prerequisite
101         type check before the interface can be added to an instance. the
102         prerequisite types are also suuported in is_a checks of the interface.
103         (g_type_instance_is_a):
104         (g_type_check_instance_cast):
105         (g_type_check_instance): cleanups and optimizations.
106         (g_type_class_is_a):
107         (g_type_check_class_cast): same, also prevented these from accepting
108         interface types, as class structures don't nest interfaces.
109
110 2001-03-07  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
111
112         * Makefile.am: Avoid rebuilding everything everytime.
113
114 Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>
115
116         * gboxed.[hc]: changed prototype of g_boxed_type_register_static()
117         to contain an optional init function and a hint at whether the
118         boxed structure uses ref counting internally.
119         added g_value_set_boxed_take_ownership().
120         made G_TYPE_BOXED an abstract value type.
121
122         * genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
123         types.
124
125         * glib-genmarshal.c: argument type changes, preparation for third-party
126         arg specification.
127
128         * gobject.[hc]: cleaned up get/set property code.
129         added g_strdup_value_contents() to improve warnings.
130
131         * gparam.[hc]: added g_param_value_convert(), taking over responsibility
132         of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
133         validation alterations may be valid a part of the property setting
134         process.
135
136         * gparamspecs.[hc]: made value comparisons stable (for sort applications).
137         added GParamSpecValueArray, a param spec for value arrays and
138         GParamSpecClosure. nuked the value exchange functions and
139         GParamSpecCCallback.
140
141         * gtype.[hc]: catch unintialized usages of the type system with
142         g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
143         to flag types that introduce a value table, but can't be used for
144         g_value_init(). cleaned up reserved type ids.
145
146         * gvalue.[hc]: code cleanups and saner checking.
147         nuked the value exchange API. implemented value transformations, we
148         can't really "convert" values, rather transforms are an anylogy to
149         C casts, real conversions need a param spec for validation, which is
150         why g_param_value_convert() does real conversions now.
151
152         * gvaluearray.[hc]: new files that implement a GValueArray, a struct
153         that can hold inhomogeneous arrays of value (to that extend that it
154         also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
155         this is exposed to the type system as a boxed type.
156
157         * gvaluetransform.c: new file implementing most of the former value
158         exchange functions as single-sided transformations.
159
160         * gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
161         g_value_set_string_take_ownership().
162
163         * *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
164
165         * *.[hc]: many fixes and cleanups.
166
167         * many warning improvements.
168
169 Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>
170
171         * gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
172         into G_VALUE_LCOPY(), this needs proper documenting.
173
174         * gparam.c: fixed G_PARAM_USER_MASK.
175
176         * gtype.c (type_data_make_W): 
177         (type_data_last_unref_Wm): fixed invalid memory freeing.
178
179         * gobject.c (g_object_last_unref): destroy signal handlers associated
180         with object, right before finalization.
181
182         * gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
183         that don't actually support details.
184
185         * gobject.[hc]: got rid of property trailers. nuked GObject
186         properties "data" and the "signal" variants.
187         (g_object_connect): new convenience function to do multiple
188         signal connections at once.
189         (g_object_disconnect): likewise, for disconnections.
190
191         * gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
192
193         * gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
194         as private (the latter got renamed from g_value_get_as_pointer()).
195
196 2001-02-21  Tor Lillqvist  <tml@iki.fi>
197
198         * *.h: Use G_BEGIN_DECLS and G_END_DECLS.
199
200         * Makefile.am: Use libglib-1.3.la from top_builddir. Invoke
201         libtool with -no-undefined for Win32 and Cygwin.
202
203 Wed Feb 21 18:31:46 2001  Jonathan Blandford  <jrb@redhat.com>
204
205         * gsignal.h (g_signal_connect): Add g_signal_connect define to
206         make porting from gtk_signal_connect easy.
207
208         * gsignal.c (g_signal_emit_valist): Use G_TYPE_FROM_INSTANCE
209         (instance) instead of node->itype when initting the value.
210
211 2001-02-17  Havoc Pennington  <hp@pobox.com>
212
213         Applied patch from Soeren Sandmann:
214         
215         * gvaluetypes.c (g_value_get_string): G_CONST_RETURN
216
217         * gtype.c (g_type_name): G_CONST_RETURN
218
219         * gsignal.c (g_signal_name): G_CONST_RETURN
220
221         * gobject-query.c (main): const fix
222
223 Sat Feb 17 07:58:46 2001  Tim Janik  <timj@gtk.org>
224
225         * genums.h (G_TYPE_IS_FLAGS): patch from sven to fixup
226         G_ENUM_CLASS_TYPE() macro.
227
228 Sat Feb 17 04:55:35 2001  Tim Janik  <timj@gtk.org>
229
230         * gtype.[hc]: changed collect_format, collect_value() and lcopy_format,
231         lcopy_value() in the GTypeValueTable. the collect functions are now
232         called only once per value, collect_format/lcopy_format are strings
233         that enlist all necessary GTypeCValues to be varargs-collected.
234
235         * gvalue.h: ranamed STATIC_TAG to G_VALUE_NOCOPY_CONTENTS to indicate that
236         a value shouldn't copy its contents.
237
238         * gvaluecollector.h: changed G_VALUE_COLLECT() and G_VALUE_LCOPY()
239         macros to carry an additional argument (flags) that can be used
240         to pass G_VALUE_NOCOPY_CONTENTS along to the collection functions.
241
242         * *.c: adapted collect_value() and lcopy_value() functions to the new
243         prototypes, support G_VALUE_NOCOPY_CONTENTS where apropriate.
244
245         * gsignal.[hc]: introduced a G_SIGNAL_TYPE_STATIC_SCOPE flag that can
246         be passed along (ORed) with the parameter types, indicating that the
247         emission arguments are to be considered static for the scope of the
248         emission. should be used with care and only if the caller knows that
249         a parameter cannot be destroyed/freed from signal handlers connected
250         to an emission.
251
252 Fri Feb 16 07:10:44 2001  Tim Janik  <timj@gtk.org>
253
254         * gclosure.c:
255         (g_closure_ref):
256         (g_closure_sink): make closure sinking explicit.
257
258         * gsignal.c:
259         (g_signal_connect_data): 
260         (g_signal_connect_closure): 
261         (g_signal_connect_closure_by_id): 
262         (g_signal_newv): perform explicit closure sinking.
263
264 Thu Feb  8 00:31:45 2001  Tim Janik  <timj@gtk.org>
265
266         * gtype.h: added G_TYPE_DEBUG_NONE for/from Eric Lemings ;)
267
268 2001-02-04  Tor Lillqvist  <tml@iki.fi>
269
270         * gobject.def: Remove glib_debug_objects.
271
272 Sun Feb  4 07:30:53 2001  Tim Janik  <timj@gtk.org>
273
274         * gtype.[hc]: changed g_type_init() to take debugging flags
275         initially, a combination of G_TYPE_DEBUG_OBJECTS and
276         G_TYPE_DEBUG_SIGNALS. using the G_TYPE_ prefix is a bit odd
277         here, but basically g_type_int() serves as initialization
278         fucntion for all of GType, GObject, GSignal, so what the heck.
279
280         * gobject.c: special case debugging code properly.
281         changed glib_trap_object_ref to g_trap_object_ref.
282
283         * gsignal.c: add signal emission debugging abilities, along with
284         a new trap object g_trap_instance_signals.
285
286 2001-02-04  Tor Lillqvist  <tml@iki.fi>
287
288         * Makefile.am (progs_LDADD): Change order of libs to libgobject
289         first, then libglib. Needed for cygwin, says jbdoll@kepri.re.kr.
290
291 Wed Jan 31 06:19:49 2001  Tim Janik  <timj@gtk.org>
292
293         * gparam.h: gtk-doc sucks for not dealing with #define inside enums.
294
295         * gtype.[hc]: added G_TYPE_FLAG_RESERVED_ID_BIT, a bit in the type
296         number that's supposed to be left untouched (preserved mainly
297         for the signal code).
298
299         * *.c: added thread safety code, based on an old patch from sebastian.
300         the remaining thread safety issues are now datalists on pspecs (to be
301         solved im gdataset.c) and gvalue.c where locking concerns value exchange
302         functionality only, and that's soon to be revised.
303
304 2001-01-27  Tor Lillqvist  <tml@iki.fi>
305
306         * makefile.msc.in: Don't try to compile gmarshal.c on its own.
307
308 2001-01-24    <alexl@redhat.com>
309
310         * gclosure.c (g_closure_unref):
311         Don't leak closure->notifiers.
312
313 2001-01-05  Havoc Pennington  <hp@redhat.com>
314
315         * gparamspecs.c (g_param_spec_enum): set the value_type in the
316         param spec; closes bug 40210
317         (g_param_spec_flags): ditto for flags
318
319 2001-01-03  Alexander Larsson  <alexl@redhat.com>
320
321         * gobject.c:
322         Move glib_debug_objects out of the G_ENABLE_DEBUG #ifdef.
323
324 Thu Dec 28 11:36:44 2000  Tim Janik  <timj@gtk.org>
325
326         * gbsearcharray.c (upper_power2): disable G_BSEARCH_ALIGN_POWER2
327         fucntionality if DISABLE_MEM_POOLS is defined.
328
329         * gtype.c: honour DISABLE_MEM_POOLS.
330
331         * gsignal.c (g_signal_init): flag signal key bsearch array with
332         G_BSEARCH_ALIGN_POWER2 to avoid excessive growth time. honour
333         DISABLE_MEM_POOLS.
334
335         * gparam.h: added G_PARAM_READWRITE alias for (G_PARAM_READABLE |
336                                                        G_PARAM_WRITABLE).
337
338 2000-12-15  Tor Lillqvist  <tml@iki.fi>
339
340         * gobject.def: Update.
341
342 2000-12-15  Havoc Pennington  <hp@pobox.com>
343
344         * gobject.c (g_object_do_class_init): use g_signal_newc
345
346         * gsignal.c (g_signal_newc): convenience function for signals
347         created from C
348         (g_signal_new_valist): added
349         (g_signal_new): removed
350
351 Fri Dec 15 04:40:23 2000  Tim Janik  <timj@gtk.org>
352
353         * gparam.[hc]: add an instance member value_type so the default
354         value of the pspec class can be overridden.
355
356 2000-12-14  Tor Lillqvist  <tml@iki.fi>
357
358         * makefile.mingw.in: Update, include parts from Makefile.am to
359         build gmarshal.[ch]. Some day, we won't need these separate
360         makefiles for Win32 compilation. I hope.
361
362         * makefile.msc.in: Update. No use trying to build gmarshal.[ch]
363         here, it would require Unixish tools. MSVC users building from CVS
364         sources are out of luck.
365         
366         * gobject.def: Update.
367
368 Wed Dec 13 09:31:26 2000  Tim Janik  <timj@gtk.org>
369
370         * gparamspecs.[hc]: add G_TYPE_PARAM_BOXED implementation.
371
372         * gobject.[hc]: minor fixes.
373
374 Tue Dec 12 23:38:02 2000  Tim Janik  <timj@gtk.org>
375
376         * Makefile.am: _never_ touch oldest-source-stamp.
377         
378         * gobject.[hc]: construct property handling fixes/improvements.
379         fixed trailer handling in get/set property.
380         
381         * gparam.[hc]: implement param spec pool, got rid of param spec
382         hashtable. the most prominent change is that e deal with type
383         prefixes here.
384         
385 2000-12-12  Elliot Lee  <sopwith@redhat.com>
386
387         * Makefile.am:
388           . You have to 'touch oldest-source-stamp' if you want to avoid having
389           the Makefile constantly rebuild itself.
390           . Fix marshaller generation rules to work with srcdir != builddir
391             (there were issues with trying to run "./glib-genmarshal", etc.)
392
393 Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>
394
395         * gboxed.c: fixed dealing with collection/lcopy of NULL values.
396         
397         * gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
398         convenience macro.
399         
400         * Makefile.am: cleanups, marshaller generation rules.
401         
402         * gmarshal.[hc]: new files with GRuntime standard marshallers.
403         
404         * glib-genmarshal.c: fix log domain, support gruntime standard 
405         marshallers, suport G_TYPE_PARAM, come with extern "C" and
406         #include gmarshal.h.
407         
408         * glib-genmarshal.1: reflect glib-genmarshal.c updates.
409         
410         * gobject.[hc]: implement object constructor. rework parameter
411         changed notification queueing, we support queue freezes now and
412         don't dispatch from an idle handler anymore.
413         parameter->property rename hassle.
414         implemented ::properties_changed and ::notify::* signals for
415         property change notification (the later supports property names
416         as details). added signal connection and named data properties.
417         (g_signal_connect_object): new function to setup while_alive
418         connections.
419         (g_object_class_install_property): sink properties now, since they
420         are initially floating.
421         (g_object_steal_data):
422         (g_object_set_data_full):
423         (g_object_set_data):
424         (g_object_get_data): set/get data by using g_datalist_*() functions
425         directly.
426         (g_object_queue_param_changed): nuked.
427         (g_object_freeze_notify): start queueing of property changes (freeze/
428         thaw calls stack).
429         (g_object_notify): announce changes of a certain property directly.
430         (g_object_thaw_notify): process queue of property changes, therefore
431         emitting GObject::notify::detail with detail being the changed
432         properties names.
433         (G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
434         G_WARN_INVALID_PARAM_ID().
435         
436         * gparam.[hc]: param specs are now initially floating and need to be
437         sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
438         added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
439         required by GObjectClass.constructor().
440         
441         * gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
442         GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
443         and G_TYPE_CCALLBACK respectively.
444         
445         * gsignal.[hc]: cleanups.
446         (signal_id_lookup): after walking the anchestry, try interfaces as well.
447         (g_signal_new): new function to create signals from varargs type list.
448         (g_signal_connect_closure): closure connection variant that works from
449         signal name+detail.
450         (g_signal_connect_data): c handler connection variant that works from
451         signal name+detail.
452         (g_signal_emit_valist): emit signal for an instance with paraneters
453         collected from a va_list.
454         (g_signal_emit): emit signal, taking parameters from varargs list.
455         (g_signal_emit_by_name): same as g_signal_emit, working from
456         signal name+detail.
457         (signal_emit_R): return whether return_value needs to be altered.
458         
459         * gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
460         the points that need to reflect the upcoming rename.
461         melt g_type_conforms_to() functionality into g_type_is_a(), as that
462         is what we really want (liskov substitution principle).
463         assorted changes to other files due to conforms_to->is_a.
464
465         * gvalue.[hc]: implemented g_value_set_instance() that sets a value
466         from an instantiatable type via the value_table's collect_value()
467         function (based on an idea from James Henstridge <james@daa.com.au>).
468         cleanups/fixes.
469         
470         * gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
471
472 Wed Nov 29 13:30:05 2000  Tim Janik  <timj@gtk.org>
473
474         * gsignal.c (handlers_find): fix elliots "logic fix" that dereferences
475         NULL nodes if C handlers are searched for specific signals.
476
477 2000-11-28  Elliot Lee  <sopwith@redhat.com>
478
479         * gsignal.c: Fix warnings about possible use of uninitialized
480         variables, and fix logic that would leave 'node' unset in cases
481         that it might be used in.
482
483         * glib-genmarshal.c: Fix warning about printf format.
484
485 2000-11-28  Tor Lillqvist  <tml@iki.fi>
486
487         * gboxed.c: Include <string.h> for memset ().
488
489 2000-11-22  Tor Lillqvist  <tml@iki.fi>
490
491         * gobject.def: Update.
492
493 2000-11-20  Havoc Pennington  <hp@redhat.com>
494
495         * gobject.c (g_object_get_data)
496         (g_object_set_data)
497         (g_object_set_data_full)
498         (g_object_steal_data): More convenient data-setting functions
499
500 Wed Nov 15 20:58:05 2000  Owen Taylor  <otaylor@redhat.com>
501
502         * gtypemodule.c (g_type_module_use): If loading the
503         module fails, don't increment the use count.
504
505 Thu Nov  9 01:49:43 2000  Tim Janik  <timj@gtk.org>
506
507         * gobject.h (G_WARN_INVALID_PARAM_ID): doh,
508         s/BSE_OBJECT_TYPE_NAME/G_OBJECT_TYPE_NAME/; reported by Maas-Maarten
509         Zeeman <maas@wanadoo.nl>.
510
511 Mon Nov 13 00:48:39 2000  Owen Taylor  <otaylor@redhat.com>
512
513         * Makefile.am (EXTRA_DIST): Add glib-genmarshal.1
514
515 2000-11-11  Tor Lillqvist  <tml@iki.fi>
516
517         * gtypemodule.c: Include stdlib.h for exit().
518
519         * makefile.{mingw,msc}.in (gobject_OBJECTS): Add gtypemodule.
520
521         * gobject.def: Add missing functions.
522
523 Sun Nov  5 13:21:28 2000  Owen Taylor  <otaylor@redhat.com>
524
525         * Makefile.am gtypemodule.[ch]: New basic implementation of
526         GTypePlugin interface as a GObject. Dynamically loaded modules can
527         register any number of types and interface on the module.
528
529 Sun Nov  5 10:25:40 2000  Owen Taylor  <otaylor@redhat.com>
530
531         * gsignal.c (handlers_find): When appending handlers and
532         not matching on signal_id, use hlist->signal_id instead of 
533         signal_id. Having the correct signal_id when unreffing
534         the handlers makes things work a lot better.
535
536 2000-11-05  Tor Lillqvist  <tml@iki.fi>
537
538         * makefile.{mingw,msc}.in (gobject_OBJECTS): Add gtypeplugin.
539
540         * gobject.def: Update.
541
542 Sun Nov  5 05:22:55 2000  Tim Janik  <timj@gtk.org>
543
544         * gsignal.c:
545         fixed a bag full of subtle bugs of immensive screw-up potential in
546         handlers_find(), luckily no one found out about them yet ;)
547         fixed signal_handlers_foreach_matched_R() so it operates on an
548         initial handler list snapshot provided by handlers_find() to work
549         around general reentrancy problems and to avoid multiple callback()
550         invocations on the same handlers.
551         this code is now officially 80% bug free (10% remaining for interface
552         types, and 10% remaining for destroyed signals ;)
553         
554 Sat Nov  4 02:01:33 2000  Tim Janik  <timj@gtk.org>
555
556         * gsignal.c (_g_signals_destroy): valid signal nodes start out at 1.
557
558         * gtypeplugin.[hc]: new files holding a GTypePlugin interface
559         implementation that provides the API required by GType to deal with
560         dynamically loadable types.
561
562         * gtype.[hc]: displace any GTypePlugin business to gtypeplugin.h.
563
564 Fri Nov  3 07:35:00 2000  Tim Janik  <timj@gtk.org>
565
566         * gsignal.[hc]: prefix internal functions with '_'. renamed
567         g_signal_connect_closure() to g_signal_connect_closure_by_id().
568         added g_signal_parse_name() to retrive signal_id and detail quark
569         from a signal name (internal).
570
571 Wed Nov  1 03:36:54 2000  Tim Janik  <timj@gtk.org>
572
573         * gobject.c (g_object_base_class_finalize): destroy all signals that
574         the finalized obejct type introduced.
575
576         * gsignal.c (g_signals_destroy): don't require itype to have
577         signals.
578
579         * gobject.c (g_object_do_finalize): make sure all signal handlers
580         are destroyed.
581
582         * gsignal.[hc]:
583         (g_signal_handler_find): only match on non-0 masks.
584         (g_signal_handlers_block_matched):
585         (g_signal_handlers_unblock_matched):
586         (g_signal_handlers_disconnect_matched): new functions to block/unblock
587         or disconnect handlers in groups.
588
589 2000-10-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
590
591         * gvalue.c (exchange_entries_equal), gparam.c (param_spec_equals):
592         made both functions return gboolean just for the little extra
593         standard conformance now that GEqualFunc is introduced.
594
595 Mon Oct 30 05:52:45 2000  Tim Janik  <timj@gtk.org>
596
597         * gsignal.c (g_signal_list_ids): get rid of inline documentation owen
598         added, the doc system would ignore it anyways (for some reason not
599         aparent to me).
600
601 Mon Oct 30 03:00:07 2000  Tim Janik  <timj@gtk.org>
602
603         * gsignal.[hc] (g_signal_list_ids): renamed owen's g_type_signals(),
604         added required mutex locks.
605
606 Sun Oct 29 02:31:03 2000  Owen Taylor  <otaylor@redhat.com>
607
608         * gsignal.c (g_type_signals): Fix problem where signals
609         with "_" in them appeared twice in the result array.
610
611 Sun Oct 29 01:58:44 2000  Owen Taylor  <otaylor@redhat.com>
612
613         * gsignal.h: Add g_type_signals() - a function to list
614         all signals for a given type.
615
616 Sat Oct 28 00:28:09 2000  Tim Janik  <timj@gtk.org>
617
618         * gclosure.c (g_closure_add_marshal_guards): fixed notifier position
619         for post_marshal guard which was off at 0.
620
621 Fri Oct 27 21:49:31 2000  Tim Janik  <timj@gtk.org>
622
623         * gobject.[hc]: doh, fix argument order in for
624         g_cclosure_new_object_swap and g_cclosure_new_object.
625
626 2000-10-28  Tor Lillqvist  <tml@iki.fi>
627
628         * makefile.{mingw,msc}.in: Make glib-genmarshal.exe.
629
630         * glib-genmarshal.c: Conditionalise include of unistd.h.
631         Include <io.h> on Win32.
632
633         * gobject.def: Add some missing entry points.
634
635 Fri Oct 27 16:33:41 2000  Tim Janik  <timj@gtk.org>
636
637         * gsignal.[hc]: publically define GSignalInvocationHint structure
638         that gets passed in to closure invocations. added signal details.
639         renamed GSignalType to GSignalFlags to comply with conventions.
640         quite some cleanups and minor fixes. avoid uneccessary handler list
641         walks upon invokation of after handlers. relookup handler list for
642         restarted emissions. preliminary abort normal handler invokation if
643         after handler is encountered.
644
645         * glib-genmarshal.c:
646         * gclosure.[hc]: moved invocation_hint to the end of the
647         g_closure_invoke() arguments as sugegsted by kenelson.
648         also made it a gpointer to be more generic. the invocation_hint
649         is a caller specific thing that can be used to pass additional
650         data in to closure invocations as documented with the caller
651         invoking the closure.
652
653 Fri Oct 27 05:35:14 2000  Tim Janik  <timj@gtk.org>
654
655         * gobject.c (g_object_watch_closure): fixed realloc bug, reported
656         by havoc.
657
658         * gsignal.c (g_signal_newv): fixed deadlock scenarion where
659         g_signal_lookup() would be called with the signal lock being
660         held. reported by james henstridge.
661
662         * gclosure.c (g_closure_set_meta_marshal): fixed memcpy/overwrite bug
663         reported by owen.
664
665 2000-10-26  Tor Lillqvist  <tml@iki.fi>
666
667         * gbsearcharray.c (bsearch_array_insert): Fix gccisms (pointer
668         arithmetic on void pointer, label without statement following.
669
670         * gtype.c (type_node_fundamental_info): Don't apply unary minus to
671         result of sizeof operator, it can be unsigned. Cast first to
672         gssize.
673
674         * gobject.def: Add new functions.
675
676         * makefile.{mingw,msc}.in: Add new objects.
677
678 2000-10-26  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
679
680         * Makefile.am: Remove empty SUBDIRS line _again_, as that _still_
681         prevents 'make dist' from working.
682
683 Wed Oct 25 19:11:03 2000  Owen Taylor  <otaylor@redhat.com>
684
685         * gbsearcharray.h (g_bsearch_array_get_nth): Don't use implicit
686         casts from void * since this will get included from C++ too
687         at times.
688         
689 Thu Oct 26 00:30:27 2000  Tim Janik  <timj@gtk.org>
690
691         * gvaluetypes.[hc]: added g_value_set_static_string().
692
693         * gboxed.[hc]: const corrections. added g_value_set_static_boxed().
694
695 Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>
696
697         * gtype.c (g_type_free_instance): for the moment, freeing object
698         structures will fill their memory portion with 0xAA. there's a
699         FIXME there, remove this line at a later point.
700
701 Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>
702
703         * glib-genmarshal.1:
704         * glib-genmarshal.c: added publically installed marshaller generator.
705
706         * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
707         interface VTable from instances.
708
709 Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>
710
711         * gobject.[hc]: new functions for closure maintenance:
712         (g_object_watch_closure): maintain validity of the object and
713         the closure for objects that are used as data part of a closure.
714         (g_cclosure_new_object): convenience function to create C closures
715         that have an object as data argument.
716         (g_closure_new_object): convenience function to create closures
717         that have an object as data argument.
718
719         * gclosure.[hc]: implementation of GClosure mechanism.
720         a closure is basically an encapsulation of a callback function
721         and its environment. ideally, most places supporting callback
722         functions will simply take a GClosure* pointer and thus unify
723         callback environments wrg destroy notification etc.
724         GClosure provides destroy notifiers for arbitrary data pointers,
725         reference counting, invalidation notification (it can be invalidated
726         which is merely a deactivate state) and a marshallinbg abstraction.
727         GCClosure is also provided in these files, they present a specialized
728         GClosure implementation for C language callbacks.
729
730         * genum.c: macro cleanups.
731         
732         * gboxed.[hc]: new files, for boxed type abstraction.
733         (g_boxed_copy): copy a boxed structure
734         (g_boxed_free): free a boxed structure
735         (g_value_set_boxed):
736         (g_value_get_boxed): standard GValue functions for boxed types
737         (g_boxed_type_register_static): convenience function for easy
738         introduction of new G_TYPE_BOXED derivatives.
739
740         * gparam.[hc]: introduced g_param_type_register_static(), a short hand
741         for creation of new GParamSpec derived types.
742
743         * gtype.[hc]: many fixes, introduced ability to flag individual
744         type nodes as ABSTRACT upon registration, added value_peek_pointer()
745         to the value table to peek at GValue contents as a pointer for types
746         that support this. fixed up GValue checks.
747
748         * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
749         to peek at the value contents as pointer.
750
751         * *.[hc]: adaptions to type macro fixes and changes in the type
752         registration API.
753
754         * many const corrections over the place.
755
756 Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>
757
758         * gtype.c (g_type_conforms_to): this function basically behaves like
759         and is_a check, except that it _additionally_ features interfaces
760         for instantiatable types. enforce this in the second branch as well
761         (`type' conforms_to `type') even if `type' is not an interface type.
762
763 Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>
764
765         * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
766
767         * gtype.[hc]:
768         * gobject.c:
769         * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
770         suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
771         and G_TYPE_POINTER.
772
773 Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>
774
775         * gbsearcharray.[hc]: long standing needed generic implementation
776         of a binary searchable, sorted and dynamically sized array.
777
778 2000-10-15  Raja R Harinath  <harinath@cs.umn.edu>
779
780         * Makefile.am (BUILT_EXTRA_DIST): New variable.
781         (dist-hook): Handle $(BUILT_EXTRA_DIST).
782         (*): Remove traces of @STRIP_{BEGIN,END}@.
783         
784 2000-09-29  Martin Baulig  <baulig@suse.de>
785         
786         Several minor ANSI C fixes.
787
788         Added missing casts:
789         * gtype.c (type_class_init): 
790         `(gpointer) bnode->data->class.class_init_base'
791         in call to g_slist_prepend() and
792         'GBaseInitFunc class_init_base = (GBaseInitFunc) slist->data'.
793
794         * gobject.c: Put text following #endif into comments.
795
796 2000-09-25  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
797
798         * Makefile.am: Remove empty SUBDIRS line, as that prevents make
799         dist from working.
800
801 Sat Sep  9 20:04:13 2000  Owen Taylor  <otaylor@redhat.com>
802
803         * gobject.c (g_object_last_unref): Move call to
804         g_type_free_instance() here from g_object_do_finalize,
805         since g_type_free_instance() can unload the object's
806         implementation.
807
808 2000-07-27  Tor Lillqvist  <tml@iki.fi>
809
810         * gobject.c: No, don't mark glib_debug_objects for export here,
811         it's handled specially in gtktypeutils.c.
812
813         * gobject.def: Export g_type_fundamental_last (the function).
814
815 2000-07-26  Tor Lillqvist  <tml@iki.fi>
816
817         * gobject.def
818         * gobject.c: Mark glib_debug_objects for export/import as it is
819         used by GTK+.
820
821 Sun Jul 23 17:23:35 2000  Tim Janik  <timj@gtk.org>
822
823         * gtype.[hc]: make g_type_fundamental_last() a function, avoiding all
824         that extern variable clutter and avoiding further problems with thread
825         safety.
826
827 2000-07-19  Tor Lillqvist  <tml@iki.fi>
828
829         * gparam.h
830         * gvalue.h
831         * gparam.c
832         * gtype.c: Shut up Sun's picky compiler.
833
834 2000-07-14  Tor Lillqvist  <tml@iki.fi>
835
836         * gobject.def: Add g_type_get_plugin.
837
838 Thu Jul 13 02:07:54 2000  Tim Janik  <timj@gtk.org>
839
840         * gparam.c (g_param_value_defaults): default initialize the temporary
841         default value, instead of nuking the caller's value contents.
842
843 2000-07-11  Raja R Harinath  <harinath@cs.umn.edu>
844
845         * gtype.c (g_type_get_plugin): Don't return just 0 or 1.
846
847 Tue Jul 11 02:48:13 2000  Tim Janik  <timj@gtk.org>
848
849         * gtype.[hc]: removed g_type_is_dynamic() and added g_type_get_plugin().
850
851 2000-07-10  Tor Lillqvist  <tml@iki.fi>
852
853         * gobject-query.c: Include ../config.h for HAVE_UNISTD_H. Use it
854         to guard inclusion of <unistd.h>.
855
856         * gtype.h: Fix copy-paste errors in the ifdefs on how to declare a
857         variable for export. Call the macro GOBJECT_VAR.
858
859         * gtype.c: Declare _g_type_fundamental_last for export here, too.
860         (type_node_any_new): Use only constant expressions for sizeof
861         operator (for instance MSVC requires this).
862
863         * makefile.mingw.in: Define GOBJECT_COMPILATION.
864
865 Sun Jul  9 21:21:46 2000  Owen Taylor  <otaylor@redhat.com>
866
867         * genums.c: Move string.h include into the .c file
868         instead of where it was in the .h file by mistake.
869
870 Thu Jul  6 15:30:27 2000  Owen Taylor  <otaylor@redhat.com>
871
872         * Makefile.am (EXTRA_DIST): dist fixes.
873
874         * gobject.c: Add a global variable glib_debug_objects
875         (not in header file) to control object tracing.
876
877 2000-07-01  Tor Lillqvist  <tml@iki.fi>
878
879         * gobject.def: Update added and renamed entry points.
880
881         * makefile.mingw.in: Add gvaluetypes.o.
882
883 Thu Jun 29 16:02:07 2000  Owen Taylor  <otaylor@redhat.com>
884
885         * gobject.c:include string.h for memset
886         * genums.h: include string.h for strcpy
887         * gvalue.c: include string.h for memset, memcpy.
888
889 Sat Jun 24 23:03:04 2000  Tim Janik  <timj@gtk.org>
890
891         * gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
892         G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
893         G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
894         added a GTypeValueTable* pointer to GTypeInfo structure for types
895         to implement GValue handling functions.
896         GTypeValueTable contains the following members:
897           value_init(): initialize a GValue structure.
898           value_free(): free GValue structure contents (optional).
899           value_copy(): copy one GValue contents to another GValue structure of
900           collect_type: varargs collection type for the first variable argument
901           to be collected by collect_value().
902           collect_value(): variable arguments collection function (optional).
903           lcopy_type: varargs collection type for the first variable argument
904           to be location copyied by lcopy_value().
905           lcopy_value(): variable arguments location copy function (optional).
906         g_type_value_table_peek(): new function to retrive the GTypeValueTable*
907         for a type node. ValueTables get inherited from parent types, unless
908         overridden through the GTypeInfo structure. internally, GTypeValueTable
909         support means an added overhead of one pointer per static or used
910         dynamic type node.
911         g_type_add_class_cache_func(): provide a cache_func/data pair to be
912         called  prior to a type nodes last_unref() function, this can be used
913         to prevent premature class destruction. multiple installed cache_func()
914         will be chained upon last_unref() untill one of them returns TRUE.
915         the cache_func()s have to check the class id passed in to figure whether
916         they actually want to cache the class of this type (since all classes
917         are routed through the cache_func() chain).
918         g_type_remove_class_cache_func(): remove a previously installed
919         cache_func/data pair. the cache maintained by this function has to be
920         clear when calling g_type_remove_class_cache_func() to avoid leaks.
921         g_type_class_unref_uncached(): class unref function for cache_func()
922         implementations, unreferences a class omitting the cache chain (and
923         therefore unref->cache->unref->... loops).
924
925         * gvaluetypes.[hc]: provide the value setters/getters for the primitive
926         fundamental types boolean, char, uchar, int, uint, long, ulong, float,
927         double and string.
928
929         * gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
930         GTypeValueTable is provided for this type.
931         removed g_value_init_default(), g_value_validate(), g_value_defaults(),
932         g_value_set_default() and g_values_cmp() as these are supplied by the
933         GParamSpec API now.
934         moved g_values_exchange() into the "implementation details" section,
935         since it just provides the underlying functionality for
936         g_value_convert().
937
938         * gvaluecollector.h: renamed the varargs value container from
939         GParamCValue to GTypeCValue as the value collection methods are
940         supplied by the type system now.
941         G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
942         G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
943         GParamSpec structure now.
944
945         * genums.h: macros cleanups/fixes.
946
947         * genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
948         and assorted g_value_{s|g}et_{enum|flags}() implementations.
949
950         * gobject.[hc]:
951         provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
952         and g_value_{s|g}et_object().
953
954         * gparam.[hc]: reduced class to value_set_default(),
955         value_validate() and values_cmp(). also parameters now need to fill
956         in a GType value_type; field to indicate the GValue type they
957         are handling. provide g_param_value_set_default(),
958         g_param_value_defaults(), g_param_value_validate() and
959         g_param_values_cmp().
960
961         * gparamspecs.[hc]: got rid of the g_value_* functions and
962         the G_IS_VALUE_* macros. adapted param spec implementations
963         according to the GParamSpecClass changes.
964
965 Sat Jun 10 08:38:27 2000  Tim Janik  <timj@gtk.org>
966
967         * gtype.c (type_class_init): fetch the nth iface entry of the
968         type node in the nth loop iteration, not alwys the first.
969         bug discovered by Walt Pohl <cher@suitware.com>.
970         (type_data_finalize_class_ifaces): same here, cut and paste
971         rulez.
972
973 Wed Jun  7 09:21:05 2000  Owen Taylor  <otaylor@redhat.com>
974
975         * Makefile.am (INCLUDES): Add top_builddir so glibconfig.h
976         is found properly when build srcdir != builddir. (Patch from
977         Eric Lemings)
978
979 2000-05-13  Tor Lillqvist  <tml@iki.fi>
980
981         * makefile.mingw.in
982         * gobject.def
983         * gobject.rc.in: New files, for Win32 (mingw) build.
984
985         * Makefile.am: Add to EXTRA_DIST. Add rules to produce the
986         corresponding non-*.in files.
987
988         * gtype.h: (Win32:) Mark _g_type_fundamental_last for
989         export/import from DLL.
990
991 Fri May  5 01:15:48 2000  Tim Janik  <timj@gtk.org>
992
993         * gtype.h: add reserved fundamental ids for gtk types (for transition
994         time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
995
996 Mon Apr 17 20:45:50 2000  Tim Janik  <timj@gtk.org>
997
998         * glib-gobject.c (g_object_base_class_finalize): oops, don't unset
999         n_params prior to destructing them.
1000
1001 Tue Apr 11 04:28:10 2000  Tim Janik  <timj@gtk.org>
1002
1003         * fixed a couple of bugs in the initial parameter/object
1004         implementations, after getting beast running on GObject and GValue.
1005
1006 Fri Apr  7 04:27:49 2000  Tim Janik  <timj@gtk.org>
1007
1008         * glib-gobject.[hc]: completed parameter set/get implementations,
1009         along with asyncronous parameter changed notification queue.
1010
1011 Sun Apr  2 04:54:36 2000  Tim Janik  <timj@gtk.org>
1012
1013         * glib-gobject.[hc]: GObject implementation, that is facilities
1014         for setting/getting quarked data and reference counting.
1015
1016         * glib-gparamspecs.[hc]: first actuall parameter implementations
1017         for GLib, so far we have: char, uchar, bool, int, uint, long,
1018         ulong, enum, flags, float, double, string and object. each of these
1019         GParamSpecs is a new instantiatable type in its own respect,
1020         so the .c file derives 13 new types from G_TYPE_PARAM and
1021         defines over 50 (*2) conversion facilities.
1022
1023         * glib-gvaluecollector.h: generic varargs handling stubs for
1024         GParamSpecs, private header file (does get installed for
1025         inclusion into user code though).
1026
1027         * glib-gvalue.[hc]: GValue functionality implementation.
1028
1029         * glib-gparam.[hc]: basis GParamSpec implementation for
1030         the virtual base type G_TYPE_PARAM.
1031
1032         * glib-genums.[hc]: enum/flags type implementation, based on
1033         bseenum.[hc].
1034
1035         * glib-gtype.[hc]: GLib Type System implementation, heavily
1036         based on BSE's dynamic type system.