Commit Graph

87 Commits

Author SHA1 Message Date
Sebastian Dröge
41383b303c Bug 612502 - Add support for class private data
This adds the two new functions g_type_add_class_private()
and g_type_class_get_private() and a convenience macro
for the getter G_TYPE_CLASS_GET_PRIVATE().
2010-03-17 15:11:00 +01:00
Javier Jardón
dba6cef3c9 [docs] Fix G_DEFINE_INTERFACE "Since" tag
This symbol is available since Glib 2.24, not 2.20.
2009-12-21 23:07:13 +01:00
Javier Jardón
9917024949 G_DEFINE_INTERFACE_* documentation is not generated
Fix the documentation: Replace "@Since:" with "Since:"

https://bugzilla.gnome.org/show_bug.cgi?id=604645
2009-12-19 02:17:33 +01:00
Dan Winship
91d96350a7 Add G_DEFINE_INTERFACE
This is a macro similar to G_DEFINE_TYPE but it lets you define
interfaces rather than classes.

For discussion, see bug #320482
2009-12-01 10:44:42 +01:00
Edward Hervey
68b1ca0443 gobject/gtype.h: Fix _G_TYPE_CVH macro. Fixes #597194
If __val doesn't exist, we shouldn't do any other checks.
2009-10-03 16:17:17 +02:00
Matthias Clasen
8b3853b8a1 Reduce false positives in static analysis
Tools like clang fail to recognize that stanzas like
g_return_if_fail (GTK_IS_FOO (w)) guarantee w != NULL. By minimally
rewriting the type-checking macros, we can avoid these false positives.
2009-09-18 19:20:06 -04:00
Matthias Clasen
e68a35689f Fix G_DEFINE_TYPE_EXTENDED docs
Make the docs for G_DEFINE_TYPE_EXTENDED match the actual
definition of the macro.  (#577985)
2009-04-09 14:56:49 -04:00
Tor Lillqvist
e5e4f8bca3 gtype.h Revert my change from 2008-07-24. No G_TYPE_FORMAT is needed. Just
2008-07-27  Tor Lillqvist  <tml@novell.com>

	* gtype.h
	* gtype.c: Revert my change from 2008-07-24. No G_TYPE_FORMAT is
	needed. Just use G_GSIZE_FORMAT always when printing GType values.


svn path=/trunk/; revision=7256
2008-07-27 15:58:48 +00:00
Tor Lillqvist
b46641eab2 Define G_TYPE_FORMAT as the printf format for a GType value. Either
2008-07-24  Tor Lillqvist  <tml@novell.com>

	* gtype.h: Define G_TYPE_FORMAT as the printf format for a GType
	value. Either G_GSIZE_FORMAT or "lu".

	* gtype.c: Use it instead of the C99 zu.


svn path=/trunk/; revision=7250
2008-07-24 01:11:52 +00:00
Matthias Clasen
7df58dc393 Fix a typo
svn path=/trunk/; revision=7244
2008-07-23 17:04:36 +00:00
Stefan Kost
ac94781e28 Move some content for gobject-unused.sgml and cleared empty entries. The
* docs/reference/gobject/tmpl/gobject-unused.sgml:
	* gobject/gobject.h:
	* gobject/gtype.c:
	* gobject/gtype.h:
	  Move some content for gobject-unused.sgml and cleared empty entries.
	  The remaining 4 ones should be checked by some else. If they are not
	  needed. The file can be removed.


svn path=/trunk/; revision=7087
2008-06-22 10:10:59 +00:00
Stefan Kost
f22d19fc34 Add --sgml-mode to allow sgml in doc-fragments (which somehow works before
* docs/reference/gobject/Makefile.am:
	  Add --sgml-mode to allow sgml in doc-fragments (which somehow works
	  before already).
	* gobject/gboxed.h:
	* gobject/gclosure.c:
	* gobject/gparam.c:
	* gobject/gparam.h:
	* gobject/gtype.h:
	  Convert character entities back. FIx some broken sgml.


svn path=/trunk/; revision=7078
2008-06-21 17:25:17 +00:00
Stefan Kost
005be9980a Migrating docs.
* docs/reference/gobject/tmpl/gtype.sgml:
	* gobject/gtype.c:
	* gobject/gtype.h:
	* gobject/gvaluetypes.h:
	  Migrating docs.


svn path=/trunk/; revision=7075
2008-06-21 16:14:18 +00:00
Stefan Kost
0b9bf79ec2 Migrating docs.
* docs/reference/gobject/tmpl/generic_values.sgml:
	* gobject/gboxed.h:
	* gobject/gtype.h:
	* gobject/gvalue.c:
	* gobject/gvalue.h:
	* gobject/gvaluetypes.c:
	  Migrating docs.


svn path=/trunk/; revision=7071
2008-06-21 12:45:49 +00:00
Tim Janik
3bdefad44a use g_once_init_enter/g_once_init_leave to guard critical initialization
Tue Jul 10 12:31:50 2007  Tim Janik  <timj@imendio.com>

        * gtype.h: use g_once_init_enter/g_once_init_leave to guard critical
        initialization section of *_get_type implementations in G_DEFINE_TYPE,
        bug #65041.



svn path=/trunk/; revision=5618
2007-07-10 10:33:03 +00:00
Tim Janik
ea4efd7bba reintroduce typedef gulong GType; for C++, to avoid C++ specific ABI
Fri Jun 22 11:31:27 2007  Tim Janik  <timj@gtk.org>

        * gtype.h: reintroduce typedef gulong GType; for C++, to avoid
        C++ specific ABI breakage.



svn path=/trunk/; revision=5582
2007-06-22 09:34:33 +00:00
Tim Janik
71a9fa9879 always define GType unconditionally in terms of gsize, there's no need to
Thu Jun 14 23:32:00 2007  Tim Janik  <timj@gtk.org>

        * gtype.h: always define GType unconditionally in terms of gsize,
        there's no need to jump through a glong hoop ever and this fixes
        the printf modifier to %zu.



svn path=/trunk/; revision=5560
2007-06-14 21:55:41 +00:00
Matthias Clasen
793da74d00 Move the compiler-dependency in the G_GNUC_INTERNAL definition from
2007-05-17  Matthias Clasen  <mclasen@redhat.com>

        * configure.in: Move the compiler-dependency in the G_GNUC_INTERNAL
        definition from configure-time to runtime (of the compiler).
        (#438869, Damien Carbery)

        * glib/gdebug.h:
        * glib/gmessages.h:
        * glib/gunicodeprivate.h:
        * glib/gthreadprivate.h: Move G_GNUC_INTERNAL before function
        declarations to fix compilation with sun studio.  (#438873,
        Damien Carbery)


svn path=/trunk/; revision=5497
2007-05-17 16:36:53 +00:00
Tim Janik
add62500f7 marked purely functional g_type accessors as PURE or CONST, closes
Mon Mar 12 13:30:20 2007  Tim Janik  <timj@gtk.org>

        * gtype.h: marked purely functional g_type accessors as PURE or CONST,
        closes #305100.



svn path=/trunk/; revision=5400
2007-03-12 12:28:56 +00:00
Tim Janik
b6a3cd8039 applied patch from Behdad with slight optimization, fixes #356175.
Fri Sep 22 13:41:02 2006  Tim Janik  <timj@imendio.com>

        * gtype.h: applied patch from Behdad with slight optimization,
        fixes #356175.

        * gobjectnotifyqueue.c: fixed include-guard macro name.
2006-09-22 12:06:28 +00:00
Tim Janik
4c6e514add turn off compiler warnings, #337129.
Tue May 16 14:01:43 2006  Tim Janik  <timj@imendio.com>

        * gtype.h (G_IMPLEMENT_INTERFACE): turn off compiler warnings, #337129.
2006-05-16 12:02:29 +00:00
Tim Janik
f2649abe84 split up G_DEFINE_*TYPE macro definitions so C CODE arguments are not
Tue May  2 14:51:03 2006  Tim Janik  <timj@gtk.org>

        * gtype.h: split up G_DEFINE_*TYPE macro definitions so C CODE arguments
        are not passed on to nested macro calls. patch mostly courtesy of Behdad
        Esfahbod, fixes #337128.
2006-05-02 13:00:52 +00:00
Matthias Clasen
68eaeb69cb Fix some problems with my last commit 2006-04-23 04:21:08 +00:00
Matthias Clasen
2e57b11a94 Add g_type_register_static_simple 2006-04-21 16:53:02 +00:00
Michael Natterer
e02b163efd revert last change, it breaks all users of G_IMPLEMENT_INTERFACE() inside
2005-09-28  Michael Natterer  <mitch@gimp.org>

	* gtype.h (G_IMPLEMENT_INTERFACE): revert last change, it breaks
	all users of G_IMPLEMENT_INTERFACE() inside
	G_DEFINE_TYPE_WITH_CODE(), since apparently GCC doesn't like
	commas enclosed in {}, not (), in nested macro calls.
2005-09-27 23:19:16 +00:00
David Odin
31659726ea initialize all the fields of GInterfaceInfo in the G_IMPLEMENT_INTERFACE
* gobject/gtype.h: initialize all the fields of GInterfaceInfo in the
  G_IMPLEMENT_INTERFACE macro, to shut up a warning when compiling at -W
2005-09-26 18:35:32 +00:00
Matthias Clasen
3a151501cc Intern type name before registering the type.
2005-08-31  Matthias Clasen  <mclasen@redhat.com>

	* gtype.h (G_DEFINE_TYPE_EXTENDED): Intern type name
	before registering the type.
2005-08-31 14:49:20 +00:00
Matthias Clasen
481fe81c06 Rename first parameter to check_data, since apparently the system headers
2004-10-23  Matthias Clasen  <mclasen@redhat.com>

	* gtype.h (GTypeInterfaceCheckFunc): Rename first parameter to
	check_data, since apparently the system headers on AIX leak a
	macro named func_data.  (#155178, Andrea Campi)
2004-10-24 01:22:30 +00:00
Matthias Clasen
88e7569e65 Add ABI control using the same technique that is used in GTK+.
2004-09-16  Matthias Clasen  <mclasen@redhat.com>

	Add ABI control using the same technique that is used in GTK+.

	* gobject.symbols: Master list of symbols.

	* gobject.def: Removed. It is now generated from gobject.symbols.

	* Makefile.am (gobject.def): Generate from gobject.symbols.
	(TESTS): Add abicheck.sh
	(EXTRA_DIST): Add abicheck.sh
	(export_symbols): Don't export _-prefixed symbols.

	* gtype.h:
	* gtype.c: Move the declarations of the various _init() functions
	to the header, and mark them as G_GNUC_INTERNAL.
2004-09-16 18:33:02 +00:00
Matthias Clasen
ef9a178b8e Add an initializer for the g_define_type_info.value_table.
Wed Jun 23 12:55:34 2004  Matthias Clasen  <maclas@gmx.de>

	* gtype.h (G_DEFINE_TYPE_EXTENDED): Add an initializer for
	the g_define_type_info.value_table.  (#144678,Mariano
	Suárez-Alvarez)
2004-06-23 16:56:48 +00:00
Tim Janik
b183ffc5ed added (GTypeFlags) cast needed by C++.
Fri Feb 20 02:44:54 2004  Tim Janik  <timj@gtk.org>

        * gtype.h (G_DEFINE_TYPE_EXTENDED): added (GTypeFlags) cast needed by C++.
2004-02-20 01:47:26 +00:00
Tim Janik
999a87a19a provide a short-cut version for this macro in case
Tue Feb  3 21:24:01 2004  Tim Janik  <timj@gtk.org>

        * gtype.h (_G_TYPE_CVH): provide a short-cut version for
        this macro in case value->g_type==checked_type for gcc, similar
        to instance and class check short-cuts. this speeds up code that
        makes frequent use of G_VALUE_HOLDS_*() (e.g. setters/getters).

        * gtype.c (type_data_last_unref_Wm): don't call class-cache functions
        for the uncached case, this rendered g_type_class_unref_uncached()
        useless. pointed out by Stefan Westerfeld.
2004-02-03 20:30:23 +00:00
Tim Janik
82744debfe prefixed the parent_class variable defined by G_DEFINE_TYPE() with
Sat Jan 24 18:20:13 2004  Tim Janik  <timj@gtk.org>

        * gtype.h: prefixed the parent_class variable defined by G_DEFINE_TYPE()
        with type_name. removed type_parent_class argument
        from G_DEFINE_TYPE_EXTENDED().
2004-01-24 17:23:52 +00:00
Tim Janik
93ec5cfa66 made G_DEFINE_TYPE_INTERNAL() public by renaming it to
Sat Jan 10 02:43:20 2004  Tim Janik  <timj@gtk.org>

        * gtype.h: made G_DEFINE_TYPE_INTERNAL() public by renaming it to
        G_DEFINE_TYPE_EXTENDED() and moving it into the appropriate section.
2004-01-10 01:46:23 +00:00
Tim Janik
ba482c66c3 added convenience macros G_IMPLEMENT_INTERFACE() and G_DEFINE_TYPE() plus
Fri Jan  9 15:34:15 2004  Tim Janik  <timj@gtk.org>

        * gtype.h: added convenience macros G_IMPLEMENT_INTERFACE() and
        G_DEFINE_TYPE() plus variants.
2004-01-09 14:40:31 +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
1083b5a43d Add g_type_add/remove_interface_check(), which allows inserting a
Thu Oct  2 01:16:50 2003  Owen Taylor  <otaylor@redhat.com>

        * gtype.[ch]: Add g_type_add/remove_interface_check(),
        which allows inserting a post-interface-initialization
        check.

        * testgobject.c: Fix a deprecated usage.
2003-10-02 05:24:21 +00:00
Owen Taylor
2aa3d50768 Add g_type_default_interface_ref/peek/unref for accessing the default
Mon Sep 29 10:51:01 2003  Owen Taylor  <otaylor@redhat.com>

        * gtype.[ch]: Add g_type_default_interface_ref/peek/unref
        for accessing the default vtable of an interface.
2003-09-29 14:52:42 +00:00
Tim Janik
558507bc5a added support for a "default vtable" per interface, that interface vtables
Tue Sep  2 19:37:21 2003  Tim Janik  <timj@gtk.org>

        * gtype.[hc]: added support for a "default vtable" per interface,
        that interface vtables are initialized from.
        the default vtable is initialized and finalized through class_init,
        class_finalize and class_data from the interfaces GTypeInfo struct.
        (type_data_last_unref_Wm): unload child plugin before unreffing
        parent type.

        testifaceinit.c: minor fixups. fixed up base_init() assertions, since
        with a default vtable, base_init() may be called multiple times.
        added default initializer to iface1.
2003-09-02 17:57:22 +00:00
Owen Taylor
c2a431c894 Add support for instance-private data. g_type_class_add_private(),
Thu Feb 27 17:33:19 2003  Owen Taylor  <otaylor@redhat.com>

        * gtype.[ch] testgobject.c: Add support for instance-private data.
        g_type_class_add_private(), g_type_instance_get_private(),
        G_TYPE_INSTANCE_GET_PRIVATE(). (#101959, patch partly by
        Mark McLoughlin, extensive feedback from Tim Janik.)
2003-03-10 16:41:28 +00:00
Matthias Clasen
6df677db74 Sync parameter names with docs and implementation.
* gsignal.h (g_signal_add_emission_hook):
	* gtype.h (g_type_interface_get_plugin): Sync parameter names with
	docs and implementation.

	* gtype.c (g_type_add_interface_dynamic):
	(g_type_interface_get_plugin):
	(g_type_interface_peek_parent):
	(g_type_query): Add docs.

	* gobject/tmpl/gtype.sgml: Add docs.

	* gobject/tmpl/signals.sgml: Regenerated.
2002-12-03 23:54:55 +00:00
Matthias Clasen
1565a2027e Add g_type_interface_prerequisites. 2002-10-15 21:16:20 +00:00
Dom Lachowicz
3a109829a8 Fix problems with excessive C++ warnings: "ISO C++ forbids nested groups
Wed Sep 11 16:50:20 2002  Dom Lachowicz <cinamod@hotmail.com>

        * gtype.h: Fix problems with excessive C++ warnings: "ISO C++ forbids nested groups within expressions"
2002-09-12 04:03:54 +00:00
Tim Janik
530f899daa turn this into a GType, so negating it works on 64bit platforms.
Fri Jan  4 04:36:46 2002  Tim Janik  <timj@gtk.org>

        * gtype.h (G_TYPE_FLAG_RESERVED_ID_BIT): turn this into a GType,
        so negating it works on 64bit platforms.
2002-01-04 03:38:53 +00:00
Anders Carlsson
82fa2c0069 Set the reserved bit to (1 << 0) instead of (1 << 30).
2001-12-17  Anders Carlsson  <andersca@gnu.org>

	* gtype.h (G_TYPE_FLAG_RESERVED_ID_BIT): Set the reserved bit
	to (1 << 0) instead of (1 << 30).
2001-12-17 21:59:34 +00:00
Tim Janik
5c2f442088 typedef GType to gulong instead of gsize, if possible.
Mon Nov 26 09:55:12 2001  Tim Janik  <timj@gtk.org>

        * gtype.h: typedef GType to gulong instead of gsize, if possible.

        * gtype.c: fixups for GType being sizeof(long) wide (changed
        UINT casts).
        * gsignal.c:
        * gclosure.c:
        * gparam.c: likewise.
2001-11-26 09:18:55 +00:00
Tim Janik
5f04f01ff1 removed enum GTypeFundamentals. use macros to provide the constant
Sun Nov 25 22:33:32 2001  Tim Janik  <timj@gtk.org>

        * gtype.h: removed enum GTypeFundamentals. use macros
        to provide the constant fundamental type IDs, so they
        all return numbers of type GType, and not int.
        sizeof(GTypeFundamentals) < sizeof(GType) problem reported
        and fix sugegsted by Havoc.
2001-11-25 21:59:53 +00:00
Owen Taylor
e767aa0a4f Improve the detection of invalid includes by moving the test outside the
Mon Nov 19 14:35:56 2001  Owen Taylor  <otaylor@redhat.com>

        * *.h: Improve the detection of invalid includes by moving
        the test outside the duplicate include guards.

        * gsourceclosure.c (g_source_set_closure): Doc fix.
2001-11-22 18:55:06 +00:00
Tim Janik
aafb9e4ba9 use g_type_check_is_value_type() instead of g_type_value_table_peek().
Thu Nov 22 03:30:57 2001  Tim Janik  <timj@gtk.org>

        * gvalue.h (G_TYPE_IS_VALUE): use g_type_check_is_value_type()
        instead of g_type_value_table_peek().

        * gtype.[hc] (type_check_is_value_type_U): speed up check
        LOCK-less by caching lookups in node->mutatable_has_value_table.

        * gtype.[hc]: removed locks where possible. partly based on
        patches from owen and alex.
2001-11-22 03:20:07 +00:00
Tim Janik
0d14682569 provide G_TYPE_FUNDAMENTAL_SHIFT and g_type_fundamental_next() to return
Thu Nov 22 00:26:26 2001  Tim Janik  <timj@gtk.org>

        * gtype.[hc]: provide G_TYPE_FUNDAMENTAL_SHIFT and
        g_type_fundamental_next() to return next usable fundamental
        type. use TypeNode pointers as type IDs.
2001-11-21 23:48:19 +00:00