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