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