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