{-# LINE 1 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

{-# LINE 2 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

{-# LINE 3 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

-- | <http://library.gnome.org/devel/glib/stable/glib-Hash-Tables.html>

module Bindings.GLib.DataTypes.HashTables 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/DataTypes/HashTables.hsc" #-}
import Bindings.GLib.Fundamentals
import Bindings.GLib.DataTypes.Datasets
import Bindings.GLib.DataTypes.DoublyLinkedLists

data C'GHashTable = C'GHashTable

{-# LINE 13 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_hash_table_new" c'g_hash_table_new
  :: C'GHashFunc -> C'GEqualFunc -> IO (Ptr C'GHashTable)
foreign import ccall "&g_hash_table_new" p'g_hash_table_new
  :: FunPtr (C'GHashFunc -> C'GEqualFunc -> IO (Ptr C'GHashTable))

{-# LINE 15 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_new_full" c'g_hash_table_new_full
  :: C'GHashFunc -> C'GEqualFunc -> C'GDestroyNotify -> C'GDestroyNotify -> IO (Ptr C'GHashTable)
foreign import ccall "&g_hash_table_new_full" p'g_hash_table_new_full
  :: FunPtr (C'GHashFunc -> C'GEqualFunc -> C'GDestroyNotify -> C'GDestroyNotify -> IO (Ptr C'GHashTable))

{-# LINE 16 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

type C'GHashFunc = FunPtr (C'gconstpointer -> IO C'guint)
foreign import ccall "wrapper" mk'GHashFunc
  :: (C'gconstpointer -> IO C'guint) -> IO C'GHashFunc
foreign import ccall "dynamic" mK'GHashFunc
  :: C'GHashFunc -> (C'gconstpointer -> IO C'guint)

{-# LINE 18 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
type C'GEqualFunc = FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)
foreign import ccall "wrapper" mk'GEqualFunc
  :: (C'gconstpointer -> C'gconstpointer -> IO C'gboolean) -> IO C'GEqualFunc
foreign import ccall "dynamic" mK'GEqualFunc
  :: C'GEqualFunc -> (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 19 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_hash_table_insert" c'g_hash_table_insert
  :: Ptr C'GHashTable -> C'gpointer -> C'gpointer -> IO ()
foreign import ccall "&g_hash_table_insert" p'g_hash_table_insert
  :: FunPtr (Ptr C'GHashTable -> C'gpointer -> C'gpointer -> IO ())

{-# LINE 21 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_replace" c'g_hash_table_replace
  :: Ptr C'GHashTable -> C'gpointer -> C'gpointer -> IO ()
foreign import ccall "&g_hash_table_replace" p'g_hash_table_replace
  :: FunPtr (Ptr C'GHashTable -> C'gpointer -> C'gpointer -> IO ())

{-# LINE 22 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_size" c'g_hash_table_size
  :: Ptr C'GHashTable -> IO C'guint
foreign import ccall "&g_hash_table_size" p'g_hash_table_size
  :: FunPtr (Ptr C'GHashTable -> IO C'guint)

{-# LINE 23 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_lookup" c'g_hash_table_lookup
  :: Ptr C'GHashTable -> C'gconstpointer -> IO C'gpointer
foreign import ccall "&g_hash_table_lookup" p'g_hash_table_lookup
  :: FunPtr (Ptr C'GHashTable -> C'gconstpointer -> IO C'gpointer)

{-# LINE 24 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_lookup_extended" c'g_hash_table_lookup_extended
  :: Ptr C'GHashTable -> C'gconstpointer -> C'gpointer -> C'gpointer -> IO C'gboolean
foreign import ccall "&g_hash_table_lookup_extended" p'g_hash_table_lookup_extended
  :: FunPtr (Ptr C'GHashTable -> C'gconstpointer -> C'gpointer -> C'gpointer -> IO C'gboolean)

{-# LINE 25 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_foreach" c'g_hash_table_foreach
  :: Ptr C'GHashTable -> C'GHFunc -> C'gpointer -> IO ()
foreign import ccall "&g_hash_table_foreach" p'g_hash_table_foreach
  :: FunPtr (Ptr C'GHashTable -> C'GHFunc -> C'gpointer -> IO ())

{-# LINE 26 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_find" c'g_hash_table_find
  :: Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'gpointer
foreign import ccall "&g_hash_table_find" p'g_hash_table_find
  :: FunPtr (Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'gpointer)

{-# LINE 27 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

type C'GHFunc = FunPtr (C'gpointer -> C'gpointer -> C'gpointer -> IO ())
foreign import ccall "wrapper" mk'GHFunc
  :: (C'gpointer -> C'gpointer -> C'gpointer -> IO ()) -> IO C'GHFunc
foreign import ccall "dynamic" mK'GHFunc
  :: C'GHFunc -> (C'gpointer -> C'gpointer -> C'gpointer -> IO ())

{-# LINE 29 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_hash_table_remove" c'g_hash_table_remove
  :: Ptr C'GHashTable -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_hash_table_remove" p'g_hash_table_remove
  :: FunPtr (Ptr C'GHashTable -> C'gconstpointer -> IO C'gboolean)

{-# LINE 31 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_steal" c'g_hash_table_steal
  :: Ptr C'GHashTable -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_hash_table_steal" p'g_hash_table_steal
  :: FunPtr (Ptr C'GHashTable -> C'gconstpointer -> IO C'gboolean)

{-# LINE 32 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_foreach_remove" c'g_hash_table_foreach_remove
  :: Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'guint
foreign import ccall "&g_hash_table_foreach_remove" p'g_hash_table_foreach_remove
  :: FunPtr (Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'guint)

{-# LINE 33 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_foreach_steal" c'g_hash_table_foreach_steal
  :: Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'guint
foreign import ccall "&g_hash_table_foreach_steal" p'g_hash_table_foreach_steal
  :: FunPtr (Ptr C'GHashTable -> C'GHRFunc -> C'gpointer -> IO C'guint)

{-# LINE 34 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_remove_all" c'g_hash_table_remove_all
  :: Ptr C'GHashTable -> IO ()
foreign import ccall "&g_hash_table_remove_all" p'g_hash_table_remove_all
  :: FunPtr (Ptr C'GHashTable -> IO ())

{-# LINE 35 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_steal_all" c'g_hash_table_steal_all
  :: Ptr C'GHashTable -> IO ()
foreign import ccall "&g_hash_table_steal_all" p'g_hash_table_steal_all
  :: FunPtr (Ptr C'GHashTable -> IO ())

{-# LINE 36 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_get_keys" c'g_hash_table_get_keys
  :: Ptr C'GHashTable -> IO (Ptr C'GList)
foreign import ccall "&g_hash_table_get_keys" p'g_hash_table_get_keys
  :: FunPtr (Ptr C'GHashTable -> IO (Ptr C'GList))

{-# LINE 37 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_get_values" c'g_hash_table_get_values
  :: Ptr C'GHashTable -> IO (Ptr C'GList)
foreign import ccall "&g_hash_table_get_values" p'g_hash_table_get_values
  :: FunPtr (Ptr C'GHashTable -> IO (Ptr C'GList))

{-# LINE 38 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

type C'GHRFunc = FunPtr (C'gpointer -> C'gpointer -> C'gpointer -> IO C'gboolean)
foreign import ccall "wrapper" mk'GHRFunc
  :: (C'gpointer -> C'gpointer -> C'gpointer -> IO C'gboolean) -> IO C'GHRFunc
foreign import ccall "dynamic" mK'GHRFunc
  :: C'GHRFunc -> (C'gpointer -> C'gpointer -> C'gpointer -> IO C'gboolean)

{-# LINE 40 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_hash_table_destroy" c'g_hash_table_destroy
  :: Ptr C'GHashTable -> IO ()
foreign import ccall "&g_hash_table_destroy" p'g_hash_table_destroy
  :: FunPtr (Ptr C'GHashTable -> IO ())

{-# LINE 42 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_ref" c'g_hash_table_ref
  :: Ptr C'GHashTable -> IO (Ptr C'GHashTable)
foreign import ccall "&g_hash_table_ref" p'g_hash_table_ref
  :: FunPtr (Ptr C'GHashTable -> IO (Ptr C'GHashTable))

{-# LINE 43 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_unref" c'g_hash_table_unref
  :: Ptr C'GHashTable -> IO ()
foreign import ccall "&g_hash_table_unref" p'g_hash_table_unref
  :: FunPtr (Ptr C'GHashTable -> IO ())

{-# LINE 44 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

data C'GHashTableIter = C'GHashTableIter{
{-# LINE 46 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GHashTableIter where
  sizeOf _ = 24
  alignment = sizeOf
  peek p = do
    return $ C'GHashTableIter
  poke p (C'GHashTableIter) = do
    return ()

{-# LINE 47 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_hash_table_iter_init" c'g_hash_table_iter_init
  :: Ptr C'GHashTableIter -> Ptr C'GHashTable -> IO ()
foreign import ccall "&g_hash_table_iter_init" p'g_hash_table_iter_init
  :: FunPtr (Ptr C'GHashTableIter -> Ptr C'GHashTable -> IO ())

{-# LINE 49 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_iter_next" c'g_hash_table_iter_next
  :: Ptr C'GHashTableIter -> C'gpointer -> C'gpointer -> IO C'gboolean
foreign import ccall "&g_hash_table_iter_next" p'g_hash_table_iter_next
  :: FunPtr (Ptr C'GHashTableIter -> C'gpointer -> C'gpointer -> IO C'gboolean)

{-# LINE 50 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_iter_get_hash_table" c'g_hash_table_iter_get_hash_table
  :: Ptr C'GHashTableIter -> IO (Ptr C'GHashTable)
foreign import ccall "&g_hash_table_iter_get_hash_table" p'g_hash_table_iter_get_hash_table
  :: FunPtr (Ptr C'GHashTableIter -> IO (Ptr C'GHashTable))

{-# LINE 51 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_iter_remove" c'g_hash_table_iter_remove
  :: Ptr C'GHashTableIter -> IO ()
foreign import ccall "&g_hash_table_iter_remove" p'g_hash_table_iter_remove
  :: FunPtr (Ptr C'GHashTableIter -> IO ())

{-# LINE 52 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_hash_table_iter_steal" c'g_hash_table_iter_steal
  :: Ptr C'GHashTableIter -> IO ()
foreign import ccall "&g_hash_table_iter_steal" p'g_hash_table_iter_steal
  :: FunPtr (Ptr C'GHashTableIter -> IO ())

{-# LINE 53 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}

foreign import ccall "g_direct_equal" c'g_direct_equal
  :: C'gconstpointer -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_direct_equal" p'g_direct_equal
  :: FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 55 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_direct_hash" c'g_direct_hash
  :: C'gconstpointer -> IO C'guint
foreign import ccall "&g_direct_hash" p'g_direct_hash
  :: FunPtr (C'gconstpointer -> IO C'guint)

{-# LINE 56 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_int_equal" c'g_int_equal
  :: C'gconstpointer -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_int_equal" p'g_int_equal
  :: FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 57 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_int_hash" c'g_int_hash
  :: C'gconstpointer -> IO C'guint
foreign import ccall "&g_int_hash" p'g_int_hash
  :: FunPtr (C'gconstpointer -> IO C'guint)

{-# LINE 58 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_int64_equal" c'g_int64_equal
  :: C'gconstpointer -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_int64_equal" p'g_int64_equal
  :: FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 59 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_int64_hash" c'g_int64_hash
  :: C'gconstpointer -> IO C'guint
foreign import ccall "&g_int64_hash" p'g_int64_hash
  :: FunPtr (C'gconstpointer -> IO C'guint)

{-# LINE 60 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_double_equal" c'g_double_equal
  :: C'gconstpointer -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_double_equal" p'g_double_equal
  :: FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 61 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_double_hash" c'g_double_hash
  :: C'gconstpointer -> IO C'guint
foreign import ccall "&g_double_hash" p'g_double_hash
  :: FunPtr (C'gconstpointer -> IO C'guint)

{-# LINE 62 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_str_equal" c'g_str_equal
  :: C'gconstpointer -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_str_equal" p'g_str_equal
  :: FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gboolean)

{-# LINE 63 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}
foreign import ccall "g_str_hash" c'g_str_hash
  :: C'gconstpointer -> IO C'guint
foreign import ccall "&g_str_hash" p'g_str_hash
  :: FunPtr (C'gconstpointer -> IO C'guint)

{-# LINE 64 "src/Bindings/GLib/DataTypes/HashTables.hsc" #-}