Commit Graph

392 Commits

Author SHA1 Message Date
Michael Natterer
6f1f1342e4 remove unused #define PREALLOC_CPARAMS.
2008-07-04  Michael Natterer  <mitch@imendio.com>

	* gobject.c: remove unused #define PREALLOC_CPARAMS.


svn path=/trunk/; revision=7159
2008-07-04 13:08:39 +00:00
Matthias Clasen
d6d221911d Fix up section comments
svn path=/trunk/; revision=7137
2008-07-02 03:43:13 +00:00
Björn Lindqvist
eba8246ce5 Bug 539626 – Update docstrings for g_object_freeze_notify and
2008-06-29  Björn Lindqvist  <bjourne@gmail.com>

	Bug 539626 – Update docstrings for g_object_freeze_notify and
	g_object_thaw_notify

	* gobject/gobject.c: Explain how the freeze count works.

svn path=/trunk/; revision=7102
2008-06-29 12:09:31 +00:00
Michael Natterer
6347be5fb6 remove trailing whitespace from newly added gtk-doc comments and
2008-06-22  Michael Natterer  <mitch@imendio.com>

	* *.c: remove trailing whitespace from newly added gtk-doc
	comments and reformatted some where they contained overly long or
	ill-formatted lines.


svn path=/trunk/; revision=7090
2008-06-22 14:53:09 +00:00
Michael Natterer
5602b7e275 moved includes back to the top of the files (before gtk-doc SECTION
2008-06-22  Michael Natterer  <mitch@imendio.com>

	* *.c: moved includes back to the top of the files (before gtk-doc
	SECTION comments). Add "config.h" in all files and move system
	included before glib includes. Remove trailing whitespace from
	SECTION comments and did some reformatting where lines were overly
	long, no documentation content was changed.


svn path=/trunk/; revision=7089
2008-06-22 14:29:25 +00:00
Stefan Kost
356fe46531 Migrating docs.
* docs/reference/gobject/tmpl/signals.sgml:
	* gobject/gclosure.c:
	* gobject/gobject.c:
	* gobject/gsignal.c:
	* gobject/gsignal.h:
	  Migrating docs.


svn path=/trunk/; revision=7083
2008-06-22 09:29:52 +00:00
Stefan Kost
fca3fb5818 Migrating docs.
* docs/reference/gobject/tmpl/param_value_types.sgml:
	* gobject/gboxed.c:
	* gobject/gboxed.h:
	* gobject/genums.c:
	* gobject/genums.h:
	* gobject/gobject.c:
	* gobject/gobject.h:
	* gobject/gparam.c:
	* gobject/gparam.h:
	* gobject/gparamspecs.c:
	* gobject/gparamspecs.h:
	* gobject/gvaluetypes.c:
	* gobject/gvaluetypes.h:
	  Migrating docs.


svn path=/trunk/; revision=7081
2008-06-21 22:16:14 +00:00
Stefan Kost
fedbbf5d74 Migrating docs.
* docs/reference/gobject/tmpl/objects.sgml:
	* gobject/gobject.c:
	* gobject/gobject.h:
	* gobject/gparam.h:
	  Migrating docs.


svn path=/trunk/; revision=7080
2008-06-21 20:07:57 +00:00
Stefan Kost
83dd545044 Migrating docs.
* docs/reference/gobject/tmpl/gclosure.sgml:
	* gobject/gboxed.h:
	* gobject/gclosure.c:
	* gobject/gclosure.h:
	* gobject/gobject.c:
	* gobject/gsourceclosure.c:
	* gobject/gsourceclosure.h:
	  Migrating docs.


svn path=/trunk/; revision=7069
2008-06-21 12:18:12 +00:00
Ryan Lortie
dac885cba5 invoke GObjectClass.constructed() only for newly constructed objects, and
Tue Apr  3 12:34:14 2007  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: invoke GObjectClass.constructed() only for newly
        constructed objects, and invoke it while the notify queue is
        still being frozen, after all CONSTRUCT* properties have been
        set and before random other properties are being set.

        * applied modified patch from Ryan Lortie to implement
        GObjectClass.constructed() to fix #425324.

2007-04-02  Ryan Lortie  <desrt@desrt.ca>

        * gobject/gobject.h: Add 'constructed' vcall to GObjectClass.
        * gobject/gobject.c (g_object_newv): call ->constructed() as last
        step of object construction.



svn path=/trunk/; revision=5441
2007-04-03 10:44:30 +00:00
Matthias Clasen
20b39ffafa Fix some issues with PLT entries. 2006-09-30 13:59:01 +00:00
Tim Janik
08e3a830fb fixed to print usage and version info on STDOUT (#322502).
Tue Aug 29 13:27:33 2006  Tim Janik  <timj@gtk.org>

        * glib-mkenums.in: fixed to print usage and version info on STDOUT
        (#322502).

        * gobject.c (g_initially_unowned_init): restore ; after G_DEFINE_TYPE.
2006-08-29 11:29:24 +00:00
Matthias Clasen
ed9c3c2696 Fix some typos. (#351741, Kjartan Maraas)
2006-08-26  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.h:
	* glib/gscanner.c: Fix some typos.  (#351741, Kjartan Maraas)
2006-08-26 04:03:37 +00:00
Sven Neumann
89f9ebaef3 changed return value of g_value_dup_object(), fixes #343292.
Wed Aug 23 10:35:32 2006  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: changed return value of g_value_dup_object(), fixes #343292.

2006-08-23  Sven Neumann  <sven@gimp.org>

        * gobject/glib-genmarshal.[c1]: added new command-line option
        "--internal" that can be used to let glib-genmarshal generate
        internal functions using the G_GNUC_INTERNAL attribute (bug #346647).
2006-08-23 08:46:21 +00:00
Tim Janik
13fe93378e conditionally thaw the notify queue after construction, so we don't
Wed Aug 16 13:55:08 2006  Tim Janik  <timj@imendio.com>

        * gobject.c: conditionally thaw the notify queue after construction,
        so we don't trigger warnings when trying to thaw an unfrozen singleton.
2006-08-16 12:09:51 +00:00
Tim Janik
e9b421f212 added case3 to hand out the original floating flag handler. required by
Tue Mar  7 17:09:07 2006  Tim Janik  <timj@gtk.org>

        * gobject.c (g_object_compat_control): added case3 to hand out the
        original floating flag handler. required by gtk+ >= 2.10.
2006-03-07 16:15:20 +00:00
Tim Janik
648da9d63f renamed GUnowned to GInitiallyUnowned.
Thu Dec 22 18:53:14 2005  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: renamed GUnowned to GInitiallyUnowned.
2005-12-22 17:58:21 +00:00
Tim Janik
6f01d0c34f implemented G_TYPE_GTPYE. applied patch from matthias which implements
Thu Dec 22 14:59:24 2005  Tim Janik  <timj@imendio.com>

        * gvaluetypes.[hc]: implemented G_TYPE_GTPYE. applied patch
        from matthias which implements GType accessors for GValue.

        * gparamspecs.[hc]: applied patch from matthias which
        implements G_TYPE_PARAM_GTYPE.

        * gobject.[hc]:
        GUnowned: introduced a new object type that has an initially
        floating reference.
        g_object_compat_control(): allow setting of a floating flag handler.
2005-12-22 15:07:03 +00:00
Tim Janik
6e5f465924 added floating reference count. g_object_is_floating():
Wed Nov 23 18:01:46 2005  Tim Janik  <timj@imendio.com>

        * gobject.[hc]: added floating reference count.
        g_object_is_floating():
        g_object_ref_sink(): new functions to deal with floating references.
        g_object_force_floating(): new funciton for object implementations
        to set the floating flag.

        * gobject.c (g_object_init): make objects initially floating.

Wed Nov 23 17:58:13 2005  Tim Janik  <timj@gtk.org>

        * gparam.[hc]: added g_param_spec_ref_sink().
2005-11-23 17:54:41 +00:00
Matthias Clasen
f7a681d65d Intern the signal name.
2005-08-31  Matthias Clasen  <mclasen@redhat.com>

	* gobject.c (g_object_do_class_init): Intern the signal name.
2005-08-31 19:42:51 +00:00
Matthias Clasen
07c4d80d55 Intern type names before registering the type to avoid unnecessary copies.
2005-08-31  Matthias Clasen  <mclasen@redhat.com>

	* gvaluetypes.c (g_value_types_init):
	* gtypeplugin.c (g_type_plugin_get_type):
	* gtypemodule.c (g_type_module_get_type):
	* gparam.c (g_param_type_init):
	* gobject.c (g_object_type_init):
	* genums.c (g_enum_types_init):
	* gboxed.c (g_boxed_type_init): Intern type names
	before registering the type to avoid unnecessary
	copies.
2005-08-31 14:38:18 +00:00
Tim Janik
834ddd1920 turned all modifications to the first 32 integer bits in a closure into
Mon Aug  1 23:00:42 2005  Tim Janik  <timj@imendio.com>

        * gclosure.c: turned all modifications to the first 32 integer bits in a
        closure into atomic accesses. wrapped write accesses into special macros
        to keep the atomic modification logic in a single place. comment cleanups.

        * gclosure.h: made all atomicly accessed closure fields volatile.

        * gobject.h: made ref_count field volatile.
2005-08-01 21:17:50 +00:00
Tim Janik
4746cf2ce0 use g_datalist_set_flags() and g_datalist_unset_flags() to allow proper
Sun Jul 31 02:04:23 2005  Tim Janik  <timj@gtk.org>

        * gobject.c: use g_datalist_set_flags() and g_datalist_unset_flags() to
        allow proper locking around &qdata modifications.
2005-07-31 00:05:22 +00:00
Tim Janik
f0cfc267ba reverted notify_mutex introduction, since this prevents parallelized
Sat Jul 30 21:10:26 2005  Tim Janik  <timj@gtk.org>

        * gobject.c: reverted notify_mutex introduction, since this prevents
        parallelized setting of object properties on different objects, and
        serves no apparent purpose (to me at least).
        g_object_real_dispose(): removed non-atomic reference count
        modifications.
        g_object_unref(): make sure the closures array is destroyed when
        destroying signal handlers.

        * gparam.c: cosmetic changes.

        * gsignal.c: comment fixup. allow 16bit blocking count.

        * gsignal.c: reverted GClosure related changes.

        * gclosure.c: reverted premature commit of atomic reference
        counting attempt.
2005-07-30 19:46:11 +00:00
Matthias Clasen
39ea11ce6b Make refcounting threadsafe by using atomic operations. (#166020, Wim
2005-07-15  Matthias Clasen  <mclasen@redhat.com>

	Make refcounting threadsafe by using atomic
	operations.  (#166020, Wim Taymans)

	* gobject.c: Use a recursive lock to protect the
	notify queue.
	(g_object_unref): Get rid of g_object_last_unref and
	do the last unref handling in g_object_unref.
	(g_object_ref, g_object_unref): Use atomic operations.

	* gsignal.c (struct _HandlerMatch): Use a full integer
	for the ref_count field.
	(handler_ref, handler_unref_R): Use atomic operations.

	* gparam.c (g_param_spec_ref, g_param_spec_unref):
	Use atomic operations instead of a lock to make the
	refcounting threadsafe.

	* gclosure.c (g_closure_ref, g_closure_unref): Use atomic
	operations. This is more complicated here, since the
	refcount is stored in a bitfield, so we also have
	to access all other bitfield members atomically.

	* gsignal.c (handlers_find): Read the meta_marshal flag
	of the closure atomically.

	* tests/Makefile.am (SUBDIRS): Add tests/refcount

	* configure.in: Add tests/refcount

	* tests/refcount/properties.c: Test property changes
	from multiple threads.

	* tests/refcount/signals.c: Test signal emission from
	multiple threads.

	* tests/refcount/objects.c: Test refcounting from
	multiple threads.

	* tests/refcount/objects2.c:
	* tests/refcount/properties2.c: Tests to measure the
	overhead of threadsafe refcounting.

	* glib/giochannel.c (g_io_channel_ref, g_io_channel_unref):
	Use atomic operations to make refcounting
	threadsafe.  (#166020, Wim Taymans)
2005-07-15 16:51:10 +00:00
Owen Taylor
2ae1a46b4c Add g_object_add/remove_toggle_ref() functions to get notification when a
2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * gobject.[ch] gobject.symbols: Add
        g_object_add/remove_toggle_ref() functions to get notification
        when a reference count is the last remaining reference; this
        enables better memory management for language bindings.
        (http://mail.gnome.org/archives/gtk-devel-list/2005-April/msg00095.html)

2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * glib/gdataset.[ch] glib/gdatasetprivate.h: Add
        g_datalist_set/unset_flags(), g_datalist_get_flags() functions
        to squeeze some bits into a GDataSet... this is needed for
        efficient implementation of toggle references in GObject.

        * tests/gobject/references.c tests/gobject/Makefile.am:
        Add a test case for weak and toggle references.

        * glib/gfileutils.[ch]: Rename g_file_replace() back
        to g_file_set_contents().

        * glib/glib.symbols: Update.

2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * glib/Makefile.am glib/glib-sections.txt gobject/gobject-sections.txt:
        Update

        * gobject/tmpl/objects.sgml: Document toggle-references.
2005-05-05 14:57:29 +00:00
Matthias Clasen
3448a27829 Make work again.
2005-03-14  Matthias Clasen  <mclasen@redhat.com>

	* abicheck.sh: Make work again.

	* gsourceclosure.c: Fix a typo.

	Make PLT-reduction work with gcc4, and don't include
	everything in gobjectalias.h:

	* gobject.symbols: Group symbols by header and source
	file.
	* makegobjectalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegalias.pl -def
	* Makefile.am (gobjectaliasdef.c): Add a rule to
	build this file.
	* *.c: Include gobjectalias.h after the other i
        GLib headers, include gobjectaliasdef.c at the bottom.
2005-03-14 06:47:51 +00:00
Matthias Clasen
465c7d1ead Implement the same PLT reduction technique used in GTK+:
2004-09-16  Matthias Clasen  <mclasen@redhat.com>

	Implement the same PLT reduction technique used in GTK+:

	* Makefile.am: Generate gobjectalias.h from gobject.symbols.
	(BUILT_SOURCES): Add gobjectalias.h.

	* makegobjectalias.pl: Script to generate gobjectalias.h.

	* *.c: Include gobjectalias.h
2004-09-16 18:52:40 +00:00
Tim Janik
aa63f7e373 fix g_object_set() whithin _init() implementations not working for
Sat Nov 29 14:57:20 2003  Tim Janik  <timj@gtk.org>

        * gobject.c: fix g_object_set() whithin _init() implementations
        not working for construct-only properties.
        (g_object_init): make the object enter a construct_objects list.
        (g_object_newv): remove object from construct_objects after creation.
        (g_object_set_valist):
        (g_object_set_property): allow construct-only properties for
        objects which are in construct_objects.
2003-11-29 14:00:06 +00:00
Tim Janik
0642df0ab3 variant of class_peek() which works for static types only.
Thu Nov 27 17:53:52 2003  Tim Janik  <timj@gtk.org>

        * gtype.[hc]:
        (g_type_class_peek_static): variant of class_peek() which works for
        static types only.

        * gobject.c:
        (g_object_do_class_init): make ::notify a run-action signal.
        (g_object_newv): use g_type_class_peek_static() by default to
        speed up common code path (trades two write-locks for one read-lock).
        (g_object_disconnect):
        (g_object_connect): allow signal specification words to be
        seperated by '-'.
        (g_object_set_valist):
        (g_object_new_valist): don't leak values.
        (g_object_get_property): check property for readability.
        (g_object_set_property): check property for writability and to
        not be construct-only.
        (g_object_set_valist): check property to not be construct-only.
2003-11-27 17:08:06 +00:00
Owen Taylor
6f5794fad0 Add a new GParamSpecOverride type that is a pointer to a different
Tue Oct 14 17:40:19 2003  Owen Taylor  <otaylor@redhat.com>

        * gparamspecs.[ch]: Add a new GParamSpecOverride type
        that is a pointer to a different paramspec in a parent
        class or interface.

        * gparam.[ch]: Add g_paramspec_get_redirect_target()
        which follows GParamSpecOverride to the real property.
        Make g_param_spec_pool_list() hand redirections,
        properties on interfaces.

        * gobject.[ch] gobjectnotifyqueue.c: Add
        g_object_interface_install_property,
        g_object_interface_find_property,
        g_object_interface_list_properties(). Redirect virtually all
        publically exposed GParamSpec's to the redirect target if
        any. (->constructor is the exception.)
        (#105894)
2003-10-21 19:12:27 +00:00
Matthias Clasen
c3acb9da0c Make the g_value_set_x_take_ownership() functions "official" part of the
2003-09-12  Matthias Clasen  <maclas@gmx.de>

	Make the g_value_set_x_take_ownership() functions "official"
	part of the API (#100948):

	* gvaluetypes.[hc]: Add g_value_take_string() (synonym to the
	now deprecated g_value_set_string_take_ownership()).

	* gparam.[hc]: Add g_value_take_param() (synonym to the
	now deprecated g_value_set_param_take_ownership()).

	* gobject.[hc]: Add g_value_take_object() (synonym to the
	now deprecated g_value_set_object_take_ownership()).

	* gboxed.[hc]: Add g_value_take_boxed() (synonym to the
	now deprecated g_value_set_boxed_take_ownership()).

	* gobject/gobject-sections.txt: Add new g_value_take_x() functions.

	* gobject/tmpl/param_value_types.sgml: Document new g_value_take_x()
	functions.  (#100948)
2003-09-12 20:11:38 +00:00
Manish Singh
056041aab9 removed stray change from previous commit.
Wed Aug 27 19:53:26 2003  Manish Singh  <yosh@gimp.org>

        * gobject.c: removed stray change from previous commit.
2003-08-28 02:55:58 +00:00
Matthias Clasen
29606d90b0 Improve the wording of the warning for invalid
values.  (#117246, Mariano Suarez-Alvarez)
2003-08-08 19:47:35 +00:00
Owen Taylor
68e49c7811 Order refs/unrefs so setting the same object back is safe. (#112861,
Fri May 30 14:42:24 2003  Owen Taylor  <otaylor@redhat.com>

        * gobject.c (g_value_set_object): Order refs/unrefs
        so setting the same object back is safe. (#112861,
        Morten Welinder)
2003-05-30 18:44:57 +00:00
Matthias Clasen
fa21b512d5 Remove all docs from gobject at Tims request. Documentation is only for
2003-02-07  Matthias Clasen  <maclas@gmx.de>

	* gtypemodule.c:
	* gtype.c:
	* gsourceclosure.c:
	* gparamspecs.c:
	* gparam.c:
	* gobject.c:
	* gsignal.c: Remove all docs from gobject at Tims
	request. Documentation is only for weenies anyway...
2003-02-07 22:04:24 +00:00
Matthias Clasen
634b48f254 Add docs. 2002-12-18 23:46:18 +00:00
Matthias Clasen
8b8616bb9c Move some docs inline.
* gobject/tmpl/param_value_types.sgml: Move some docs inline.

	* gsignal.c (g_signal_new): Typo fix.

	* gparamspecs.c:
	* gparam.c (g_param_spec_internal):
	* gobject.c (g_object_class_install_property): Add docs.
2002-12-15 02:38:49 +00:00
Matthias Clasen
0b93fa4048 More GSignal docs. 2002-12-02 19:56:12 +00:00
Anders Carlsson
cc983e6cd8 Remove debugging message, approved by Tim Janik.
2002-07-05  Anders Carlsson  <andersca@gnu.org>

	* gobject.c (g_object_base_class_finalize): Remove debugging
	message, approved by Tim Janik.
2002-07-05 07:55:22 +00:00
Owen Taylor
26a6730547 [ merged from stable ]
Mon May  6 16:06:23 2002  Owen Taylor  <otaylor@redhat.com>

	[ merged from stable ]

        * gobject.c: Remove PROPERTIES_CHANGED enumeration
        value that wasn't used any more. (#78833,
        Matthias Clasen)

        * gboxed.c (g_boxed_copy): Remove check on data[2]
        that no longer exists. (#80814, Daniel Elstner)
2002-05-06 20:08:17 +00:00
Tim Janik
e1afbb7e03 fix extraneous include.
Thu Mar 21 01:28:14 2002  Tim Janik  <timj@gtk.org>

        * gsignal.[hc]:
        * gobject.[hc]: fix extraneous include.
2002-03-21 00:34:05 +00:00
Erwann Chenede
738c1cfd6b glib/gconvert.c glib/gen-unicode-tables.pl fixed cast/type problems to
2002-03-13  Erwann Chenede  <erwann.chenede@sun.com>
  * glib/gconvert.c
  * glib/gen-unicode-tables.pl
  * glib/gunidecomp.h : fixed cast/type problems to
    avoid warnings (with forte compiler)
  * gobject/gclosure.c
  * gobject/gobject.c
  * gobject/gsignal.c: fixed cast problems with function pointer
    to avoid warnings (with forte compiler) (#73898)
2002-03-13 15:36:04 +00:00
Tim Janik
d7dd9aefd8 placed a comment about not changing CArray until we have
Sun Mar  3 04:11:58 2002  Tim Janik  <timj@gtk.org>

        * gobject.c: placed a comment about not changing CArray until we have
        g_object_list_watched_closures().

        * gparam.h (struct _GParamSpecClass): added padding.

        * gobjectnotifyqueue.c (struct _GObjectNotifyQueue): abuse
        g_list_alloc() to allocate GObjectNotifyQueue to et rid
        of locking issues.
2002-03-03 03:14:43 +00:00
Owen Taylor
fe60933186 Fix implicit conversions between void * and function pointer (Miroslaw
Wed Feb 20 22:55:15 2002  Owen Taylor  <otaylor@redhat.com>

        * gobject.c: Fix implicit conversions between void * and
        function pointer (Miroslaw Dobrzanski-Neumann, #71963)
2002-02-21 03:57:33 +00:00
Tim Janik
a0f5e304b2 provide marshaller specific value_set_*_take_ownership() variants.
Sun Feb 16 22:08:48 2002  Tim Janik  <timj@gtk.org>

        * gobject.[hc]:
        * gparam.[hc]: provide marshaller specific value_set_*_take_ownership()
        variants.

        * gvalue.h: shrink GValue's data contents to 2 unions.

        * glib-genmarshal.c: fix release and realeas_check hackage by always
        using _take_ownership() variants. directly access value contents if
        G_ENABLE_DEBUG is not defined.

        * gobject.h: add padding pointers to the class struct.
2002-02-19 17:38:45 +00:00
Tim Janik
b7046ec79f return gulong instead of guint.
Thu Jan 24 07:39:56 2002  Tim Janik  <timj@gtk.org>

        * gobject.c (g_signal_connect_object): return gulong instead
        of guint.
2002-01-24 06:39:31 +00:00
Tim Janik
115366f663 G_TOKEN_ERROR is also an end of stream condition.
Mon Nov 12 03:01:28 2001  Tim Janik  <timj@gtk.org>

        * glib/gscanner.c (g_scanner_eof): G_TOKEN_ERROR is also an end
        of stream condition.
2001-11-12 14:11:30 +00:00
jacob berkman
00f672eac5 s/retrive/retrieve/
2001-10-03  jacob berkman  <jacob@ximian.com>

	* gtype.c (type_iface_retrieve_holder_info_Wm):
	(type_iface_vtable_init_Wm):
	(type_iface_vtable_finalize_Wm):
	(g_type_class_ref):

	* gobject.c (g_object_get_property): s/retrive/retrieve/
2001-10-03 19:46:05 +00:00
Tim Janik
7ca6b00d0e removed extraneous GObject* returns from a couple functions that are very
Mon Sep 10 20:31:37 2001  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: removed extraneous GObject* returns from a
        couple functions that are very unlikely to be used in nested.
        changed gpointer->GObject* for a couple return values/arguments.
        this fixes #50206.
2001-09-10 18:32:52 +00:00
Matthias Clasen
d008ff1eda gobject.c (g_object_base_class_finalize): typo fix. 2001-09-04 21:17:43 +00:00
James Henstridge
f240813ff6 add an object member to the structure. (weak_refs_notify): pass
2001-08-17  James Henstridge  <james@daa.com.au>

	* gobject.c (WeakRefStack): add an object member to the structure.
	(weak_refs_notify): pass wstack->object as extra argument to
	notify functions.
	(g_object_weak_ref): set wstack->object when initialising
	WeakRefStack.

	* gobject.h (GWeakNotify): add second argument to prototype which
	gives the pointer to where the object that is being disposed of
	was.
2001-08-18 03:07:48 +00:00
Sven Neumann
d1d623b072 added new function g_nullify_pointer().
2001-08-06  Sven Neumann  <sven@gimp.org>

	* glib/gutils.[ch]: added new function g_nullify_pointer().

	* gobject/gobject.[ch]:
	added new functions g_object_[add|remove]_weak_pointer().
2001-08-06 20:55:11 +00:00
Tim Janik
6bad2c92ce congrats tim, introducing of-by-one errors like on my very first day of C
Mon Jul  2 07:17:47 2001  Tim Janik  <timj@gtk.org>

        * gobject.c (g_object_weak_ref):
        (g_object_watch_closure): congrats tim, introducing of-by-one
        errors like on my very first day of C programming.
2001-07-02 05:15:29 +00:00
Tim Janik
69f32ba7c9 added g_list_insert_before().
Sat Jun 30 23:14:32 2001  Tim Janik  <timj@gtk.org>

        * glib/glist.[hc]: added g_list_insert_before().

        * glib/gslist.c (g_slist_insert_before): provide an implementation,
        prototype was already present...

Sat Jun 30 11:07:00 2001  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: provide weak_ref/weak_unref functions,
        invoked from ->dispose. renamed ->shutdown() to ->dispose(),
        provide "public" API entry here: g_object_run_dispose(), this
        fucntion should _only_ be called from object system implementations
        (e.g. gtkobject.c) if at all.

        * gtypemodule.c (g_type_module_dispose): s/shutdown/dispose/

        * gsignal.h: removed compat aliases.

        * gobject.c (g_object_connect): support data objects.
2001-07-02 05:02:13 +00:00
Owen Taylor
1d1c8ef0a3 g_signal_newc() => g_signal_new().
Sat Jun 30 13:17:12 2001  Owen Taylor  <otaylor@redhat.com>

	* testgruntime.c (test_object_class_init)
          gobject.c (g_object_do_class_init):
          g_signal_newc() => g_signal_new().
2001-06-30 17:17:41 +00:00
Tim Janik
fd860cb987 up version number to 1.3.7, interface age 0, binary age 0.
Thu Jun 28 16:57:44 2001  Tim Janik  <timj@gtk.org>

        * configure.in (GLIB_MICRO_VERSION): up version number to 1.3.7,
        interface age 0, binary age 0.

Thu Jun 28 16:42:49 2001  Tim Janik  <timj@gtk.org>

        * gsignal.c (g_signal_lookup):
        (g_signal_list_ids): give elaborate warnings about invalid types,
        non-instantiatable types and unloaded types that we can't operate on.

        * gparam.[hc]: g_param_spec_pool_belongings() ->
        g_param_spec_pool_list_owned().

        * gsignal.[hc]: renamed:
        g_signal_newc -> g_signal_new
        g_signal_disconnect_by_func -> g_signal_handlers_disconnect_by_func
        g_signal_block_by_func -> g_signal_handlers_block_by_func
        g_signal_unblock_by_func -> g_signal_handlers_unblock_by_func
        added GConnectType to simplify (..gboolean swapped, gboolean after)
        args.

        * gobject.[hc]: changed prototypes accordingly.
2001-06-28 17:05:12 +00:00
Tim Janik
3b346e3581 remove left-over usages of an anonymous GBoxed typedef.
Mon Jun 11 17:07:06 2001  Tim Janik  <timj@gtk.org>

        * gboxed.[hc]: remove left-over usages of an anonymous GBoxed typedef.

        * gobjectnotifyqueue.c: moved property notify queue implementation
        bits into this function.

        * gparam.[hc]: added g_param_spec_pool_belongings(), completed
        g_param_spec_pool_list(). added GParameter for _setv() functions.

        * gobject.[hc]: use gobjectnotifyqueue.h implementation now.
        got rid of properties_changed signal.
        new functions g_object_newv(), g_object_class_list_properties().
        removed "properties_changed" signal.

        * gtype.[hc]: added g_type_depth() to figure number of parent
        types + 1 for a type.

        * gsignal.h: add g_signal_connect() (as per owen's request) and
        g_signal_connect_swapped().
2001-06-19 12:13:22 +00:00
Owen Taylor
e181176f90 gpointer, not gpointer *.
Thu May 24 08:52:02 2001  Owen Taylor  <otaylor@redhat.com>

	* gobject.[ch] (g_value_set_object): gpointer, not
        gpointer *.
2001-05-24 12:52:39 +00:00
Tim Janik
fbb5eebbad make g_value_set_object() take a gpointer v_object so people don't need to
Tue May 22 02:46:13 2001  Tim Janik  <timj@gtk.org>

        * gobject.c (g_value_set_object): make g_value_set_object()
        take a gpointer v_object so people don't need to G_OBJECT()
        cast NULL pointers (C code convenience).
2001-05-22 00:48:06 +00:00
Owen Taylor
39f526ef20 Make types of ternary operator correspond. (Fixes compilation errors with
Thu May  3 06:10:23 2001  Owen Taylor  <otaylor@redhat.com>

	* gobject.c (g_object_set_[q]data_full): Make types of ternary
        operator correspond. (Fixes compilation errors with Sun CC,
	#52230)
2001-05-03 10:12:46 +00:00
Havoc Pennington
a786a9a020 We were returning junk memory here, because we didn't copy the value
2001-04-19  Havoc Pennington  <hp@redhat.com>

	* gobject.c (g_object_get_valist): We were returning junk memory
	here, because we didn't copy the value (G_VALUE_NOCOPY_CONTENTS
	passed to G_VALUE_LCOPY) and then we freed the GValue immediately
	after. Removed G_VALUE_NOCOPY_CONTENTS from here; need a
	G_VALUE_STEAL_CONTENTS or the like if we want this optimization.
2001-04-19 21:48:21 +00:00
Tim Janik
f3848154ae only queue readable properties for notification changes.
Wed Mar 28 17:04:06 2001  Tim Janik  <timj@gtk.org>

        * gobject.c (object_queue_property): only queue readable properties
        for notification changes.
2001-03-28 15:26:19 +00:00
Tim Janik
45fb71949a removed archaic gpointer derived_data; relict and added a GData member
Wed Mar 14 18:46:54 2001  Tim Janik  <timj@gtk.org>

        * gscanner.[hc]: removed archaic gpointer derived_data; relict and
        added a GData member instead.

        * glist.[hc]: added g_list_remove_all().

        * gslist.[hc]: added g_slist_remove_all().

Sat Mar 17 23:18:36 2001  Tim Janik  <timj@gtk.org>

        * gobject.c (g_object_get_property): minor bug-fix.

        * gbsearcharray.[hc]: provide a macro for static initialization and
        functions g_bsearch_array_new() and g_bsearch_array_destroy() for
        dynamic allocations.

        * gboxed.c: introduce G_TYPE_GSTRING, boxed type for GString.

        * gclosure.[hc]: naming corrections.

Fri Mar  9 16:42:08 2001  Tim Janik  <timj@gtk.org>

        * gvaluetypes.[hc]: moved g_strdup_value_contents() into this file as
        a public function (was static in gobject.c before). it's a bit odd
        to have that function here, especially since it requires extra includes,
        but then it doesn't very well fit somewhere else either.

        * gparamspecs.c: added default/max/min checks to param spec creation
        functions.
2001-03-18 04:44:38 +00:00
Tim Janik
009942e1ac made config arg to g_scanner_new() const.
Fri Mar  9 18:01:43 2001  Tim Janik  <timj@gtk.org>

        * gscanner.[hc]: made config arg to g_scanner_new() const.

Fri Mar  9 16:42:08 2001  Tim Janik  <timj@gtk.org>

        * gvaluetypes.[hc]: moved g_strdup_value_contents() into this file as
        a public function (was static in gobject.c before). it's a bit odd
        to have that function here, especially since it requires extra includes,
        but then it doesn't very well fit somewhere else either.

        * gparamspecs.c: added default/max/min checks to param spec creation
        functions.
2001-03-14 15:33:45 +00:00
Tim Janik
617332234d destruction cleanup. there's one ->finalize_hook member in the hooklist
Thu Mar  8 16:23:34 2001  Tim Janik  <timj@gtk.org>

        * ghook.[hc]: destruction cleanup. there's one
        ->finalize_hook member in the hooklist now that gets
        called when a hook should be destroyed, that's it.
        that function is guarranteed to be called only when
        all ref_counts to the hook vanished, thus also when
        the hook is not in call.

Thu Mar  8 16:35:48 2001  Tim Janik  <timj@gtk.org>

        * gparamspecs.[hc]: s/g_param_spec_string_c/g_param_spec_stringc/.

        * gsignal.[hc]: fixed accumulator invocation, implemented emission
        hooks. and no, neither of these callbacks are called via a closure,
        language bindings can wrap the accumulator and emission hook
        interface, they already get parameters marshalled into a GValue array.
        (g_signal_connect): removed this function as its C specific, doesn't
        cover the swapped argument, is too close to its broken original
        gtk_signal_connect() and creates demand for _swapped, _after and
        _swapped_after variants <brrr>.
        (g_signal_connectc): convenience macro to connect a C handler
        func with data, like the old g_signal_connect() plus swapped
        argument.

        * gtype.h:
        * gboxed.c: added G_TYPE_VALUE boxed type.
2001-03-08 16:34:59 +00:00
Tim Janik
37e4b8c87e changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar  7 09:36:33 2001  Tim Janik  <timj@gtk.org>

	* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
	to contain an optional init function and a hint at whether the
	boxed structure uses ref counting internally.
	added g_value_set_boxed_take_ownership().
	made G_TYPE_BOXED an abstract value type.

	* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
	types.

	* glib-genmarshal.c: argument type changes, preparation for third-party
	arg specification.

	* gobject.[hc]: cleaned up get/set property code.
	added g_strdup_value_contents() to improve warnings.

	* gparam.[hc]: added g_param_value_convert(), taking over responsibility
	of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
	validation alterations may be valid a part of the property setting
	process.

	* gparamspecs.[hc]: made value comparisons stable (for sort applications).
	added GParamSpecValueArray, a param spec for value arrays and
	GParamSpecClosure. nuked the value exchange functions and
	GParamSpecCCallback.

	* gtype.[hc]: catch unintialized usages of the type system with
	g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
	to flag types that introduce a value table, but can't be used for
	g_value_init(). cleaned up reserved type ids.

	* gvalue.[hc]: code cleanups and saner checking.
	nuked the value exchange API. implemented value transformations, we
	can't really "convert" values, rather transforms are an anylogy to
	C casts, real conversions need a param spec for validation, which is
	why g_param_value_convert() does real conversions now.

	* gvaluearray.[hc]: new files that implement a GValueArray, a struct
	that can hold inhomogeneous arrays of value (to that extend that it
	also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
	this is exposed to the type system as a boxed type.

	* gvaluetransform.c: new file implementing most of the former value
	exchange functions as single-sided transformations.

	* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
	g_value_set_string_take_ownership().

	* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.

	* *.[hc]: many fixes and cleanups.

	* many warning improvements.

Tue Feb 27 18:35:15 2001  Tim Janik  <timj@gtk.org>

	* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
	into G_VALUE_LCOPY(), this needs proper documenting.

	* gparam.c: fixed G_PARAM_USER_MASK.

	* gtype.c (type_data_make_W):
	(type_data_last_unref_Wm): fixed invalid memory freeing.

	* gobject.c (g_object_last_unref): destroy signal handlers associated
	with object, right before finalization.

	* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
	that don't actually support details.

	* gobject.[hc]: got rid of property trailers. nuked GObject
	properties "data" and the "signal" variants.
	(g_object_connect): new convenience function to do multiple
	signal connections at once.
	(g_object_disconnect): likewise, for disconnections.

	* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.

	* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
	as private (the latter got renamed from g_value_get_as_pointer()).

Wed Mar  7 09:32:06 2001  Tim Janik  <timj@gtk.org>

        * glib-object.h: add gvaluearray.h.

        * gstring.[hc]: fixup naming of g_string_sprint*.

        * gtypes.h: fixed GCompareDataFunc naming.

Wed Mar  7 09:33:27 2001  Tim Janik  <timj@gtk.org>

        * gobject/Makefile.am: shuffled rules to avoid excessive
        rebuilds.

        * gobject/gobject-sections.txt: updates.

        * gobject/tmpl/*: bunch of updates, added another patch
        from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 14:46:45 +00:00
Tim Janik
bbc5a3adac changed collect_format, collect_value() and lcopy_format, lcopy_value() in
Sat Feb 17 04:55:35 2001  Tim Janik  <timj@gtk.org>

        * gtype.[hc]: changed collect_format, collect_value() and lcopy_format,
        lcopy_value() in the GTypeValueTable. the collect functions are now
        called only once per value, collect_format/lcopy_format are strings
        that enlist all necessary GTypeCValues to be varargs-collected.

        * gvalue.h: ranamed STATIC_TAG to G_VALUE_NOCOPY_CONTENTS to indicate that
        a value shouldn't copy its contents.

        * gvaluecollector.h: changed G_VALUE_COLLECT() and G_VALUE_LCOPY()
        macros to carry an additional argument (flags) that can be used
        to pass G_VALUE_NOCOPY_CONTENTS along to the collection functions.

        * *.c: adapted collect_value() and lcopy_value() functions to the new
        prototypes, support G_VALUE_NOCOPY_CONTENTS where apropriate.

        * gsignal.[hc]: introduced a G_SIGNAL_TYPE_STATIC_SCOPE flag that can
        be passed along (ORed) with the parameter types, indicating that the
        emission arguments are to be considered static for the scope of the
        emission. should be used with care and only if the caller knows that
        a parameter cannot be destroyed/freed from signal handlers connected
        to an emission.
2001-02-17 05:32:00 +00:00
Tim Janik
22357542e9 s/glib_trap_/g_trap_/. add comments on g_trap_instance_signals,
Sun Feb  4 07:38:32 2001  Tim Janik  <timj@gtk.org>

        * docs/debugging.txt: s/glib_trap_/g_trap_/. add comments on
        g_trap_instance_signals, g_trace_instance_signals and
        GRUNTIME_DEBUG.

        * gmem.c: s/glib_trap_/g_trap_/.

Sun Feb  4 07:30:53 2001  Tim Janik  <timj@gtk.org>

        * gtype.[hc]: changed g_type_init() to take debugging flags
        initially, a combination of G_TYPE_DEBUG_OBJECTS and
        G_TYPE_DEBUG_SIGNALS. using the G_TYPE_ prefix is a bit odd
        here, but basically g_type_int() serves as initialization
        fucntion for all of GType, GObject, GSignal, so what the heck.

        * gobject.c: special case debugging code properly.
        changed glib_trap_object_ref to g_trap_object_ref.

        * gsignal.c: add signal emission debugging abilities, along with
        a new trap object g_trap_instance_signals.
2001-02-04 07:03:52 +00:00
Tim Janik
f0b9abe801 adapt to work with new CVS gtk-doc, leaving the old rules in place caused
Wed Jan 31 07:14:22 2001  Tim Janik  <timj@gtk.org>

        * gobject/Makefile.am: adapt to work with new CVS gtk-doc, leaving the old
        rules in place caused bogus recursions. main changes:
        - add to conditionalized section:
          all-local:
                $(MAKE) scan
                $(MAKE) templates
                $(MAKE) sgml
                $(MAKE) html.stamp
          html.stamp: sgml.stamp $(EXTRA_SGML_FILES)
                $(MAKE) html
          DOC_STAMPS= html.stamp sgml.stamp
        - change:
          maintainer-clean-local: clean
          -     cd $(srcdir) && rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
          +     cd $(srcdir) && rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt $(DOC_STAMPS)

        * glib/Makefile.am (maintainer-clean-local): dito.

Wed Jan 31 06:21:32 2001  Tim Janik  <timj@gtk.org>

        * gobject/tmpl/types.sgml: applied docu patch from Eric Lemings
        <eric.b.lemings@lmco.com>, did some more editing.

Wed Jan 31 06:19:49 2001  Tim Janik  <timj@gtk.org>

        * gparam.h: gtk-doc sucks for not dealing with #define inside enums.

        * gtype.[hc]: added G_TYPE_FLAG_RESERVED_ID_BIT, a bit in the type
        number that's supposed to be left untouched (preserved mainly
        for the signal code).

        * *.c: added thread safety code, based on an old patch from sebastian.
        the remaining thread safety issues are now datalists on pspecs (to be
        solved im gdataset.c) and gvalue.c where locking concerns value exchange
        functionality only, and that's soon to be revised.
2001-01-31 06:27:41 +00:00
Alexander Larsson
2b579b5933 Move glib_debug_objects out of the G_ENABLE_DEBUG #ifdef.
2001-01-03  Alexander Larsson  <alexl@redhat.com>

	* gobject.c:
	Move glib_debug_objects out of the G_ENABLE_DEBUG #ifdef.
2001-01-03 10:03:49 +00:00
Tim Janik
782a8e2e7c got rid of outdated dmalloc support. provide g_try_malloc() and
Thu Dec 28 10:21:46 2000  Tim Janik  <timj@gtk.org>

        * gmem.[hc]: got rid of outdated dmalloc support. provide g_try_malloc()
        and g_try_realloc() which _may_ fail and return NULL.
        nuked g_mem_check(), provided GMemVTable for memory function
        virtualization, alterable at program startup with g_mem_set_vtable().
        provided glib_mem_profiler_table and g_mem_profile() to support limited
        profiling information out of the box (uses mprotect() for free()ed areas
        on linux).
        provide globally visible G_MEM_ALIGN.
        buncha cleanups.

        * docs/macros.txt: file to get a clue about the various configuration
        macros.

        * docs/debugging.txt: explain debugging traps.

        * configure.in: got rid of --enable-mem-check and --enable-mem-profile,
        define GLIB_SIZEOF_VOID_P and GLIB_SIZEOF_LONG. check malloc prototypes
        and define SANE_MALLOC_PROTOS is we can use them.
        <boy, is this file a mess>

        * gutils.c, gscanner.c: fix up compatibility warnings, use g_message().


Thu Dec 28 11:36:44 2000  Tim Janik  <timj@gtk.org>

        * gbsearcharray.c (upper_power2): disable G_BSEARCH_ALIGN_POWER2
        fucntionality if DISABLE_MEM_POOLS is defined.

        * gtype.c: honour DISABLE_MEM_POOLS.

        * gsignal.c (g_signal_init): flag signal key bsearch array with
        G_BSEARCH_ALIGN_POWER2 to avoid excessive growth time. honour
        DISABLE_MEM_POOLS.

        * gparam.h: added G_PARAM_READWRITE alias for (G_PARAM_READABLE |
                                                       G_PARAM_WRITABLE).
2000-12-29 02:16:51 +00:00
Havoc Pennington
b3c410dee1 use g_signal_newc
2000-12-15  Havoc Pennington  <hp@pobox.com>

* gobject.c (g_object_do_class_init): use g_signal_newc

* gsignal.c (g_signal_newc): convenience function for signals
created from C
(g_signal_new_valist): added
(g_signal_new): removed
2000-12-15 07:05:10 +00:00
Tim Janik
484f2ee732 urg managed to forget this last time ;(
Wed Dec 13 09:31:26 2000  Tim Janik  <timj@gtk.org>

        * gparamspecs.[hc]: add G_TYPE_PARAM_BOXED implementation.

        * gobject.[hc]: minor fixes.
2000-12-13 08:36:17 +00:00
Tim Janik
9a8c33db5c return whether a value got removed.
Tue Dec 12 18:58:22 2000  Tim Janik  <timj@gtk.org>

        * ghash.c (g_hash_table_remove): return whether a value
        got removed.

Tue Dec 12 23:38:02 2000  Tim Janik  <timj@gtk.org>

        * Makefile.am: _never_ touch oldest-source-stamp.

        * gobject.[hc]: construct property handling fixes/improvements.
        fixed trailer handling in get/set property.

        * gparam.[hc]: implement param spec pool, got rid of param spec
        hashtable. the most prominent change is that e deal with type
        prefixes here.
2000-12-13 00:44:18 +00:00
Tim Janik
e773d7dba6 fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>

	* gboxed.c: fixed dealing with collection/lcopy of NULL values.

	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.

	* Makefile.am: cleanups, marshaller generation rules.

	* gmarshal.[hc]: new files with GRuntime standard marshallers.

	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.

	* glib-genmarshal.1: reflect glib-genmarshal.c updates.

	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().

	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().

	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.

	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.

	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.

	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.

	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 07:32:00 +00:00
Havoc Pennington
40d62d0dd7 More convenient data-setting functions
2000-11-20  Havoc Pennington  <hp@redhat.com>

	* gobject.c (g_object_get_data)
	(g_object_set_data)
	(g_object_set_data_full)
	(g_object_steal_data): More convenient data-setting functions
2000-11-20 22:24:12 +00:00
Tim Janik
83c45024e3 fixed a bag full of subtle bugs of immensive screw-up potential in
Sun Nov  5 05:22:55 2000  Tim Janik  <timj@gtk.org>

        * gsignal.c:
        fixed a bag full of subtle bugs of immensive screw-up potential in
        handlers_find(), luckily no one found out about them yet ;)
        fixed signal_handlers_foreach_matched_R() so it operates on an
        initial handler list snapshot provided by handlers_find() to work
        around general reentrancy problems and to avoid multiple callback()
        invocations on the same handlers.
        this code is now officially 80% bug free (10% remaining for interface
        types, and 10% remaining for destroyed signals ;)

Sat Nov  4 02:01:33 2000  Tim Janik  <timj@gtk.org>

        * gsignal.c (_g_signals_destroy): valid signal nodes start out at 1.

        * gtypeplugin.[hc]: new files holding a GTypePlugin interface
        implementation that provides the API required by GType to deal with
        dynamically loadable types.

        * gtype.[hc]: displace any GTypePlugin business to gtypeplugin.h.
2000-11-05 05:07:26 +00:00
Tim Janik
3cc60a9ab1 prefix internal functions with '_'. renamed g_signal_connect_closure() to
Fri Nov  3 07:35:00 2000  Tim Janik  <timj@gtk.org>

        * gsignal.[hc]: prefix internal functions with '_'. renamed
        g_signal_connect_closure() to g_signal_connect_closure_by_id().
        added g_signal_parse_name() to retrive signal_id and detail quark
        from a signal name (internal).

Fri Nov  3 07:33:15 2000  Tim Janik  <timj@gtk.org>

        * gobject/gobject-docs.sgml: added &gobject-closures; section.

        * gobject/Makefile.am (tmpl_sources): add tmpl/clsoures.sgml

        * gobject/gobject-sections.txt: added Closure section.

        * gobject/tmpl/closures.sgml: new file with template description
        for GClosure functions.
2000-11-03 08:18:09 +00:00
Tim Janik
cfe0780d3e destroy all signals that the finalized obejct type introduced.
Wed Nov  1 03:36:54 2000  Tim Janik  <timj@gtk.org>

        * gobject.c (g_object_base_class_finalize): destroy all signals that
        the finalized obejct type introduced.

        * gsignal.c (g_signals_destroy): don't require itype to have
        signals.

        * gobject.c (g_object_do_finalize): make sure all signal handlers
        are destroyed.

        * gsignal.[hc]:
        (g_signal_handler_find): only match on non-0 masks.
        (g_signal_handlers_block_matched):
        (g_signal_handlers_unblock_matched):
        (g_signal_handlers_disconnect_matched): new functions to block/unblock
        or disconnect handlers in groups.
2000-11-01 03:03:04 +00:00
Tim Janik
c5695bf798 fixed notifier position for post_marshal guard which was off at 0.
Sat Oct 28 00:28:09 2000  Tim Janik  <timj@gtk.org>

        * gclosure.c (g_closure_add_marshal_guards): fixed notifier position
        for post_marshal guard which was off at 0.

Fri Oct 27 21:49:31 2000  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: doh, fix argument order in for
        g_cclosure_new_object_swap and g_cclosure_new_object.
2000-10-27 22:28:01 +00:00
Tim Janik
1e23d8a9bc ri Oct 27 05:35:14 2000 Tim Janik <timj@gtk.org>
* gobject.c (g_object_watch_closure): fixed realloc bug, reported
                by havoc.
2000-10-27 04:19:34 +00:00
Tim Janik
ee23c09e83 added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000  Tim Janik  <timj@gtk.org>

        * glib-object.h: added newly added gobject/ headers.

        * gmesage.c: print g_message() output to stderr instead of stdout.

Wed Oct 25 20:27:02 2000  Tim Janik  <timj@gtk.org>

        * gtype.c (g_type_free_instance): for the moment, freeing object
        structures will fill their memory portion with 0xAA. there's a
        FIXME there, remove this line at a later point.

Tue Oct 24 23:10:26 2000  Tim Janik  <timj@gtk.org>

        * glib-genmarshal.1:
        * glib-genmarshal.c: added publically installed marshaller generator.

        * gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
        interface VTable from instances.

Mon Oct 23 08:28:15 2000  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: new functions for closure maintenance:
        (g_object_watch_closure): maintain validity of the object and
        the closure for objects that are used as data part of a closure.
        (g_cclosure_new_object): convenience function to create C closures
        that have an object as data argument.
        (g_closure_new_object): convenience function to create closures
        that have an object as data argument.

        * gclosure.[hc]: implementation of GClosure mechanism.
        a closure is basically an encapsulation of a callback function
        and its environment. ideally, most places supporting callback
        functions will simply take a GClosure* pointer and thus unify
        callback environments wrg destroy notification etc.
        GClosure provides destroy notifiers for arbitrary data pointers,
        reference counting, invalidation notification (it can be invalidated
        which is merely a deactivate state) and a marshallinbg abstraction.
        GCClosure is also provided in these files, they present a specialized
        GClosure implementation for C language callbacks.

        * genum.c: macro cleanups.

        * gboxed.[hc]: new files, for boxed type abstraction.
        (g_boxed_copy): copy a boxed structure
        (g_boxed_free): free a boxed structure
        (g_value_set_boxed):
        (g_value_get_boxed): standard GValue functions for boxed types
        (g_boxed_type_register_static): convenience function for easy
        introduction of new G_TYPE_BOXED derivatives.

        * gparam.[hc]: introduced g_param_type_register_static(), a short hand
        for creation of new GParamSpec derived types.

        * gtype.[hc]: many fixes, introduced ability to flag individual
        type nodes as ABSTRACT upon registration, added value_peek_pointer()
        to the value table to peek at GValue contents as a pointer for types
        that support this. fixed up GValue checks.

        * gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
        to peek at the value contents as pointer.

        * *.[hc]: adaptions to type macro fixes and changes in the type
        registration API.

        * many const corrections over the place.

Sat Oct 21 02:49:56 2000  Tim Janik  <timj@gtk.org>

        * gtype.c (g_type_conforms_to): this function basically behaves like
        and is_a check, except that it _additionally_ features interfaces
        for instantiatable types. enforce this in the second branch as well
        (`type' conforms_to `type') even if `type' is not an interface type.

Fri Oct 20 15:31:04 2000  Tim Janik  <timj@gtk.org>

        * gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.

        * gtype.[hc]:
        * gobject.c:
        * gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
        suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
        and G_TYPE_POINTER.

Mon Aug 21 04:13:37 2000  Tim Janik  <timj@gtk.org>

        * gbsearcharray.[hc]: long standing needed generic implementation
        of a binary searchable, sorted and dynamically sized array.
2000-10-25 20:36:35 +00:00
Jonathan Blandford
b3ee868f94 Added function to keep symetry with g_node_insert_before. 2000-09-29
2000-09-29  Jonathan Blandford  <jrb@redhat.com>

	* gnode.c (g_node_insert_after): Added function to keep symetry
	with g_node_insert_before.
2000-09-29  Jonathan Blandford  <jrb@redhat.com>

	* glib/tmpl/trees-nary.sgml: Add g_node_insert_after().
2000-09-29 23:13:02 +00:00
Martin Baulig
f7ffcb3a92 Several minor ANSI C fixes.
2000-09-29  Martin Baulig  <baulig@suse.de>

	Several minor ANSI C fixes.

	Added missing casts:
	* gtype.c (type_class_init): `(gpointer) bnode->data->class.class_init_base'
	in call to g_slist_prepend() and
	'GBaseInitFunc class_init_base = (GBaseInitFunc) slist->data'.

	* gobject.c: Put text following #endif into comments.
2000-09-29 13:40:21 +00:00
Owen Taylor
25c1ae6c11 Move call to g_type_free_instance() here from g_object_do_finalize, since
Sat Sep  9 20:04:13 2000  Owen Taylor  <otaylor@redhat.com>

	* gobject.c (g_object_last_unref): Move call to
	g_type_free_instance() here from g_object_do_finalize,
	since g_type_free_instance() can unload the object's
	implementation.
2000-09-10 16:01:15 +00:00
Tor Lillqvist
d33887428e No, don't mark glib_debug_objects for export here, it's handled specially
2000-07-27  Tor Lillqvist  <tml@iki.fi>

	* gobject.c: No, don't mark glib_debug_objects for export here,
	it's handled specially in gtktypeutils.c.

	* gobject.def: Export g_type_fundamental_last (the function).
2000-07-27 05:31:12 +00:00
Tor Lillqvist
f0cdf86878 gobject.def Mark glib_debug_objects for export/import as it is used by
2000-07-26  Tor Lillqvist  <tml@iki.fi>

	* gobject.def
	* gobject.c: Mark glib_debug_objects for export/import as it is
	used by GTK+.
2000-07-26 15:33:50 +00:00
Owen Taylor
ae13475277 dist fixes.
Thu Jul  6 15:30:27 2000  Owen Taylor  <otaylor@redhat.com>

	* Makefile.am (EXTRA_DIST): dist fixes.

	* gobject.c: Add a global variable glib_debug_objects
	(not in header file) to control object tracing.
2000-07-06 20:18:12 +00:00
Owen Taylor
6bbcc10e8d include string.h for memset include string.h for strcpy include string.h
Thu Jun 29 16:02:07 2000  Owen Taylor  <otaylor@redhat.com>

	* gobject.c:include string.h for memset
	* genums.h: include string.h for strcpy
	* gvalue.c: include string.h for memset, memcpy.
2000-06-29 20:02:39 +00:00
Tim Janik
09f8e937f2 define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000  Tim Janik  <timj@gtk.org>

        * glib.h: define gstring in terms of gchar*. this typedef reflects
        the type name of the primitive G_TYPE_STRING in the gobject module.

Sat Jun 24 23:03:04 2000  Tim Janik  <timj@gtk.org>

        * gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
        G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
        G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
        added a GTypeValueTable* pointer to GTypeInfo structure for types
        to implement GValue handling functions.
        GTypeValueTable contains the following members:
          value_init(): initialize a GValue structure.
          value_free(): free GValue structure contents (optional).
          value_copy(): copy one GValue contents to another GValue structure of
          collect_type: varargs collection type for the first variable argument
          to be collected by collect_value().
          collect_value(): variable arguments collection function (optional).
          lcopy_type: varargs collection type for the first variable argument
          to be location copyied by lcopy_value().
          lcopy_value(): variable arguments location copy function (optional).
        g_type_value_table_peek(): new function to retrive the GTypeValueTable*
        for a type node. ValueTables get inherited from parent types, unless
        overridden through the GTypeInfo structure. internally, GTypeValueTable
        support means an added overhead of one pointer per static or used
        dynamic type node.
        g_type_add_class_cache_func(): provide a cache_func/data pair to be
        called  prior to a type nodes last_unref() function, this can be used
        to prevent premature class destruction. multiple installed cache_func()
        will be chained upon last_unref() untill one of them returns TRUE.
        the cache_func()s have to check the type id passed in to figure whether
        they actually wants to cache the class of this type (since any types are
        routed through the cache_func() chain).
        g_type_remove_class_cache_func(): remove a previously installed
        cache_func/data pair. the cache maintained by this function has to be
        clear when calling g_type_remove_class_cache_func() to avoid leaks.
        g_type_class_unref_uncached(): class unref function for cache_func()
        implementations, unreferences a class omitting the cache chain (and
        therefore unref->cache->unref->... loops).

        * gvaluetypes.[hc]: provide the value setters/getters for the primitive
        fundamental types boolean, char, uchar, int, uint, long, ulong, float,
        double and string.

        * gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
        GTypeValueTable is provided for this type.
        removed g_value_init_default(), g_value_validate(), g_value_defaults(),
        g_value_set_default() and g_values_cmp() as these are supplied by the
        GParamSpec API now.
        moved g_values_exchange() into the "implementation details" section,
        since it just provides the underlying functionality for
        g_value_convert().

        * gvaluecollector.h: renamed the varargs value container from
        GParamCValue to GTypeCValue as the value collection methods are
        supplied by the type system now.
        G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
        G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
        GParamSpec structure now.

        * genums.h: macros cleanups/fixes.

        * genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
        and assorted g_value_{s|g}et_{enum|flags}() implementations.

        * gobject.[hc]:
        provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
        and g_value_{s|g}et_object().

        * gparam.[hc]: reduced class to value_set_default(),
        value_validate() and values_cmp(). also parameters now need to fill
        in a GType value_type; field to indicate the GValue type they
        are handling. provide g_param_value_set_default(),
        g_param_value_defaults(), g_param_value_validate() and
        g_param_values_cmp().

        * gparamspecs.[hc]: got rid of the g_value_* functions and
        the G_IS_VALUE_* macros. adapted param spec implementations
        according to the GParamSpecClass changes.
2000-06-24 22:30:10 +00:00
Tim Janik
397ad5881e add reserved fundamental ids for gtk types (for transition time). added
Fri May  5 01:15:48 2000  Tim Janik  <timj@gtk.org>

	* gtype.h: add reserved fundamental ids for gtk types (for transition
	time). added G_TYPE_FUNDAMENTAL_MAX for gtk.

Mon Apr 17 20:45:50 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
	n_params prior to destructing them.

Tue Apr 11 04:28:10 2000  Tim Janik  <timj@gtk.org>

	* fixed a couple of bugs in the initial parameter/object
	implementations, after getting beast running on GObject and GValue.

Fri Apr  7 04:27:49 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.[hc]: completed parameter set/get implementations,
	along with asyncronous parameter changed notification queue.

Sun Apr  2 04:54:36 2000  Tim Janik  <timj@gtk.org>

	* glib-gobject.[hc]: GObject implementation, that is facilities
	for setting/getting quarked data and reference counting.

	* glib-gparamspecs.[hc]: first actuall parameter implementations
	for GLib, so far we have: char, uchar, bool, int, uint, long,
	ulong, enum, flags, float, double, string and object. each of these
	GParamSpecs is a new instantiatable type in its own respect,
	so the .c file derives 13 new types from G_TYPE_PARAM and
	defines over 50 (*2) conversion facilities.

	* glib-gvaluecollector.h: generic varargs handling stubs for
	GParamSpecs, private header file (does get installed for
	inclusion into user code though).

	* glib-gvalue.[hc]: GValue functionality implementation.

	* glib-gparam.[hc]: basis GParamSpec implementation for
	the virtual base type G_TYPE_PARAM.

        * glib-genums.[hc]: enum/flags type implementation, based on
	bseenum.[hc].

	* glib-extra.[hc]: GLib additions, including 1.3 compatibility
	routines and various other functions, from string manipulation
	over list manipulation up to a unix signal GSource.

	* glib-gtype.[hc]: GLib Type System implementation, heavily
	based on BSE's dynamic type system.
2000-05-12 15:22:31 +00:00