* Since: 2.4
**/
gint
-(g_atomic_int_get) (volatile gint *atomic)
+(g_atomic_int_get) (const volatile gint *atomic)
{
return g_atomic_int_get (atomic);
}
* Since: 2.4
**/
gpointer
-(g_atomic_pointer_get) (volatile void *atomic)
+(g_atomic_pointer_get) (const volatile void *atomic)
{
- return g_atomic_pointer_get ((volatile gpointer *) atomic);
+ return g_atomic_pointer_get ((const volatile gpointer *) atomic);
}
/**
* http://msdn.microsoft.com/en-us/library/ms684122(v=vs.85).aspx
*/
gint
-(g_atomic_int_get) (volatile gint *atomic)
+(g_atomic_int_get) (const volatile gint *atomic)
{
MemoryBarrier ();
return *atomic;
gpointer
-(g_atomic_pointer_get) (volatile void *atomic)
+(g_atomic_pointer_get) (const volatile void *atomic)
{
- volatile gpointer *ptr = atomic;
+ const volatile gpointer *ptr = atomic;
MemoryBarrier ();
return *ptr;
G_BEGIN_DECLS
GLIB_AVAILABLE_IN_ALL
-gint g_atomic_int_get (volatile gint *atomic);
+gint g_atomic_int_get (const volatile gint *atomic);
GLIB_AVAILABLE_IN_ALL
void g_atomic_int_set (volatile gint *atomic,
gint newval);
guint val);
GLIB_AVAILABLE_IN_ALL
-gpointer g_atomic_pointer_get (volatile void *atomic);
+gpointer g_atomic_pointer_get (const volatile void *atomic);
GLIB_AVAILABLE_IN_ALL
void g_atomic_pointer_set (volatile void *atomic,
gpointer newval);
static void
test_types (void)
{
+ const gint *csp;
+ const gint * const *cspp;
guint u, u2;
gint s, s2;
gpointer vp, vp2;
gsize gs, gs2;
gboolean res;
+ csp = &s;
+ cspp = &csp;
+
g_atomic_int_set (&u, 5);
u2 = g_atomic_int_get (&u);
g_assert_cmpint (u2, ==, 5);
g_assert (gs2 == 12);
g_assert (gs == 8);
+ g_assert (g_atomic_int_get (csp) == s);
+ g_assert (g_atomic_pointer_get (cspp) == csp);
+
/* repeat, without the macros */
#undef g_atomic_int_set
#undef g_atomic_int_get
gs2 = g_atomic_pointer_xor (&gs, 4);
g_assert (gs2 == 12);
g_assert (gs == 8);
+
+ g_assert (g_atomic_int_get (csp) == s);
+ g_assert (g_atomic_pointer_get (cspp) == csp);
}
#define THREADS 10