mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-12 10:45:13 +01:00
for non-i386 and non-alpha, or non gcc, implement BREAKPOINT() as raise (5
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org> * glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc, implement BREAKPOINT() as raise (5 /* SIGTRAP */); * glib.h: provide user-definable switch G_IMPLEMENT_INLINES, to turn on compilation of inline function implementations provided in header files with extern linkage. wrap inline function implementations into ifdef __G_UTILS_C__, so we really only compile them for gutils.c and not also into arbitrary user code that wants to make use of G_IMPLEMENT_INLINES. adjusted comment apropriately. * gutils.c: to turn on compilation of inline functions, provide #define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
This commit is contained in:
parent
a5c0df554e
commit
9432265430
18
ChangeLog
18
ChangeLog
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
|
||||
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
|
||||
|
||||
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
|
||||
to turn on compilation of inline function implementations provided
|
||||
in header files with extern linkage.
|
||||
wrap inline function implementations into ifdef __G_UTILS_C__, so we
|
||||
really only compile them for gutils.c and not also into arbitrary user
|
||||
code that wants to make use of G_IMPLEMENT_INLINES.
|
||||
adjusted comment apropriately.
|
||||
|
||||
* gutils.c: to turn on compilation of inline functions, provide
|
||||
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
|
||||
|
||||
2000-09-06 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* gerror.c: docs
|
||||
@ -75,6 +91,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
from FormatMessage.
|
||||
|
||||
2000-08-25 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* glib.h, gunicode.h, gmodule/gmodule.h:
|
||||
: Mark the following functions G_GNUC_CONST (to allow
|
||||
optimization) because their results are a function of only their parameters:
|
||||
@ -84,6 +101,7 @@ Tue Sep 5 20:16:27 2000 Owen Taylor <otaylor@redhat.com>
|
||||
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
|
||||
|
||||
2000-08-21 Elliot Lee <sopwith@redhat.com>
|
||||
|
||||
* gobject/Makefile.am, gobject/gobject-query.c, gobject/gparamspecs.c: Fix inclusion of
|
||||
config.h
|
||||
|
||||
|
118
glib.h
118
glib.h
@ -178,11 +178,11 @@ extern "C" {
|
||||
*/
|
||||
#if !defined (G_VA_COPY)
|
||||
# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32))
|
||||
# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
|
||||
# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
|
||||
# elif defined (G_VA_COPY_AS_ARRAY)
|
||||
# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
|
||||
# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
|
||||
# else /* va_list is a pointer */
|
||||
# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
|
||||
# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
|
||||
# endif /* va_list is a pointer */
|
||||
#endif /* !G_VA_COPY */
|
||||
|
||||
@ -205,47 +205,42 @@ extern "C" {
|
||||
* *capable* to do function inlining, in which case inline function bodys
|
||||
* do make sense. we also define G_INLINE_FUNC to properly export the
|
||||
* function prototypes if no inlining can be performed.
|
||||
* we special case most of the stuff, so inline functions can have a normal
|
||||
* implementation by defining G_INLINE_FUNC to extern and G_CAN_INLINE to 1.
|
||||
* inline function bodies have to be special cased with G_CAN_INLINE and a
|
||||
* .c file specific macro to allow one compiled instance with extern linkage
|
||||
* of the functions by defining G_IMPLEMENT_INLINES and the .c file macro.
|
||||
*/
|
||||
#ifdef G_IMPLEMENT_INLINES
|
||||
# define G_INLINE_FUNC extern
|
||||
# undef G_CAN_INLINE
|
||||
#endif
|
||||
#ifndef G_INLINE_FUNC
|
||||
# define G_CAN_INLINE 1
|
||||
#endif
|
||||
#ifdef G_HAVE_INLINE
|
||||
# if defined (__GNUC__) && defined (__STRICT_ANSI__)
|
||||
# undef inline
|
||||
# define inline __inline__
|
||||
# endif
|
||||
#else /* !G_HAVE_INLINE */
|
||||
#if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
|
||||
# undef inline
|
||||
# define inline __inline__
|
||||
#elif !defined (G_HAVE_INLINE)
|
||||
# undef inline
|
||||
# if defined (G_HAVE___INLINE__)
|
||||
# define inline __inline__
|
||||
# else /* !inline && !__inline__ */
|
||||
# if defined (G_HAVE___INLINE)
|
||||
# define inline __inline
|
||||
# else /* !inline && !__inline__ && !__inline */
|
||||
# define inline /* don't inline, then */
|
||||
# ifndef G_INLINE_FUNC
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
# elif defined (G_HAVE___INLINE)
|
||||
# define inline __inline
|
||||
# else /* !inline && !__inline__ && !__inline */
|
||||
# define inline /* don't inline, then */
|
||||
# ifndef G_INLINE_FUNC
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifndef G_INLINE_FUNC
|
||||
# ifdef __GNUC__
|
||||
# ifdef __OPTIMIZE__
|
||||
# define G_INLINE_FUNC extern inline
|
||||
# else
|
||||
# undef G_CAN_INLINE
|
||||
# define G_INLINE_FUNC extern
|
||||
# endif
|
||||
# else /* !__GNUC__ */
|
||||
# ifdef G_CAN_INLINE
|
||||
# define G_INLINE_FUNC static inline
|
||||
# else
|
||||
# define G_INLINE_FUNC extern
|
||||
# endif
|
||||
# endif /* !__GNUC__ */
|
||||
# if defined (__GNUC__) && (__OPTIMIZE__)
|
||||
# define G_INLINE_FUNC extern inline
|
||||
# elif defined (G_CAN_INLINE) && !defined (__GNUC__)
|
||||
# define G_INLINE_FUNC static inline
|
||||
# else /* can't inline */
|
||||
# define G_INLINE_FUNC extern
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
#endif /* !G_INLINE_FUNC */
|
||||
|
||||
|
||||
@ -323,11 +318,11 @@ extern "C" {
|
||||
* Actual use is strongly deprecated of course ;)
|
||||
*/
|
||||
#if defined (__i386__) && defined (__GNUC__) && __GNUC__ >= 2
|
||||
#define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
|
||||
# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
|
||||
#elif defined (__alpha__) && defined (__GNUC__) && __GNUC__ >= 2
|
||||
#define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
|
||||
# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
|
||||
#else /* !__i386__ && !__alpha__ */
|
||||
#define G_BREAKPOINT()
|
||||
# define G_BREAKPOINT() G_STMT_START{ raise (5 /* SIGTRAP */); }G_STMT_END
|
||||
#endif /* __i386__ */
|
||||
|
||||
|
||||
@ -1806,7 +1801,24 @@ void g_atexit (GVoidFunc func);
|
||||
*/
|
||||
G_INLINE_FUNC gint g_bit_nth_lsf (guint32 mask,
|
||||
gint nth_bit);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gint g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit);
|
||||
G_INLINE_FUNC guint g_bit_storage (guint number);
|
||||
|
||||
|
||||
/* Trash Stacks
|
||||
* elements need to be >= sizeof (gpointer)
|
||||
*/
|
||||
G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p);
|
||||
G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
|
||||
G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
|
||||
G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
|
||||
|
||||
|
||||
/* inline function implementations
|
||||
*/
|
||||
#if defined (G_CAN_INLINE) || defined (__G_UTILS_C__)
|
||||
G_INLINE_FUNC gint
|
||||
g_bit_nth_lsf (guint32 mask,
|
||||
gint nth_bit)
|
||||
@ -1820,11 +1832,6 @@ g_bit_nth_lsf (guint32 mask,
|
||||
while (nth_bit < 32);
|
||||
return -1;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gint g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gint
|
||||
g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit)
|
||||
@ -1840,10 +1847,6 @@ g_bit_nth_msf (guint32 mask,
|
||||
while (nth_bit > 0);
|
||||
return -1;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC guint g_bit_storage (guint number);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC guint
|
||||
g_bit_storage (guint number)
|
||||
{
|
||||
@ -1857,15 +1860,6 @@ g_bit_storage (guint number)
|
||||
while (number);
|
||||
return n_bits;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
|
||||
/* Trash Stacks
|
||||
* elements need to be >= sizeof (gpointer)
|
||||
*/
|
||||
G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC void
|
||||
g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p)
|
||||
@ -1875,10 +1869,6 @@ g_trash_stack_push (GTrashStack **stack_p,
|
||||
data->next = *stack_p;
|
||||
*stack_p = data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gpointer
|
||||
g_trash_stack_pop (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1896,10 +1886,6 @@ g_trash_stack_pop (GTrashStack **stack_p)
|
||||
|
||||
return data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gpointer
|
||||
g_trash_stack_peek (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1909,10 +1895,6 @@ g_trash_stack_peek (GTrashStack **stack_p)
|
||||
|
||||
return data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC guint
|
||||
g_trash_stack_height (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1924,7 +1906,7 @@ g_trash_stack_height (GTrashStack **stack_p)
|
||||
|
||||
return i;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
#endif /* G_CAN_INLINE || __G_UTILS_C__ */
|
||||
|
||||
|
||||
/* String Chunks
|
||||
|
118
glib/glib.h
118
glib/glib.h
@ -178,11 +178,11 @@ extern "C" {
|
||||
*/
|
||||
#if !defined (G_VA_COPY)
|
||||
# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32))
|
||||
# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
|
||||
# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
|
||||
# elif defined (G_VA_COPY_AS_ARRAY)
|
||||
# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
|
||||
# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
|
||||
# else /* va_list is a pointer */
|
||||
# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
|
||||
# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
|
||||
# endif /* va_list is a pointer */
|
||||
#endif /* !G_VA_COPY */
|
||||
|
||||
@ -205,47 +205,42 @@ extern "C" {
|
||||
* *capable* to do function inlining, in which case inline function bodys
|
||||
* do make sense. we also define G_INLINE_FUNC to properly export the
|
||||
* function prototypes if no inlining can be performed.
|
||||
* we special case most of the stuff, so inline functions can have a normal
|
||||
* implementation by defining G_INLINE_FUNC to extern and G_CAN_INLINE to 1.
|
||||
* inline function bodies have to be special cased with G_CAN_INLINE and a
|
||||
* .c file specific macro to allow one compiled instance with extern linkage
|
||||
* of the functions by defining G_IMPLEMENT_INLINES and the .c file macro.
|
||||
*/
|
||||
#ifdef G_IMPLEMENT_INLINES
|
||||
# define G_INLINE_FUNC extern
|
||||
# undef G_CAN_INLINE
|
||||
#endif
|
||||
#ifndef G_INLINE_FUNC
|
||||
# define G_CAN_INLINE 1
|
||||
#endif
|
||||
#ifdef G_HAVE_INLINE
|
||||
# if defined (__GNUC__) && defined (__STRICT_ANSI__)
|
||||
# undef inline
|
||||
# define inline __inline__
|
||||
# endif
|
||||
#else /* !G_HAVE_INLINE */
|
||||
#if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
|
||||
# undef inline
|
||||
# define inline __inline__
|
||||
#elif !defined (G_HAVE_INLINE)
|
||||
# undef inline
|
||||
# if defined (G_HAVE___INLINE__)
|
||||
# define inline __inline__
|
||||
# else /* !inline && !__inline__ */
|
||||
# if defined (G_HAVE___INLINE)
|
||||
# define inline __inline
|
||||
# else /* !inline && !__inline__ && !__inline */
|
||||
# define inline /* don't inline, then */
|
||||
# ifndef G_INLINE_FUNC
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
# elif defined (G_HAVE___INLINE)
|
||||
# define inline __inline
|
||||
# else /* !inline && !__inline__ && !__inline */
|
||||
# define inline /* don't inline, then */
|
||||
# ifndef G_INLINE_FUNC
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifndef G_INLINE_FUNC
|
||||
# ifdef __GNUC__
|
||||
# ifdef __OPTIMIZE__
|
||||
# define G_INLINE_FUNC extern inline
|
||||
# else
|
||||
# undef G_CAN_INLINE
|
||||
# define G_INLINE_FUNC extern
|
||||
# endif
|
||||
# else /* !__GNUC__ */
|
||||
# ifdef G_CAN_INLINE
|
||||
# define G_INLINE_FUNC static inline
|
||||
# else
|
||||
# define G_INLINE_FUNC extern
|
||||
# endif
|
||||
# endif /* !__GNUC__ */
|
||||
# if defined (__GNUC__) && (__OPTIMIZE__)
|
||||
# define G_INLINE_FUNC extern inline
|
||||
# elif defined (G_CAN_INLINE) && !defined (__GNUC__)
|
||||
# define G_INLINE_FUNC static inline
|
||||
# else /* can't inline */
|
||||
# define G_INLINE_FUNC extern
|
||||
# undef G_CAN_INLINE
|
||||
# endif
|
||||
#endif /* !G_INLINE_FUNC */
|
||||
|
||||
|
||||
@ -323,11 +318,11 @@ extern "C" {
|
||||
* Actual use is strongly deprecated of course ;)
|
||||
*/
|
||||
#if defined (__i386__) && defined (__GNUC__) && __GNUC__ >= 2
|
||||
#define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
|
||||
# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
|
||||
#elif defined (__alpha__) && defined (__GNUC__) && __GNUC__ >= 2
|
||||
#define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
|
||||
# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
|
||||
#else /* !__i386__ && !__alpha__ */
|
||||
#define G_BREAKPOINT()
|
||||
# define G_BREAKPOINT() G_STMT_START{ raise (5 /* SIGTRAP */); }G_STMT_END
|
||||
#endif /* __i386__ */
|
||||
|
||||
|
||||
@ -1806,7 +1801,24 @@ void g_atexit (GVoidFunc func);
|
||||
*/
|
||||
G_INLINE_FUNC gint g_bit_nth_lsf (guint32 mask,
|
||||
gint nth_bit);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gint g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit);
|
||||
G_INLINE_FUNC guint g_bit_storage (guint number);
|
||||
|
||||
|
||||
/* Trash Stacks
|
||||
* elements need to be >= sizeof (gpointer)
|
||||
*/
|
||||
G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p);
|
||||
G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
|
||||
G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
|
||||
G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
|
||||
|
||||
|
||||
/* inline function implementations
|
||||
*/
|
||||
#if defined (G_CAN_INLINE) || defined (__G_UTILS_C__)
|
||||
G_INLINE_FUNC gint
|
||||
g_bit_nth_lsf (guint32 mask,
|
||||
gint nth_bit)
|
||||
@ -1820,11 +1832,6 @@ g_bit_nth_lsf (guint32 mask,
|
||||
while (nth_bit < 32);
|
||||
return -1;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gint g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gint
|
||||
g_bit_nth_msf (guint32 mask,
|
||||
gint nth_bit)
|
||||
@ -1840,10 +1847,6 @@ g_bit_nth_msf (guint32 mask,
|
||||
while (nth_bit > 0);
|
||||
return -1;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC guint g_bit_storage (guint number);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC guint
|
||||
g_bit_storage (guint number)
|
||||
{
|
||||
@ -1857,15 +1860,6 @@ g_bit_storage (guint number)
|
||||
while (number);
|
||||
return n_bits;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
|
||||
/* Trash Stacks
|
||||
* elements need to be >= sizeof (gpointer)
|
||||
*/
|
||||
G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC void
|
||||
g_trash_stack_push (GTrashStack **stack_p,
|
||||
gpointer data_p)
|
||||
@ -1875,10 +1869,6 @@ g_trash_stack_push (GTrashStack **stack_p,
|
||||
data->next = *stack_p;
|
||||
*stack_p = data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gpointer
|
||||
g_trash_stack_pop (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1896,10 +1886,6 @@ g_trash_stack_pop (GTrashStack **stack_p)
|
||||
|
||||
return data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC gpointer
|
||||
g_trash_stack_peek (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1909,10 +1895,6 @@ g_trash_stack_peek (GTrashStack **stack_p)
|
||||
|
||||
return data;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
|
||||
G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
|
||||
#ifdef G_CAN_INLINE
|
||||
G_INLINE_FUNC guint
|
||||
g_trash_stack_height (GTrashStack **stack_p)
|
||||
{
|
||||
@ -1924,7 +1906,7 @@ g_trash_stack_height (GTrashStack **stack_p)
|
||||
|
||||
return i;
|
||||
}
|
||||
#endif /* G_CAN_INLINE */
|
||||
#endif /* G_CAN_INLINE || __G_UTILS_C__ */
|
||||
|
||||
|
||||
/* String Chunks
|
||||
|
@ -50,8 +50,8 @@
|
||||
|
||||
/* implement Glib's inline functions
|
||||
*/
|
||||
#define G_INLINE_FUNC extern
|
||||
#define G_CAN_INLINE 1
|
||||
#define G_IMPLEMENT_INLINES 1
|
||||
#define __G_UTILS_C__
|
||||
#include "glib.h"
|
||||
|
||||
#ifdef MAXPATHLEN
|
||||
|
4
gutils.c
4
gutils.c
@ -50,8 +50,8 @@
|
||||
|
||||
/* implement Glib's inline functions
|
||||
*/
|
||||
#define G_INLINE_FUNC extern
|
||||
#define G_CAN_INLINE 1
|
||||
#define G_IMPLEMENT_INLINES 1
|
||||
#define __G_UTILS_C__
|
||||
#include "glib.h"
|
||||
|
||||
#ifdef MAXPATHLEN
|
||||
|
@ -828,6 +828,13 @@ main (int argc,
|
||||
g_string_free (string1, TRUE);
|
||||
g_string_free (string2, TRUE);
|
||||
|
||||
g_print ("test positional printf formats (not supported): ");
|
||||
string = g_strdup_printf ("%.*s%s", 5, "a", "b");
|
||||
tmp_string = g_strdup_printf ("%2$*1$s", 5, "c");
|
||||
g_print ("%s%s\n", string, tmp_string);
|
||||
g_free (tmp_string);
|
||||
g_free (string);
|
||||
|
||||
g_print ("checking timers...\n");
|
||||
|
||||
timer = g_timer_new ();
|
||||
|
@ -828,6 +828,13 @@ main (int argc,
|
||||
g_string_free (string1, TRUE);
|
||||
g_string_free (string2, TRUE);
|
||||
|
||||
g_print ("test positional printf formats (not supported): ");
|
||||
string = g_strdup_printf ("%.*s%s", 5, "a", "b");
|
||||
tmp_string = g_strdup_printf ("%2$*1$s", 5, "c");
|
||||
g_print ("%s%s\n", string, tmp_string);
|
||||
g_free (tmp_string);
|
||||
g_free (string);
|
||||
|
||||
g_print ("checking timers...\n");
|
||||
|
||||
timer = g_timer_new ();
|
||||
|
Loading…
x
Reference in New Issue
Block a user