Commit Graph

51 Commits

Author SHA1 Message Date
Matthias Clasen
7455dd370e Make single includes mandatory
This has been the official line since 2.17, which seems plenty
long enough for a transition phase.
2011-10-12 00:25:38 -04:00
Chun-wei Fan
36ccdab760 Bug 661438: Fix up gmacros.h a bit
The macro here should be G_DEPRECATED, not G_GNUC_DEPRECATED.
2011-10-12 10:38:47 +08:00
Matthias Clasen
a1acf35653 Add our own deprecation macros
This will allow to suppress deprecation warnings on a per-module
basis, if needed. They are on by default now, though.
2011-10-11 13:42:58 -04:00
Matthias Clasen
0da0411a4a Add better deprecation macros
Unlike G_GNUC_... macros, the new G_DEPRECATED[_FOR] are
meant as abstractions that work with different compilers.
Using a new name also lets us restrict it to 'must be placed
before the declaration', which works with more compilers.

https://bugzilla.gnome.org/show_bug.cgi?id=661438
2011-10-11 13:13:27 -04:00
Matthias Clasen
97b0b36ae3 USE __COUNTER__ instead of __LINE__ when available
I've seen builds fail with

nm-connection.c:119:691: error: declaration of '_GStaticAssertCompileTimeAssertion_119' shadows a previous local [-Werror=shadow]

because several compile-time assertions ended up on the same
line. __COUNTER__ is meant specifically for the purpose of
constructing identifiers, so use it when available.
2011-10-07 01:19:15 -04:00
Colin Walters
c3133affcd gmacros: Hide G_STATIC_ASSERT from g-ir-scanner
The C syntax here is twisted and confuses the scanner.  We don't
need to see it, so let's just skip it.

https://bugzilla.gnome.org/show_bug.cgi?id=660413
2011-10-05 13:39:30 -04:00
Ryan Lortie
e517fb6cb0 Make G_ASSERT_STATIC work with clang
A simplified variant of an approach proposed by Behdad.

https://bugzilla.gnome.org/show_bug.cgi?id=660413
2011-10-04 11:52:47 -04:00
Ryan Lortie
fd772fbe95 Formally deprecate G_CONST_RETURN 2011-06-13 09:27:41 -04:00
Colin Walters
2300be5be3 Consistently use G_GNUC_EXTENSION instead of __extension__
g-ir-scanner doesn't like __extension__, and while I can add it, since
we have this macro, we should be using it consistently.
2011-05-31 10:35:38 -04:00
Ryan Lortie
c00ef0a17a Add G_STATIC_ASSERT_EXPR macro
https://bugzilla.gnome.org/show_bug.cgi?id=626549
2011-05-27 22:36:16 -04:00
Emmanuele Bassi
0c1acc7e74 Revert "Deprecate G_CONST_RETURN"
This reverts commit a7fc7909da.

The deprecations was not discussed except on Bugzilla:

https://bugzilla.gnome.org/show_bug.cgi?id=644611
2011-03-15 09:02:08 +00:00
Ryan Lortie
a7fc7909da Deprecate G_CONST_RETURN 2011-03-15 01:32:22 -04:00
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