module Bindings.GLib.Fundamentals.AtomicOperations where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Bindings.GLib.Fundamentals.BasicTypes
foreign import ccall "inline_g_atomic_int_get" c'g_atomic_int_get
:: Ptr C'gint -> IO C'gint
foreign import ccall "inline_g_atomic_int_set" c'g_atomic_int_set
:: Ptr C'gint -> C'gint -> IO ()
foreign import ccall "inline_g_atomic_int_add" c'g_atomic_int_add
:: Ptr C'gint -> C'gint -> IO ()
foreign import ccall "inline_g_atomic_int_exchange_and_add" c'g_atomic_int_exchange_and_add
:: Ptr C'gint -> C'gint -> IO C'gint
foreign import ccall "inline_g_atomic_int_compare_and_exchange" c'g_atomic_int_compare_and_exchange
:: Ptr C'gint -> C'gint -> C'gint -> IO C'gboolean
foreign import ccall "inline_g_atomic_pointer_get" c'g_atomic_pointer_get
:: Ptr C'gpointer -> IO C'gpointer
foreign import ccall "inline_g_atomic_pointer_set" c'g_atomic_pointer_set
:: Ptr C'gpointer -> C'gpointer -> IO ()
foreign import ccall "inline_g_atomic_pointer_compare_and_exchange" c'g_atomic_pointer_compare_and_exchange
:: Ptr C'gpointer -> C'gpointer -> C'gpointer -> IO C'gboolean
foreign import ccall "inline_g_atomic_int_inc" c'g_atomic_int_inc
:: Ptr C'gint -> IO ()
foreign import ccall "inline_g_atomic_int_dec_and_test" c'g_atomic_int_dec_and_test
:: Ptr C'gint -> IO C'gboolean