{-# LINE 1 "src/Bindings/GObject/ValueArrays.hsc" #-}

{-# LINE 2 "src/Bindings/GObject/ValueArrays.hsc" #-}

{-# LINE 3 "src/Bindings/GObject/ValueArrays.hsc" #-}

-- | <http://library.gnome.org/devel/gobject/stable/gobject-Value-arrays.html>

module Bindings.GObject.ValueArrays 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/GObject/ValueArrays.hsc" #-}
import Bindings.GLib
import Bindings.GObject.TypeInformation


{-# LINE 12 "src/Bindings/GObject/ValueArrays.hsc" #-}

{-# LINE 13 "src/Bindings/GObject/ValueArrays.hsc" #-}

{-# LINE 14 "src/Bindings/GObject/ValueArrays.hsc" #-}
data C'GValueArray = C'GValueArray{
  c'GValueArray'n_values :: C'guint,
  c'GValueArray'values :: Ptr C'GValue
} deriving (Eq,Show)
p'GValueArray'n_values p = plusPtr p 0
p'GValueArray'n_values :: Ptr (C'GValueArray) -> Ptr (C'guint)
p'GValueArray'values p = plusPtr p 4
p'GValueArray'values :: Ptr (C'GValueArray) -> Ptr (Ptr C'GValue)
instance Storable C'GValueArray where
  sizeOf _ = 12
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'GValueArray v0 v1
  poke p (C'GValueArray v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 15 "src/Bindings/GObject/ValueArrays.hsc" #-}

foreign import ccall "g_value_array_get_nth" c'g_value_array_get_nth
  :: Ptr C'GValueArray -> C'guint -> IO (Ptr C'GValue)
foreign import ccall "&g_value_array_get_nth" p'g_value_array_get_nth
  :: FunPtr (Ptr C'GValueArray -> C'guint -> IO (Ptr C'GValue))

{-# LINE 17 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_new" c'g_value_array_new
  :: C'guint -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_new" p'g_value_array_new
  :: FunPtr (C'guint -> IO (Ptr C'GValueArray))

{-# LINE 18 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_copy" c'g_value_array_copy
  :: Ptr C'GValueArray -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_copy" p'g_value_array_copy
  :: FunPtr (Ptr C'GValueArray -> IO (Ptr C'GValueArray))

{-# LINE 19 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_free" c'g_value_array_free
  :: Ptr C'GValueArray -> IO ()
foreign import ccall "&g_value_array_free" p'g_value_array_free
  :: FunPtr (Ptr C'GValueArray -> IO ())

{-# LINE 20 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_append" c'g_value_array_append
  :: Ptr C'GValueArray -> Ptr C'GValue -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_append" p'g_value_array_append
  :: FunPtr (Ptr C'GValueArray -> Ptr C'GValue -> IO (Ptr C'GValueArray))

{-# LINE 21 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_prepend" c'g_value_array_prepend
  :: Ptr C'GValueArray -> Ptr C'GValue -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_prepend" p'g_value_array_prepend
  :: FunPtr (Ptr C'GValueArray -> Ptr C'GValue -> IO (Ptr C'GValueArray))

{-# LINE 22 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_insert" c'g_value_array_insert
  :: Ptr C'GValueArray -> C'guint -> Ptr C'GValue -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_insert" p'g_value_array_insert
  :: FunPtr (Ptr C'GValueArray -> C'guint -> Ptr C'GValue -> IO (Ptr C'GValueArray))

{-# LINE 23 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_remove" c'g_value_array_remove
  :: Ptr C'GValueArray -> C'guint -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_remove" p'g_value_array_remove
  :: FunPtr (Ptr C'GValueArray -> C'guint -> IO (Ptr C'GValueArray))

{-# LINE 24 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_sort" c'g_value_array_sort
  :: Ptr C'GValueArray -> C'GCompareFunc -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_sort" p'g_value_array_sort
  :: FunPtr (Ptr C'GValueArray -> C'GCompareFunc -> IO (Ptr C'GValueArray))

{-# LINE 25 "src/Bindings/GObject/ValueArrays.hsc" #-}
foreign import ccall "g_value_array_sort_with_data" c'g_value_array_sort_with_data
  :: Ptr C'GValueArray -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GValueArray)
foreign import ccall "&g_value_array_sort_with_data" p'g_value_array_sort_with_data
  :: FunPtr (Ptr C'GValueArray -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GValueArray))

{-# LINE 26 "src/Bindings/GObject/ValueArrays.hsc" #-}