39 Commits

Author SHA1 Message Date
Emmanuele Bassi
38e2273207 Add G_GNUC_DEPRECATED_FOR macro
It would be good, error reporting-wise, to be able to signal which
function should be used instead of a deprecated one. GCC 4.5 added an
optional "message" payload to the deprecated attribute, so that:

  void f1 (void) __attribute__((deprecated("Use f2 instead")));

Will expand to:

  warning: f1 is deprecated: Use f2 instead

Instead of just printing:

  warning: f1 is deprecated

Since we already have a G_GNUC_DEPRECATED macro we should provide a
G_GNUC_DEPRECATED_FOR macro defined as:

  G_GNUC_DEPRECATED_FOR(bar)

Which would expand the deprecation message to "Use bar instead"
automatically. The deprecation message should probably be similar
to what we use in gtk-doc to match up with the documentation.

https://bugzilla.gnome.org/show_bug.cgi?id=614965
2010-04-23 15:26:49 +01:00
Matthias Clasen
ed6c7f0e32 Use offsetof instead of __builtin_offsetof, for icc's sake. Proposed by
* glib/gmacros.h (G_STRUCT_OFFSETOF): Use offsetof instead of
        __builtin_offsetof, for icc's sake. Proposed by Hrvoje Niksic.



svn path=/trunk/; revision=7811
2009-01-18 01:03:00 +00:00
16:11:14 Tim Janik
0ffa76b9e9 added G_PASTE() and G_STATIC_ASSERT(), based on patches by Christian
2008-10-29 16:11:14  Tim Janik  <timj@gtk.org>

        * glib/gmacros.h: added G_PASTE() and G_STATIC_ASSERT(), based on
        patches by Christian Persch and Christian Dywan. Fixes:
        Bug 558381 - Add support for compile time assertions


svn path=/trunk/; revision=7633
2008-10-29 15:14:06 +00:00
Matthias Clasen
0b890c6298 Bug 551228 – G_STRFUNC on recent Sun compiler should be expanded to
2008-09-09  Matthias Clasen  <mclasen@redhat.com>

        Bug 551228 – G_STRFUNC on recent Sun compiler should be expanded to
        __func__ rather than '???'

        * glib/gmacros.h: Don't use glibconfig.h defines in gmacros.h,
        as the comment up top says. Instead look at __STDC_VERSION__.
        Problem reported by Lin Ma.


svn path=/trunk/; revision=7451
2008-09-10 03:21:42 +00:00
Sebastian Dröge
8013b215cd Bug 531900 – Use __builtin_offsetof for G_STRUCT_OFFSET if building
with gcc 4.0 or newer
* glib/gmacros.h: Use __builtin_offsetof for G_STRUCT_OFFSET if
building with gcc 4.0 or newer.

svn path=/trunk/; revision=6996
2008-06-11 07:37:45 +00:00
10:49:37 Tim Janik
0782d697e5 implement G_STMT_START and G_STMT_END with do{}while(0), which is believed
2008-05-22 10:49:37  Tim Janik  <timj@imendio.com>

        * glib/gmacros.h: implement G_STMT_START and G_STMT_END with
        do{}while(0), which is believed to be widely portable, fixes:
        Bug 519026 - G_STMT_START/G_STMT_END test a non-existent preprocessor symbol



