-- GENERATED by C->Haskell Compiler, version 0.13.9 (gtk2hs branch) "Bin IO", 27 May 2012 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Graphics/UI/Gtk/WebKit/DOM/Storage.chs" #-}
module Graphics.UI.Gtk.WebKit.DOM.Storage
       (storageKey, storageGetItem, storageSetItem, storageRemoveItem,
        storageClear, storageGetLength, Storage, StorageClass,
        castToStorage, gTypeStorage, toStorage)
       where
import System.Glib.FFI
import System.Glib.UTFString
import Control.Applicative
import Graphics.UI.Gtk.WebKit.Types
{-# LINE 9 "./Graphics/UI/Gtk/WebKit/DOM/Storage.chs" #-}
import System.Glib.GError
import Graphics.UI.Gtk.WebKit.DOM.EventM


storageKey :: (StorageClass self) => self -> Word -> IO String
storageKey self index = (\(Storage arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_key argPtr1 arg2) (toStorage self) (fromIntegral index) >>= readUTFString


storageGetItem :: (StorageClass self) => self -> String -> IO String
storageGetItem self key =
  (withUTFString key $ \keyPtr ->
    (\(Storage arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_get_item argPtr1 arg2) (toStorage self) keyPtr)
  >>= readUTFString


storageSetItem :: (StorageClass self) => self -> String -> String -> IO ()
storageSetItem self key data'
  = propagateGError $
      \ errorPtr_ ->
        withUTFString data' $
          \ dataPtr ->
            withUTFString key $
              \ keyPtr ->
                (\(Storage arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_set_item argPtr1 arg2 arg3 arg4) (toStorage self) keyPtr
              dataPtr
          errorPtr_


storageRemoveItem :: (StorageClass self) => self -> String -> IO ()
storageRemoveItem self key = withUTFString key $ \keyPtr ->
    (\(Storage arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_remove_item argPtr1 arg2) (toStorage self) keyPtr


storageClear :: (StorageClass self) => self -> IO ()
storageClear = (\(Storage arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_clear argPtr1) . toStorage


storageGetLength :: (StorageClass self) => self -> IO Word
storageGetLength self = fromIntegral <$> ((\(Storage arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_dom_storage_get_length argPtr1) (toStorage self))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_key"
  webkit_dom_storage_key :: ((Ptr Storage) -> (CULong -> (IO (Ptr CChar))))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_get_item"
  webkit_dom_storage_get_item :: ((Ptr Storage) -> ((Ptr CChar) -> (IO (Ptr CChar))))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_set_item"
  webkit_dom_storage_set_item :: ((Ptr Storage) -> ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO ())))))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_remove_item"
  webkit_dom_storage_remove_item :: ((Ptr Storage) -> ((Ptr CChar) -> (IO ())))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_clear"
  webkit_dom_storage_clear :: ((Ptr Storage) -> (IO ()))

foreign import ccall safe "dist/build/Graphics/UI/Gtk/WebKit/DOM/Storage.h webkit_dom_storage_get_length"
  webkit_dom_storage_get_length :: ((Ptr Storage) -> (IO CULong))