{-# LINE 1 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}

{-# LINE 2 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}

{-# LINE 3 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}

-- | <http://library.gnome.org/devel/glib/stable/glib-Atomic-Operations.html>

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.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 8 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
import Bindings.GLib.Fundamentals.BasicTypes

foreign import ccall "inline_g_atomic_int_get" c'g_atomic_int_get
  :: Ptr C'gint -> IO C'gint

{-# LINE 11 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_int_set" c'g_atomic_int_set
  :: Ptr C'gint -> C'gint -> IO ()

{-# LINE 12 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_int_add" c'g_atomic_int_add
  :: Ptr C'gint -> C'gint -> IO ()

{-# LINE 13 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
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

{-# LINE 14 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
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

{-# LINE 15 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_pointer_get" c'g_atomic_pointer_get
  :: Ptr C'gpointer -> IO C'gpointer

{-# LINE 16 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_pointer_set" c'g_atomic_pointer_set
  :: Ptr C'gpointer -> C'gpointer -> IO ()

{-# LINE 17 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
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

{-# LINE 18 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_int_inc" c'g_atomic_int_inc
  :: Ptr C'gint -> IO ()

{-# LINE 19 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}
foreign import ccall "inline_g_atomic_int_dec_and_test" c'g_atomic_int_dec_and_test
  :: Ptr C'gint -> IO C'gboolean

{-# LINE 20 "src/Bindings/GLib/Fundamentals/AtomicOperations.hsc" #-}