{-# LINE 1 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LINE 2 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 3 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 4 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
module Bindings.Friso.Raw.FrisoAPI where
import Foreign.Ptr
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 7 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{- typedef unsigned short ushort_t; -}
type C'ushort_t = CUShort

{-# LINE 10 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef unsigned char uchar_t; -}
type C'uchar_t = CUChar

{-# LINE 12 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef unsigned int uint_t; -}
type C'uint_t = CUInt

{-# LINE 14 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef char * fstring; -}
type C'fstring = CString

{-# LINE 16 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct {
            fstring buffer; uint_t length; uint_t allocs;
        } string_buffer_entry; -}

{-# LINE 20 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 21 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 22 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 23 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'string_buffer_entry = C'string_buffer_entry{
  c'string_buffer_entry'buffer :: CString,
  c'string_buffer_entry'length :: CUInt,
  c'string_buffer_entry'allocs :: CUInt
} deriving (Eq,Show)
p'string_buffer_entry'buffer p = plusPtr p 0
p'string_buffer_entry'buffer :: Ptr (C'string_buffer_entry) -> Ptr (CString)
p'string_buffer_entry'length p = plusPtr p 8
p'string_buffer_entry'length :: Ptr (C'string_buffer_entry) -> Ptr (CUInt)
p'string_buffer_entry'allocs p = plusPtr p 12
p'string_buffer_entry'allocs :: Ptr (C'string_buffer_entry) -> Ptr (CUInt)
instance Storable C'string_buffer_entry where
  sizeOf _ = 16
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 12
    return $ C'string_buffer_entry v0 v1 v2
  poke p (C'string_buffer_entry v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 12 v2
    return ()

{-# LINE 24 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef string_buffer_entry * string_buffer_t; -}
type C'string_buffer_t = C'string_buffer_entry

{-# LINE 26 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_string_buffer_with_opacity" c'new_string_buffer_with_opacity
  :: CUInt -> IO (Ptr C'string_buffer_entry)
foreign import ccall "&new_string_buffer_with_opacity" p'new_string_buffer_with_opacity
  :: FunPtr (CUInt -> IO (Ptr C'string_buffer_entry))

{-# LINE 27 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_string_buffer_with_string" c'new_string_buffer_with_string
  :: CString -> IO (Ptr C'string_buffer_entry)
foreign import ccall "&new_string_buffer_with_string" p'new_string_buffer_with_string
  :: FunPtr (CString -> IO (Ptr C'string_buffer_entry))

{-# LINE 28 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_append" c'string_buffer_append
  :: Ptr C'string_buffer_entry -> CString -> IO ()
foreign import ccall "&string_buffer_append" p'string_buffer_append
  :: FunPtr (Ptr C'string_buffer_entry -> CString -> IO ())

{-# LINE 29 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_append_char" c'string_buffer_append_char
  :: Ptr C'string_buffer_entry -> CString -> IO ()
foreign import ccall "&string_buffer_append_char" p'string_buffer_append_char
  :: FunPtr (Ptr C'string_buffer_entry -> CString -> IO ())

{-# LINE 30 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_insert" c'string_buffer_insert
  :: (Ptr C'string_buffer_entry) -> CUInt -> CString -> IO ()
foreign import ccall "&string_buffer_insert" p'string_buffer_insert
  :: FunPtr ((Ptr C'string_buffer_entry) -> CUInt -> CString -> IO ())

{-# LINE 31 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_remove" c'string_buffer_remove
  :: Ptr C'string_buffer_entry -> CUInt -> CUInt -> IO CString
foreign import ccall "&string_buffer_remove" p'string_buffer_remove
  :: FunPtr (Ptr C'string_buffer_entry -> CUInt -> CUInt -> IO CString)

{-# LINE 32 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_trim" c'string_buffer_trim
  :: Ptr C'string_buffer_entry -> IO (Ptr C'string_buffer_entry)
foreign import ccall "&string_buffer_trim" p'string_buffer_trim
  :: FunPtr (Ptr C'string_buffer_entry -> IO (Ptr C'string_buffer_entry))

{-# LINE 33 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_devote" c'string_buffer_devote
  :: Ptr C'string_buffer_entry -> IO CString
foreign import ccall "&string_buffer_devote" p'string_buffer_devote
  :: FunPtr (Ptr C'string_buffer_entry -> IO CString)

{-# LINE 34 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_buffer_clear" c'string_buffer_clear
  :: Ptr C'string_buffer_entry -> IO ()
foreign import ccall "&string_buffer_clear" p'string_buffer_clear
  :: FunPtr (Ptr C'string_buffer_entry -> IO ())

{-# LINE 35 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "free_string_buffer" c'free_string_buffer
  :: Ptr C'string_buffer_entry -> IO ()
foreign import ccall "&free_string_buffer" p'free_string_buffer
  :: FunPtr (Ptr C'string_buffer_entry -> IO ())

{-# LINE 36 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct {
            fstring source;
            uint_t srcLen;
            fstring delimiter;
            uint_t delLen;
            uint_t idx;
        } string_split_entry; -}

{-# LINE 44 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 45 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 46 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 47 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 48 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 49 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'string_split_entry = C'string_split_entry{
  c'string_split_entry'source :: CString,
  c'string_split_entry'srcLen :: CUInt,
  c'string_split_entry'delimiter :: CString,
  c'string_split_entry'delLen :: CUInt,
  c'string_split_entry'idx :: CUInt
} deriving (Eq,Show)
p'string_split_entry'source p = plusPtr p 0
p'string_split_entry'source :: Ptr (C'string_split_entry) -> Ptr (CString)
p'string_split_entry'srcLen p = plusPtr p 8
p'string_split_entry'srcLen :: Ptr (C'string_split_entry) -> Ptr (CUInt)
p'string_split_entry'delimiter p = plusPtr p 16
p'string_split_entry'delimiter :: Ptr (C'string_split_entry) -> Ptr (CString)
p'string_split_entry'delLen p = plusPtr p 24
p'string_split_entry'delLen :: Ptr (C'string_split_entry) -> Ptr (CUInt)
p'string_split_entry'idx p = plusPtr p 28
p'string_split_entry'idx :: Ptr (C'string_split_entry) -> Ptr (CUInt)
instance Storable C'string_split_entry where
  sizeOf _ = 32
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 24
    v4 <- peekByteOff p 28
    return $ C'string_split_entry v0 v1 v2 v3 v4
  poke p (C'string_split_entry v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    pokeByteOff p 24 v3
    pokeByteOff p 28 v4
    return ()

{-# LINE 50 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef string_split_entry * string_split_t; -}
type C'string_split_t = C'string_split_entry

{-# LINE 52 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_string_split" c'new_string_split
  :: CString -> CString -> IO (Ptr C'string_split_entry)
foreign import ccall "&new_string_split" p'new_string_split
  :: FunPtr (CString -> CString -> IO (Ptr C'string_split_entry))

{-# LINE 53 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_split_reset" c'string_split_reset
  :: Ptr C'string_split_entry -> CString -> CString -> IO ()
foreign import ccall "&string_split_reset" p'string_split_reset
  :: FunPtr (Ptr C'string_split_entry -> CString -> CString -> IO ())

{-# LINE 54 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_split_set_source" c'string_split_set_source
  :: Ptr C'string_split_entry -> CString -> IO ()
foreign import ccall "&string_split_set_source" p'string_split_set_source
  :: FunPtr (Ptr C'string_split_entry -> CString -> IO ())

{-# LINE 55 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_split_set_delimiter" c'string_split_set_delimiter
  :: Ptr C'string_split_entry -> CString -> IO ()
foreign import ccall "&string_split_set_delimiter" p'string_split_set_delimiter
  :: FunPtr (Ptr C'string_split_entry -> CString -> IO ())

{-# LINE 56 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "free_string_split" c'free_string_split
  :: Ptr C'string_split_entry -> IO ()
foreign import ccall "&free_string_split" p'free_string_split
  :: FunPtr (Ptr C'string_split_entry -> IO ())

{-# LINE 57 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "string_split_next" c'string_split_next
  :: Ptr C'string_split_entry -> CString -> IO CString
foreign import ccall "&string_split_next" p'string_split_next
  :: FunPtr (Ptr C'string_split_entry -> CString -> IO CString)

{-# LINE 58 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct {
            void * * items; uint_t allocs; uint_t length;
        } friso_array_entry; -}

{-# LINE 62 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 63 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 64 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 65 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'friso_array_entry = C'friso_array_entry{
  c'friso_array_entry'items :: Ptr (Ptr ()),
  c'friso_array_entry'allocs :: CUInt,
  c'friso_array_entry'length :: CUInt
} deriving (Eq,Show)
p'friso_array_entry'items p = plusPtr p 0
p'friso_array_entry'items :: Ptr (C'friso_array_entry) -> Ptr (Ptr (Ptr ()))
p'friso_array_entry'allocs p = plusPtr p 8
p'friso_array_entry'allocs :: Ptr (C'friso_array_entry) -> Ptr (CUInt)
p'friso_array_entry'length p = plusPtr p 12
p'friso_array_entry'length :: Ptr (C'friso_array_entry) -> Ptr (CUInt)
instance Storable C'friso_array_entry where
  sizeOf _ = 16
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 12
    return $ C'friso_array_entry v0 v1 v2
  poke p (C'friso_array_entry v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 12 v2
    return ()

{-# LINE 66 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef friso_array_entry * friso_array_t; -}
type C'friso_array_t = C'friso_array_entry

{-# LINE 68 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_array_list_with_opacity" c'new_array_list_with_opacity
  :: CUInt -> IO (Ptr C'friso_array_entry)
foreign import ccall "&new_array_list_with_opacity" p'new_array_list_with_opacity
  :: FunPtr (CUInt -> IO (Ptr C'friso_array_entry))

{-# LINE 69 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "free_array_list" c'free_array_list
  :: Ptr C'friso_array_entry -> IO ()
foreign import ccall "&free_array_list" p'free_array_list
  :: FunPtr (Ptr C'friso_array_entry -> IO ())

{-# LINE 70 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_add" c'array_list_add
  :: Ptr C'friso_array_entry -> Ptr () -> IO ()
foreign import ccall "&array_list_add" p'array_list_add
  :: FunPtr (Ptr C'friso_array_entry -> Ptr () -> IO ())

{-# LINE 71 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_insert" c'array_list_insert
  :: Ptr C'friso_array_entry -> CUInt -> Ptr () -> IO ()
foreign import ccall "&array_list_insert" p'array_list_insert
  :: FunPtr (Ptr C'friso_array_entry -> CUInt -> Ptr () -> IO ())

{-# LINE 72 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_get" c'array_list_get
  :: Ptr C'friso_array_entry -> CUInt -> IO (Ptr ())
foreign import ccall "&array_list_get" p'array_list_get
  :: FunPtr (Ptr C'friso_array_entry -> CUInt -> IO (Ptr ()))

{-# LINE 73 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_set" c'array_list_set
  :: Ptr C'friso_array_entry -> CUInt -> Ptr () -> IO (Ptr ())
foreign import ccall "&array_list_set" p'array_list_set
  :: FunPtr (Ptr C'friso_array_entry -> CUInt -> Ptr () -> IO (Ptr ()))

{-# LINE 74 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_remove" c'array_list_remove
  :: Ptr C'friso_array_entry -> CUInt -> IO (Ptr ())
foreign import ccall "&array_list_remove" p'array_list_remove
  :: FunPtr (Ptr C'friso_array_entry -> CUInt -> IO (Ptr ()))

{-# LINE 75 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_trim" c'array_list_trim
  :: Ptr C'friso_array_entry -> IO (Ptr C'friso_array_entry)
foreign import ccall "&array_list_trim" p'array_list_trim
  :: FunPtr (Ptr C'friso_array_entry -> IO (Ptr C'friso_array_entry))

{-# LINE 76 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "array_list_clear" c'array_list_clear
  :: Ptr C'friso_array_entry -> IO (Ptr C'friso_array_entry)
foreign import ccall "&array_list_clear" p'array_list_clear
  :: FunPtr (Ptr C'friso_array_entry -> IO (Ptr C'friso_array_entry))

{-# LINE 77 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- struct friso_link_node {
    void * value;
    struct friso_link_node * prev;
    struct friso_link_node * next;
}; -}

{-# LINE 83 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 84 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 85 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 86 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'friso_link_node = C'friso_link_node{
  c'friso_link_node'value :: Ptr (),
  c'friso_link_node'prev :: Ptr C'friso_link_node,
  c'friso_link_node'next :: Ptr C'friso_link_node
} deriving (Eq,Show)
p'friso_link_node'value p = plusPtr p 0
p'friso_link_node'value :: Ptr (C'friso_link_node) -> Ptr (Ptr ())
p'friso_link_node'prev p = plusPtr p 8
p'friso_link_node'prev :: Ptr (C'friso_link_node) -> Ptr (Ptr C'friso_link_node)
p'friso_link_node'next p = plusPtr p 16
p'friso_link_node'next :: Ptr (C'friso_link_node) -> Ptr (Ptr C'friso_link_node)
instance Storable C'friso_link_node where
  sizeOf _ = 24
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    return $ C'friso_link_node v0 v1 v2
  poke p (C'friso_link_node v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 87 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct friso_link_node link_node_entry; -}
type C'link_node_entry = C'friso_link_node

{-# LINE 89 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef link_node_entry * link_node_t; -}
type C'link_node_t = C'friso_link_node

{-# LINE 91 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct {
            link_node_t head; link_node_t tail; uint_t size;
        } friso_link_entry; -}

{-# LINE 95 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 96 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 97 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 98 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'friso_link_entry = C'friso_link_entry{
  c'friso_link_entry'head :: C'friso_link_node,
  c'friso_link_entry'tail :: C'friso_link_node,
  c'friso_link_entry'size :: CUInt
} deriving (Eq,Show)
p'friso_link_entry'head p = plusPtr p 0
p'friso_link_entry'head :: Ptr (C'friso_link_entry) -> Ptr (C'friso_link_node)
p'friso_link_entry'tail p = plusPtr p 8
p'friso_link_entry'tail :: Ptr (C'friso_link_entry) -> Ptr (C'friso_link_node)
p'friso_link_entry'size p = plusPtr p 16
p'friso_link_entry'size :: Ptr (C'friso_link_entry) -> Ptr (CUInt)
instance Storable C'friso_link_entry where
  sizeOf _ = 24
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    return $ C'friso_link_entry v0 v1 v2
  poke p (C'friso_link_entry v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 99 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef friso_link_entry * friso_link_t; -}
type C'friso_link_t = C'friso_link_entry

{-# LINE 101 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_link_list" c'new_link_list
  :: IO (Ptr C'friso_link_entry)
foreign import ccall "&new_link_list" p'new_link_list
  :: FunPtr (IO (Ptr C'friso_link_entry))

{-# LINE 102 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "free_link_list" c'free_link_list
  :: Ptr C'friso_link_entry -> IO ()
foreign import ccall "&free_link_list" p'free_link_list
  :: FunPtr (Ptr C'friso_link_entry -> IO ())

{-# LINE 103 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_clear" c'link_list_clear
  :: Ptr C'friso_link_entry -> IO (Ptr C'friso_link_entry)
foreign import ccall "&link_list_clear" p'link_list_clear
  :: FunPtr (Ptr C'friso_link_entry -> IO (Ptr C'friso_link_entry))

{-# LINE 104 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_add" c'link_list_add
  :: Ptr C'friso_link_entry -> Ptr () -> IO ()
foreign import ccall "&link_list_add" p'link_list_add
  :: FunPtr (Ptr C'friso_link_entry -> Ptr () -> IO ())

{-# LINE 105 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_insert_before" c'link_list_insert_before
  :: Ptr C'friso_link_entry -> CUInt -> Ptr () -> IO ()
foreign import ccall "&link_list_insert_before" p'link_list_insert_before
  :: FunPtr (Ptr C'friso_link_entry -> CUInt -> Ptr () -> IO ())

{-# LINE 106 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_get" c'link_list_get
  :: Ptr C'friso_link_entry -> CUInt -> IO (Ptr ())
foreign import ccall "&link_list_get" p'link_list_get
  :: FunPtr (Ptr C'friso_link_entry -> CUInt -> IO (Ptr ()))

{-# LINE 107 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_set" c'link_list_set
  :: Ptr C'friso_link_entry -> CUInt -> Ptr () -> IO (Ptr ())
foreign import ccall "&link_list_set" p'link_list_set
  :: FunPtr (Ptr C'friso_link_entry -> CUInt -> Ptr () -> IO (Ptr ()))

{-# LINE 108 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_remove" c'link_list_remove
  :: Ptr C'friso_link_entry -> CUInt -> IO (Ptr ())
foreign import ccall "&link_list_remove" p'link_list_remove
  :: FunPtr (Ptr C'friso_link_entry -> CUInt -> IO (Ptr ()))

{-# LINE 109 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_remove_node" c'link_list_remove_node
  :: Ptr C'friso_link_entry -> (Ptr C'friso_link_node) -> IO (Ptr ())
foreign import ccall "&link_list_remove_node" p'link_list_remove_node
  :: FunPtr (Ptr C'friso_link_entry -> (Ptr C'friso_link_node) -> IO (Ptr ()))

{-# LINE 110 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_remove_first" c'link_list_remove_first
  :: Ptr C'friso_link_entry -> IO (Ptr ())
foreign import ccall "&link_list_remove_first" p'link_list_remove_first
  :: FunPtr (Ptr C'friso_link_entry -> IO (Ptr ()))

{-# LINE 111 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_remove_last" c'link_list_remove_last
  :: Ptr C'friso_link_entry -> IO (Ptr ())
foreign import ccall "&link_list_remove_last" p'link_list_remove_last
  :: FunPtr (Ptr C'friso_link_entry -> IO (Ptr ()))

{-# LINE 112 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_add_last" c'link_list_add_last
  :: Ptr C'friso_link_entry -> Ptr () -> IO ()
foreign import ccall "&link_list_add_last" p'link_list_add_last
  :: FunPtr (Ptr C'friso_link_entry -> Ptr () -> IO ())

{-# LINE 113 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "link_list_add_first" c'link_list_add_first
  :: Ptr C'friso_link_entry -> Ptr () -> IO ()
foreign import ccall "&link_list_add_first" p'link_list_add_first
  :: FunPtr (Ptr C'friso_link_entry -> Ptr () -> IO ())

{-# LINE 114 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- struct hash_entry {
    fstring _key; void * _val; struct hash_entry * _next;
}; -}

{-# LINE 118 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 119 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 120 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 121 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'hash_entry = C'hash_entry{
  c'hash_entry'_key :: CString,
  c'hash_entry'_val :: Ptr (),
  c'hash_entry'_next :: Ptr C'hash_entry
} deriving (Eq,Show)
p'hash_entry'_key p = plusPtr p 0
p'hash_entry'_key :: Ptr (C'hash_entry) -> Ptr (CString)
p'hash_entry'_val p = plusPtr p 8
p'hash_entry'_val :: Ptr (C'hash_entry) -> Ptr (Ptr ())
p'hash_entry'_next p = plusPtr p 16
p'hash_entry'_next :: Ptr (C'hash_entry) -> Ptr (Ptr C'hash_entry)
instance Storable C'hash_entry where
  sizeOf _ = 24
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    return $ C'hash_entry v0 v1 v2
  poke p (C'hash_entry v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    return ()

{-# LINE 122 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct hash_entry friso_hash_entry; -}
type C'friso_hash_entry = C'hash_entry

{-# LINE 124 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef friso_hash_entry * hash_entry_t; -}
type C'hash_entry_t = C'hash_entry

{-# LINE 126 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
type C'fhash_callback_fn_t = FunPtr (Ptr C'hash_entry -> IO ())
foreign import ccall "wrapper" mk'fhash_callback_fn_t
  :: (Ptr C'hash_entry -> IO ()) -> IO C'fhash_callback_fn_t
foreign import ccall "dynamic" mK'fhash_callback_fn_t
  :: C'fhash_callback_fn_t -> (Ptr C'hash_entry -> IO ())

{-# LINE 127 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef struct {
            uint_t length;
            uint_t size;
            float factor;
            uint_t threshold;
            hash_entry_t * table;
        } friso_hash_cdt; -}

{-# LINE 135 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 136 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 137 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 138 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 139 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}

{-# LINE 140 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
data C'friso_hash_cdt = C'friso_hash_cdt{
  c'friso_hash_cdt'length :: CUInt,
  c'friso_hash_cdt'size :: CUInt,
  c'friso_hash_cdt'factor :: CFloat,
  c'friso_hash_cdt'threshold :: CUInt,
  c'friso_hash_cdt'table :: Ptr C'hash_entry
} deriving (Eq,Show)
p'friso_hash_cdt'length p = plusPtr p 0
p'friso_hash_cdt'length :: Ptr (C'friso_hash_cdt) -> Ptr (CUInt)
p'friso_hash_cdt'size p = plusPtr p 4
p'friso_hash_cdt'size :: Ptr (C'friso_hash_cdt) -> Ptr (CUInt)
p'friso_hash_cdt'factor p = plusPtr p 8
p'friso_hash_cdt'factor :: Ptr (C'friso_hash_cdt) -> Ptr (CFloat)
p'friso_hash_cdt'threshold p = plusPtr p 12
p'friso_hash_cdt'threshold :: Ptr (C'friso_hash_cdt) -> Ptr (CUInt)
p'friso_hash_cdt'table p = plusPtr p 16
p'friso_hash_cdt'table :: Ptr (C'friso_hash_cdt) -> Ptr (Ptr C'hash_entry)
instance Storable C'friso_hash_cdt where
  sizeOf _ = 24
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 16
    return $ C'friso_hash_cdt v0 v1 v2 v3 v4
  poke p (C'friso_hash_cdt v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 16 v4
    return ()

{-# LINE 141 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
{- typedef friso_hash_cdt * friso_hash_t; -}
type C'friso_hash_t = C'friso_hash_cdt

{-# LINE 143 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "new_hash_table" c'new_hash_table
  :: IO (Ptr C'friso_hash_cdt)
foreign import ccall "&new_hash_table" p'new_hash_table
  :: FunPtr (IO (Ptr C'friso_hash_cdt))

{-# LINE 144 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "free_hash_table" c'free_hash_table
  :: Ptr C'friso_hash_cdt -> C'fhash_callback_fn_t -> IO ()
foreign import ccall "&free_hash_table" p'free_hash_table
  :: FunPtr (Ptr C'friso_hash_cdt -> C'fhash_callback_fn_t -> IO ())

{-# LINE 145 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "hash_put_mapping" c'hash_put_mapping
  :: Ptr C'friso_hash_cdt -> CString -> Ptr () -> IO ()
foreign import ccall "&hash_put_mapping" p'hash_put_mapping
  :: FunPtr (Ptr C'friso_hash_cdt -> CString -> Ptr () -> IO ())

{-# LINE 146 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "hash_exist_mapping" c'hash_exist_mapping
  :: Ptr C'friso_hash_cdt -> CString -> IO CInt
foreign import ccall "&hash_exist_mapping" p'hash_exist_mapping
  :: FunPtr (Ptr C'friso_hash_cdt -> CString -> IO CInt)

{-# LINE 147 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "hash_get_value" c'hash_get_value
  :: Ptr C'friso_hash_cdt -> CString -> IO (Ptr ())
foreign import ccall "&hash_get_value" p'hash_get_value
  :: FunPtr (Ptr C'friso_hash_cdt -> CString -> IO (Ptr ()))

{-# LINE 148 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}
foreign import ccall "hash_remove_mapping" c'hash_remove_mapping
  :: Ptr C'friso_hash_cdt -> CString -> IO (Ptr C'hash_entry)
foreign import ccall "&hash_remove_mapping" p'hash_remove_mapping
  :: FunPtr (Ptr C'friso_hash_cdt -> CString -> IO (Ptr C'hash_entry))

{-# LINE 149 "Bindings/Friso/Raw/FrisoAPI.hsc" #-}