svn path=/trunk/; revision=6922
2008-05-22 08:53:15 +00:00
Michael Natterer
e0aa9d8a61 #define __GLIB_H_INSIDE__ around including everything.
2008-05-05  Michael Natterer  <mitch@imendio.com>

	* glib/glib.h: #define __GLIB_H_INSIDE__ around including
	everything.

	* glib/*.h: check for that define instead of __G_LIB_H__ if
	G_DISABLE_SINGLE_INCLUDES is defined.

	* glib/gdatasetprivate.h: #include <glib.h> instead of
	<glib/gdataset.h>


svn path=/trunk/; revision=6875
2008-05-05 15:02:15 +00:00
Matthias Clasen
2af49e60a1 Add macros wrapping the gcc alloc_size function attribute. (#523019,
2008-03-30  Matthias Clasen  <mclasen@redhat.com>

        * glib/gmacros.h: Add macros wrapping the gcc alloc_size
        function attribute.  (#523019, Rodrigo Moya)

        * glib/gmem.h:
        * glib/gslice.h:
        * glib/gstrfuncs.h: Use the new attribute where appropriate.



svn path=/trunk/; revision=6781
2008-03-31 04:17:22 +00:00
Michael Natterer
f4bb21aa1d make it possible to disable single-file includes by defining
2008-03-14  Michael Natterer  <mitch@imendio.com>

	* glib/*.h: make it possible to disable single-file includes by
	defining G_DISABLE_SINGLE_INCLUDES when building against GLib.
	Approved by Tim Janik.

	* glib/glib.h: include <glib/gslice.h>.

	* glib/gi18n.h
	* glib/gi18n-lib.h
	* glib/gprintf.h: include <glib.h> so the above works when these
	files are included without including <glib.h> first.


svn path=/trunk/; revision=6713
2008-03-14 19:30:38 +00:00
Matthias Clasen
7bfc60de2e Deprecate G_GNUC_(PRETTY)_FUNCTION.
2008-01-27  Matthias Clasen  <mclasen@redhat.com>

        * glib/gmacros.h: Deprecate G_GNUC_(PRETTY)_FUNCTION.



svn path=/trunk/; revision=6389
2008-01-27 23:42:33 +00:00
Tim Janik
6cf97938ec added G_GNUC_MAY_ALIAS, suggested by Mathias Hasselmann in bug #335341,
Wed Nov 22 16:09:13 2006  Tim Janik  <timj@gtk.org>

        * glib/gmacros.h: added G_GNUC_MAY_ALIAS, suggested by Mathias
        Hasselmann in bug #335341, fixes bug #335853.
2006-11-22 15:54:58 +00:00
Matthias Clasen
00f952f8e8 Add a macro to make gcc warn if a function result is ignored. (#145466,
2005-12-04  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmacros.h (G_GNUC_WARN_UNUSED_RESULT): Add a macro
	to make gcc warn if a function result is ignored.  (#145466,
	Arjan van de Ven, Alex Larsson)

	* glib/gmem.h: Add the new attribute to g_realloc and
	g_try_realloc.
2005-12-04 06:41:58 +00:00
Matthias Clasen
6796398522 Fix G_STMT_START / G_STMT_END on Solaris. (#321972, Andrew Paprocki)
2005-11-28  Matthias Clasen  <mclasen@redhat.com>

        Fix G_STMT_START / G_STMT_END on Solaris.  (#321972,
        Andrew Paprocki)

        * configure.in: Check whether do { } while (0) works.

        * glib/gmacros.h: Use do { } while (0) for G_STMT_START /
        G_STMT_END if it works.
2005-11-30 04:54:57 +00:00
Matthias Clasen
6aac5ce82c Define G_GNUC_NULL_TERMINATED. (#164706, Marc Meissner)
2005-03-08  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmacros.h: Define G_GNUC_NULL_TERMINATED.
	(#164706, Marc Meissner)

	* glib/gstrfuncs.h:
	* glib/gfileutils.h: Use G_GNUC_NULL_TERMINATED where
	appropriate.
2005-03-08 05:41:45 +00:00
Matthias Clasen
8f0d5d169e Define empty for gcc 2.95.
2004-11-29  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.

	* glib/gmarkup.c (unescape_text_state_after_charref_hash):
	Avoid a strndup() here, noticed by Morten Welinder.
2004-11-29 14:50:47 +00:00
Matthias Clasen
379e87466d Mark functions with G_GNUC_MALLOC when appropriate.
2004-11-28  Matthias Clasen  <mclasen@redhat.com>

	* glib/gconvert.h:
	* glib/gkeyfile.h:
	* glib/gmem.h:
	* glib/gstrfuncs.h:
	* glib/gunicode.h:
	* glib/gutils.h: Mark functions with G_GNUC_MALLOC when appropriate.

	* glib/glib.symbols: Add G_GNUC_MALLOC annotations.

	* glib/gmacros.h (G_GNUC_MALLOC): Add a macro for
	__attribute__((__malloc__)).  (#61780)
2004-11-28 19:12:04 +00:00
Matthias Clasen
3156c8e9cf Remove G_GNUC_INTERNAL from here. Check whether the visibility attribute
2004-08-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmacros.h: Remove G_GNUC_INTERNAL from here.
	* configure.in: Check whether the visibility attribute
	works and define G_HAVE_GNUC_VISIBILITY and
	G_GNUC_INTERNAL in glibconfig.h correspondingly.
2004-08-10 18:52:30 +00:00
Matthias Clasen
e02c68bef0 Define empty if gcc is too old.
Mon Aug  9 17:37:56 2004  Matthias Clasen  <maclas@gmx.de>

	* glib/gmacros.h (G_GNUC_INTERNAL): Define empty if gcc is too old.
2004-08-09 21:39:39 +00:00
Matthias Clasen
f1024215a4 Add a G_GNUC_INTERNAL macro to mark function declarations as internal and
2004-08-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
	declarations as internal and avoid PLT indirections for
	them.  (#145465, Arjan van de Ven)

	* glib/gunicodeprivate.h:
	* glib/gthreadinit.h:
	* glib/gmessages.h:
	* glib/gdebug.h:
	* glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
	_g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
	_g_messages_thread_init(), _g_convert_thread_init(),
	_g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
	_g_mem_thread_private_init(), _g_messages_thread_private_init(),
	_g_utf8_normalize_wc() and _g_unichar_combining_class().

	* glib/gatomic.c: Include gthreadinit.h here to see the declaration
	for _g_atomic_thread_init().
2004-08-02 15:34:30 +00:00
Owen Taylor
2f11709f3b Add __extension__ to G_STMT_START to quite gcc -pedantic. (#131899,
Sat Mar 13 23:30:53 2004  Owen Taylor  <otaylor@redhat.com>

        * glib/gmacros.h (G_STMT_START): Add __extension__
        to G_STMT_START to quite gcc -pedantic. (#131899,
        Olivier Biot)
2004-03-14 04:36:04 +00:00
Manish Singh
db16c1be2b change #elif with no expression to #else in G_STRFUNC definition. Thanks
Thu Dec 11 10:31:21 2003  Manish Singh  <yosh@gimp.org>

        * glib/gmacros.h: change #elif with no expression to #else in
        G_STRFUNC definition. Thanks to Damien Carbery, fixes #129101.
2003-12-11 18:31:46 +00:00
Tim Janik
5d49a7caf7 handle NULL arguments gracefully.
Thu Nov 27 17:04:08 2003  Tim Janik  <timj@gtk.org>

        * glib/gstrfuncs.c (g_strconcat): handle NULL arguments
        gracefully.

        * glib/gmacros.h: defined G_STRFUNC, which (pretty) prints the
        current function (since G_STRLOC and G_GNUC_*FUNCTION became
        unusable with gcc-3.0).
2003-11-27 17:08:58 +00:00
Owen Taylor
614e5ed63a __PRETTY_FUNCTION__ was made a non-token before gcc-3.0.0 for C++. (Fix
Tue May 27 19:56:35 2003  Owen Taylor  <otaylor@redhat.com>

        * glib/gmacros.h: __PRETTY_FUNCTION__ was made a non-token
        before gcc-3.0.0 for C++. (Fix from Martin Kretzschmar,
        #113797)
2003-05-28 16:53:20 +00:00
Manish Singh
96670b2085 pull in trio if host printf doesn't have a known way of printing 64-bit
Thu Dec 12 14:58:55 2002  Manish Singh  <yosh@gimp.org>

        * configure.in: pull in trio if host printf doesn't have a known
        way of printing 64-bit ints.

        * glib/gmacros.h: remove extra whitespace at the end

        * glib/gscanner.c (g_scanner_unexp_token): use G_GUINT64_FORMAT
        instead of hardcoding "%llu"

        * tests/testglib.c: remove obsolete conditionals using G_HAVE_GINT64,
        we always have it now.

        * tests/type-test.c: same as above, and for G_G[U]INT64_FORMAT as
        well.
2002-12-12 22:59:55 +00:00
Matthias Clasen
00a9d30b67 Use G_LIKELY without surrounding parentheses in g_assert() and
* glib/gmessages.h: Use G_LIKELY without surrounding parentheses
	in g_assert() and g_return_[val]_if_fail() so that we always trigger
	the gcc warning about "assignment used as truth value".

	* glib/gmacros.h: Always put parentheses in G_LIKELY and G_UNLIKELY.
2002-11-27 18:50:34 +00:00
Matthias Clasen
b75a34b721 Fix the non-gcc-3.x definitions of G_LIKELY and G_UNLIKELY. (Reported by
* glib/gmacros.h: Fix the non-gcc-3.x definitions of G_LIKELY
	and G_UNLIKELY.  (Reported by Dan Mills)
2002-11-26 00:35:11 +00:00
Matthias Clasen
827f3c4fa4 Remove the (no longer effective) empty if-branch.
* glib/gmessages.h (g_assert):
	(g_return_if_fail):
	(g_return_val_if_fail): Remove the (no longer effective) empty
	if-branch.

	* glib/gmacros.h: Change the definition of G_LIKELY, so that
	g_return_if_fail() and friends still trigger a gcc warning if
	the expr is an assignment.
2002-11-25 21:34:16 +00:00
Owen Taylor
e62c0f4d36 Remove broken G_HIDDEN_SYMBOL definition which wasn't supposed to be
Fri Nov 22 09:39:09 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/gmacros.h: Remove broken G_HIDDEN_SYMBOL
        definition which wasn't supposed to be committed
        at all.
2002-11-22 14:41:06 +00:00
Owen Taylor
7d20e0c33e Add G_GNUC_DEPRECATED. (Tom Tromey, #87969)
Thu Nov 21 14:09:44 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,
        #87969)
2002-11-21 20:44:54 +00:00
Matthias Clasen
dc645ce354 Use G_LIKELY. (#69022)
* glib/gmessages.h (g_return_if_fail):
	(g_return_val_if_fail): Use G_LIKELY.  (#69022)

	* glib/gmacros.h (G_LIKELY):
	(G_UNLIKELY): New macros for hinting the compiler about the
	expected result of expressions. For gcc 3.x, define these
	using __builtin_expect.  (#69022)

	* glib/tmpl/macros_misc.sgml: Document G_LIKELY, G_UNLIKELY.

	* glib/glib-sections.txt: Add G_LIKELY, G_UNLIKELY.
2002-11-20 21:50:16 +00:00
Havoc Pennington
b19bcd9604 get rid of warning here
2002-01-28  Havoc Pennington  <hp@redhat.com>

	* glib/gmacros.h: get rid of warning here
2002-01-29 00:29:24 +00:00
Owen Taylor
8fece396e5 Only use __FUNCTION__, __PRETTY_FUNCTION__ for G_GNUC_FUNCTION,
Mon Jan 28 17:56:10 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/gmacros.h: Only use __FUNCTION__, __PRETTY_FUNCTION__ for
        G_GNUC_FUNCTION, G_GNUC_PRETTY_FUNCTION, G_STRLOC when __GNUC__ <
        3, since in 3.0.3 the semantics of these functions were changed in
        an incompatible way. (#69097)
2002-01-28 23:01:19 +00:00
Darin Adler
8c613d7d09 Do the same for "pure".
* glib/gmacros.h: Do the same for "pure".
2001-12-06 22:58:58 +00:00
Matthias Clasen
39e4c5afe8 The following patch corrects some function attributes. (#61780)
The following patch corrects some function attributes. (#61780)

        * glib/ghash.h (g_int_equal, g_int_hash): These are not const.

        * glib/glibintl.h (_glib_gettext): Add G_GNUC_FORMAT(1).

        * glib/gmacros.h: Use reserved symbols in function attribute macros.

        The following patch avoids manual printf()-format parsing
        if a C99-conforming vsnprintf() is available. (#55106)

        * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): New macro to test for a
        C99 conforming vsnprintf.

        * configure.in: Use AC_FUNC_VSNPRINTF_C99.

        * glib/gmessages.c (g_printf_string_upper_bound): Use C99 vsnprintf().
2001-12-06 22:37:05 +00:00
Tim Janik
3b6fd34af7 new macro.
Thu Aug 23 16:14:17 2001  Tim Janik  <timj@gtk.org>

        * glib/gmacros.h (G_GNUC_NO_INSTRUMENT): new macro.
2001-08-23 14:13:32 +00:00
Owen Taylor
f94802c299 Include stddef.h so that we use the system's definition of NULL. (#54730)
Sun Aug  5 08:25:30 2001  Owen Taylor  <otaylor@redhat.com>

	* glib/gmacros.h: Include stddef.h so that we use
	the system's definition of NULL. (#54730)
2001-08-05 12:37:37 +00:00
Owen Taylor
f5c28ce4ab Changes for 64-bit cleanliness, loosely based on patch from Mark Murnane.
Wed Jun 20 12:00:54 2001  Owen Taylor  <otaylor@redhat.com>

        Changes for 64-bit cleanliness, loosely based on patch
	from Mark Murnane.

	* gconvert.c (g_convert/g_convert_with_fallback): Remove
	workarounds for since-fixed GNU libc bugs. Minor
	doc fix.

	* gconvert.[ch]: Change gint to gsize/gssize as
	appropriate.

	* gconvert.c (g_locale/filename_to/from_utf8): Fix incorrect
	computation of bytes_read / bytes_written.

	* gfileutils.[ch] (g_file_get_contents): Make length
	out parameter 'gsize *len'.

	* ghook.c (g_hook_compare_ids): Don't compare a
	and b as 'a - b'.

	* gmacros.h (GSIZE_TO_POINTER): Add GPOINTER_TO_SIZE,
	GSIZE_TO_POINTER.

	* gmain.c (g_timeout_prepare): Rewrite to avoid
	overflows. (Fixes bug when system clock skews
	backwards more than 24 days.)

	* gmarkup.[ch]: Make lengths passed to callbacks
	gsize, length for g_markup_parse-context_parse(),
	g_markup_escape_text() gssize.

	* gmessages.[ch] (g_printf_string_upper_bound): Change
	return value to gsize.

	* gmessages.c (printf_string_upper_bound): Remove
	a ridiculous use of 'inline' on a 300 line function.

	* gstring.[ch]: Represent size of string as a gsize,
	not gint. Make parameters to functions take gsize,
	or gssize where -1 is allowed.

	* gstring.c (g_string_erase): Make
	g_string_erase (string, pos, -1) a synonym for
	g_string_truncate for consistency with other G*
	APIs.

	* gstrfuncs.[ch]: Make all functions taking a string
	length, take a gsize, or gssize if -1 is allowed.
	(g_strstr_len, g_strrstr_len). Also fix some boundary
	conditions in g_str[r]str[_len].

	* gutf8.c tests/unicode-encoding.c: Make parameters that
	are byte lengths gsize, gssize as appropriate. Make
	character offsets, other counts, glong.

	* gasyncqueue.c gcompletion.c
          timeloop.c timeloop-basic.c gutils.c gspawn.c.
	Small 64 bit cleanliness fixups.

	* glist.c (g_list_sort2, g_list_sort_real): Fix functions
	that should have been static.

	* gdate.c (g_date_fill_parse_tokens): Fix extra
	declaration that was shadowing another.

	* tests/module-test.c: Include string.h

Mon Jun 18 15:43:29 2001  Owen Taylor  <otaylor@redhat.com>

	* gutf8.c (g_get_charset): Make argument
	G_CONST_RETURN char **.
2001-06-23 13:55:09 +00:00
Havoc Pennington
430ae18e5b Provide G_CONST_RETURN which is 'const' by default, and nothing when
2000-11-21  Havoc Pennington  <hp@pobox.com>

* gmacros.h: Provide G_CONST_RETURN which is 'const' by default,
and nothing when G_DISABLE_CONST_RETURNS is defined.
2000-12-01 05:42:51 +00:00
Sebastian Wilhelmi
b1d1558747 Split glib.h into many header files mostly according to the resp.
2000-10-12  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.h, galloca.h, garray.h, gasyncqueue.h, gbacktrace.h,
	gcache.h, gcompletion.h, gconvert.h, gdataset.h, gdate.h, ghash.h,
	ghook.h, giochannel.h, glist.h , gmacros.h, gmain.h, gmem.h,
	gmessages.h, gnode.h, gprimes.h, gquark.h, gqueue.h, grand.h,
	grel.h, gscanner.h, gslist.h, gstrfuncs.h, gstring.h, gthread.h,
	gthreadpool.h, gtimer.h, gtree.h, gtypes.h, gutils.h: Split glib.h
	into many header files mostly according to the resp. *.c-files.

	* gmacros.h: Added G_BEGIN_DECLS and G_END_DECLS to mean: 'in case
	of C++: extern "C" { ... }' analogous to glibc __BEGIN_DECLS and
	__END_DECLS.

	* configure.in, gerror.h, gfileutils.h, gshell.h, gspawn.h,
	gunicode.h, : Changed guard-macro names to something more
	consistent.

	* configure.in, *.h: Use G_BEGIN_DECLS and G_END_DECLS.
2000-10-12 11:52:07 +00:00