g_atomic_int_get, g_atomic_pointer_get: accept const arguments
[platform/upstream/glib.git] / glib / gatomic.h
index a029508..e7fd1f2 100644 (file)
  * Author: Ryan Lortie <desrt@desrt.ca>
  */
 
+#ifndef __G_ATOMIC_H__
+#define __G_ATOMIC_H__
+
 #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
 #error "Only <glib.h> can be included directly."
 #endif
 
-#ifndef __G_ATOMIC_H__
-#define __G_ATOMIC_H__
-
 #include <glib/gtypes.h>
 
 G_BEGIN_DECLS
 
-gint                    g_atomic_int_get                      (volatile gint  *atomic);
+GLIB_AVAILABLE_IN_ALL
+gint                    g_atomic_int_get                      (const volatile gint *atomic);
+GLIB_AVAILABLE_IN_ALL
 void                    g_atomic_int_set                      (volatile gint  *atomic,
                                                                gint            newval);
+GLIB_AVAILABLE_IN_ALL
 void                    g_atomic_int_inc                      (volatile gint  *atomic);
+GLIB_AVAILABLE_IN_ALL
 gboolean                g_atomic_int_dec_and_test             (volatile gint  *atomic);
+GLIB_AVAILABLE_IN_ALL
 gboolean                g_atomic_int_compare_and_exchange     (volatile gint  *atomic,
                                                                gint            oldval,
                                                                gint            newval);
+GLIB_AVAILABLE_IN_ALL
 gint                    g_atomic_int_add                      (volatile gint  *atomic,
                                                                gint            val);
+GLIB_AVAILABLE_IN_2_30
 guint                   g_atomic_int_and                      (volatile guint *atomic,
                                                                guint           val);
+GLIB_AVAILABLE_IN_2_30
 guint                   g_atomic_int_or                       (volatile guint *atomic,
                                                                guint           val);
+GLIB_AVAILABLE_IN_ALL
 guint                   g_atomic_int_xor                      (volatile guint *atomic,
                                                                guint           val);
 
-gpointer                g_atomic_pointer_get                  (volatile void  *atomic);
+GLIB_AVAILABLE_IN_ALL
+gpointer                g_atomic_pointer_get                  (const volatile void *atomic);
+GLIB_AVAILABLE_IN_ALL
 void                    g_atomic_pointer_set                  (volatile void  *atomic,
                                                                gpointer        newval);
+GLIB_AVAILABLE_IN_ALL
 gboolean                g_atomic_pointer_compare_and_exchange (volatile void  *atomic,
                                                                gpointer        oldval,
                                                                gpointer        newval);
+GLIB_AVAILABLE_IN_ALL
 gssize                  g_atomic_pointer_add                  (volatile void  *atomic,
                                                                gssize          val);
+GLIB_AVAILABLE_IN_2_30
 gsize                   g_atomic_pointer_and                  (volatile void  *atomic,
                                                                gsize           val);
+GLIB_AVAILABLE_IN_2_30
 gsize                   g_atomic_pointer_or                   (volatile void  *atomic,
                                                                gsize           val);
+GLIB_AVAILABLE_IN_ALL
 gsize                   g_atomic_pointer_xor                  (volatile void  *atomic,
                                                                gsize           val);
 
-#ifndef G_DISABLE_DEPRECATED
-GLIB_DEPRECATED_FOR(g_atomic_add)
+GLIB_DEPRECATED_IN_2_30_FOR(g_atomic_add)
 gint                    g_atomic_int_exchange_and_add         (volatile gint  *atomic,
                                                                gint            val);
-#endif
 
 G_END_DECLS
 
-#if defined(__GNUC__) && defined(G_ATOMIC_OP_USE_GCC_BUILTINS)
+#if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
 
 #define g_atomic_int_get(atomic) \
   (G_GNUC_EXTENSION ({                                                          \
@@ -177,7 +191,7 @@ G_END_DECLS
     (gsize) __sync_fetch_and_xor ((atomic), (val));                          \
   }))
 
-#else /* defined(__GNUC__) && defined(G_ATOMIC_OP_USE_GCC_BUILTINS) */
+#else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */
 
 #define g_atomic_int_get(atomic) \
   (g_atomic_int_get ((gint *) (atomic)))