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

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

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

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

module Bindings.GLib.DataTypes.Strings where
import Bindings.GLib.Fundamentals.BasicTypes
import Bindings.GLib.Utilities.UnicodeManipulation
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 10 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}

data C'GString = C'GString{
{-# LINE 12 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}

  c'GString'str :: Ptr C'gchar
{-# LINE 13 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
,
  c'GString'len :: C'gsize
{-# LINE 14 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
,
  c'GString'allocated_len :: C'gsize
{-# LINE 15 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GString where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GString v0 v1 v2
  poke p (C'GString v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

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

foreign import ccall "g_string_new" c'g_string_new
  :: Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_new" p'g_string_new
  :: FunPtr (Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 18 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_new_len" c'g_string_new_len
  :: Ptr C'gchar -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_new_len" p'g_string_new_len
  :: FunPtr (Ptr C'gchar -> C'gssize -> IO (Ptr C'GString))

{-# LINE 19 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_sized_new" c'g_string_sized_new
  :: C'gsize -> IO (Ptr C'GString)
foreign import ccall "&g_string_sized_new" p'g_string_sized_new
  :: FunPtr (C'gsize -> IO (Ptr C'GString))

{-# LINE 20 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_assign" c'g_string_assign
  :: Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_assign" p'g_string_assign
  :: FunPtr (Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 21 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_append" c'g_string_append
  :: Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_append" p'g_string_append
  :: FunPtr (Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 22 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_append_c" c'g_string_append_c
  :: Ptr C'GString -> C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_append_c" p'g_string_append_c
  :: FunPtr (Ptr C'GString -> C'gchar -> IO (Ptr C'GString))

{-# LINE 23 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_append_unichar" c'g_string_append_unichar
  :: Ptr C'GString -> C'gunichar -> IO (Ptr C'GString)
foreign import ccall "&g_string_append_unichar" p'g_string_append_unichar
  :: FunPtr (Ptr C'GString -> C'gunichar -> IO (Ptr C'GString))

{-# LINE 25 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_append_len" c'g_string_append_len
  :: Ptr C'GString -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_append_len" p'g_string_append_len
  :: FunPtr (Ptr C'GString -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString))

{-# LINE 27 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_append_uri_escaped" c'g_string_append_uri_escaped
  :: Ptr C'GString -> CString -> CString -> C'gboolean -> IO (Ptr C'GString)
foreign import ccall "&g_string_append_uri_escaped" p'g_string_append_uri_escaped
  :: FunPtr (Ptr C'GString -> CString -> CString -> C'gboolean -> IO (Ptr C'GString))

{-# LINE 29 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_prepend" c'g_string_prepend
  :: Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_prepend" p'g_string_prepend
  :: FunPtr (Ptr C'GString -> Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 30 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_prepend_c" c'g_string_prepend_c
  :: Ptr C'GString -> C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_prepend_c" p'g_string_prepend_c
  :: FunPtr (Ptr C'GString -> C'gchar -> IO (Ptr C'GString))

{-# LINE 31 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_prepend_unichar" c'g_string_prepend_unichar
  :: Ptr C'GString -> C'gunichar -> IO (Ptr C'GString)
foreign import ccall "&g_string_prepend_unichar" p'g_string_prepend_unichar
  :: FunPtr (Ptr C'GString -> C'gunichar -> IO (Ptr C'GString))

{-# LINE 33 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_prepend_len" c'g_string_prepend_len
  :: Ptr C'GString -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_prepend_len" p'g_string_prepend_len
  :: FunPtr (Ptr C'GString -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString))

{-# LINE 35 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_insert" c'g_string_insert
  :: Ptr C'GString -> C'gssize -> Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_insert" p'g_string_insert
  :: FunPtr (Ptr C'GString -> C'gssize -> Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 37 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_insert_c" c'g_string_insert_c
  :: Ptr C'GString -> C'gssize -> C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_insert_c" p'g_string_insert_c
  :: FunPtr (Ptr C'GString -> C'gssize -> C'gchar -> IO (Ptr C'GString))

{-# LINE 39 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_insert_unichar" c'g_string_insert_unichar
  :: Ptr C'GString -> C'gssize -> C'gunichar -> IO (Ptr C'GString)
foreign import ccall "&g_string_insert_unichar" p'g_string_insert_unichar
  :: FunPtr (Ptr C'GString -> C'gssize -> C'gunichar -> IO (Ptr C'GString))

{-# LINE 41 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_insert_len" c'g_string_insert_len
  :: Ptr C'GString -> C'gssize -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_insert_len" p'g_string_insert_len
  :: FunPtr (Ptr C'GString -> C'gssize -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString))

{-# LINE 43 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_overwrite" c'g_string_overwrite
  :: Ptr C'GString -> C'gsize -> Ptr C'gchar -> IO (Ptr C'GString)
foreign import ccall "&g_string_overwrite" p'g_string_overwrite
  :: FunPtr (Ptr C'GString -> C'gsize -> Ptr C'gchar -> IO (Ptr C'GString))

{-# LINE 45 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_overwrite_len" c'g_string_overwrite_len
  :: Ptr C'GString -> C'gsize -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_overwrite_len" p'g_string_overwrite_len
  :: FunPtr (Ptr C'GString -> C'gsize -> Ptr C'gchar -> C'gssize -> IO (Ptr C'GString))

{-# LINE 47 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_erase" c'g_string_erase
  :: Ptr C'GString -> C'gssize -> C'gssize -> IO (Ptr C'GString)
foreign import ccall "&g_string_erase" p'g_string_erase
  :: FunPtr (Ptr C'GString -> C'gssize -> C'gssize -> IO (Ptr C'GString))

{-# LINE 49 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_truncate" c'g_string_truncate
  :: Ptr C'GString -> C'gsize -> IO (Ptr C'GString)
foreign import ccall "&g_string_truncate" p'g_string_truncate
  :: FunPtr (Ptr C'GString -> C'gsize -> IO (Ptr C'GString))

{-# LINE 50 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_set_size" c'g_string_set_size
  :: Ptr C'GString -> C'gsize -> IO (Ptr C'GString)
foreign import ccall "&g_string_set_size" p'g_string_set_size
  :: FunPtr (Ptr C'GString -> C'gsize -> IO (Ptr C'GString))

{-# LINE 51 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_free" c'g_string_free
  :: Ptr C'GString -> C'gboolean -> IO (Ptr C'gchar)
foreign import ccall "&g_string_free" p'g_string_free
  :: FunPtr (Ptr C'GString -> C'gboolean -> IO (Ptr C'gchar))

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

{-# LINE 53 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}
foreign import ccall "g_string_equal" c'g_string_equal
  :: Ptr C'GString -> Ptr C'GString -> IO C'gboolean
foreign import ccall "&g_string_equal" p'g_string_equal
  :: FunPtr (Ptr C'GString -> Ptr C'GString -> IO C'gboolean)

{-# LINE 54 "src/Bindings/GLib/DataTypes/Strings.hsc" #-}