{-# LINE 1 "src/System/LibFuse3/Internal/C.hsc" #-}
{-# LANGUAGE RecordWildCards #-}
-- | C land.
--
-- This is an internal module. It is exposed to allow fine-tuning and workarounds but its API is not stable.
module System.LibFuse3.Internal.C where

import Data.Word (Word32, Word64)
import Foreign (FunPtr, Ptr, Storable, nullFunPtr, peekByteOff, pokeByteOff)
import Foreign.C (CDouble, CInt(CInt), CSize(CSize), CString, CUInt(CUInt))
import System.Clock (TimeSpec)
import System.LibFuse3.FileStat (FileStat)
import System.LibFuse3.FileSystemStats (FileSystemStats)
import System.Posix.Types (CDev(CDev), CGid(CGid), CMode(CMode), COff(COff), CSsize(CSsize), CUid(CUid))

import qualified Foreign
import qualified System.Posix.Internals as Posix




{-# LINE 21 "src/System/LibFuse3/Internal/C.hsc" #-}


{-# LINE 23 "src/System/LibFuse3/Internal/C.hsc" #-}

-- | @struct fuse_args@
data FuseArgs

-- | @struct fuse_buf@
data FuseBuf

-- | @struct fuse_bufvec@
data FuseBufvec

-- | @struct fuse_cmdline_opts@
data FuseCmdlineOpts

-- | The direct, storable representation of @struct fuse_config@.
--
-- Not to be confused with the high-level `System.LibFuse3.Internal.FuseConfig`.
data FuseConfig = FuseConfig
  { -- | @set_gid@
    FuseConfig -> CInt
setGid :: CInt
  , -- | @gid@
    FuseConfig -> CUInt
gid :: CUInt
  , -- | @set_uid@
    FuseConfig -> CInt
setUid :: CInt
  , -- | @uid@
    FuseConfig -> CUInt
uid :: CUInt
  , -- | @set_mode@
    FuseConfig -> CInt
setMode :: CInt
  , -- | @umask@
    FuseConfig -> CUInt
umask :: CUInt
  , -- | @entry_timeout@
    FuseConfig -> CDouble
entryTimeout :: CDouble
  , -- | @negative_timeout@
    FuseConfig -> CDouble
negativeTimeout :: CDouble
  , -- | @attr_timeout@
    FuseConfig -> CDouble
attrTimeout :: CDouble
  , -- | @intr@
    FuseConfig -> CInt
intr :: CInt
  , -- | @intr_signal@
    FuseConfig -> CInt
intrSignal :: CInt
  , -- | @remember@
    FuseConfig -> CInt
remember :: CInt
  , -- | @hard_remove@
    FuseConfig -> CInt
hardRemove :: CInt
  , -- | @use_ino@
    FuseConfig -> CInt
useIno :: CInt
  , -- | @readdir_ino@
    FuseConfig -> CInt
readdirIno :: CInt
  , -- | @direct_io@
    FuseConfig -> CInt
directIo :: CInt
  , -- | @kernel_cache@
    FuseConfig -> CInt
kernelCache :: CInt
  , -- | @auto_cache@
    FuseConfig -> CInt
autoCache :: CInt
  , -- | @ac_attr_timeout_set@
    FuseConfig -> CInt
acAttrTimeoutSet :: CInt
  , -- | @ac_attr_timeout@
    FuseConfig -> CDouble
acAttrTimeout :: CDouble
  , -- | @nullpath_ok@
    FuseConfig -> CInt
nullpathOk :: CInt
  }
  deriving (FuseConfig -> FuseConfig -> Bool
(FuseConfig -> FuseConfig -> Bool)
-> (FuseConfig -> FuseConfig -> Bool) -> Eq FuseConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FuseConfig -> FuseConfig -> Bool
$c/= :: FuseConfig -> FuseConfig -> Bool
== :: FuseConfig -> FuseConfig -> Bool
$c== :: FuseConfig -> FuseConfig -> Bool
Eq, Int -> FuseConfig -> ShowS
[FuseConfig] -> ShowS
FuseConfig -> String
(Int -> FuseConfig -> ShowS)
-> (FuseConfig -> String)
-> ([FuseConfig] -> ShowS)
-> Show FuseConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FuseConfig] -> ShowS
$cshowList :: [FuseConfig] -> ShowS
show :: FuseConfig -> String
$cshow :: FuseConfig -> String
showsPrec :: Int -> FuseConfig -> ShowS
$cshowsPrec :: Int -> FuseConfig -> ShowS
Show)

-- | Targets @struct fuse_config@.
instance Storable FuseConfig where
  sizeOf :: FuseConfig -> Int
sizeOf FuseConfig
_ = (Int
128)
{-# LINE 88 "src/System/LibFuse3/Internal/C.hsc" #-}

  alignment :: FuseConfig -> Int
alignment FuseConfig
_ = Int
8
{-# LINE 90 "src/System/LibFuse3/Internal/C.hsc" #-}

  peek :: Ptr FuseConfig -> IO FuseConfig
peek Ptr FuseConfig
ptr = do
    CInt
setGid           <- ((\Ptr FuseConfig
hsc_ptr -> Ptr FuseConfig -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr FuseConfig
hsc_ptr Int
0))             Ptr FuseConfig
ptr
{-# LINE 93 "src/System/LibFuse3/Internal/C.hsc" #-}
    gid              <- ((\hsc_ptr -> peekByteOff hsc_ptr 4))                 ptr
{-# LINE 94 "src/System/LibFuse3/Internal/C.hsc" #-}
    setUid           <- ((\hsc_ptr -> peekByteOff hsc_ptr 8))             ptr
{-# LINE 95 "src/System/LibFuse3/Internal/C.hsc" #-}
    uid              <- ((\hsc_ptr -> peekByteOff hsc_ptr 12))                 ptr
{-# LINE 96 "src/System/LibFuse3/Internal/C.hsc" #-}
    setMode          <- ((\hsc_ptr -> peekByteOff hsc_ptr 16))            ptr
{-# LINE 97 "src/System/LibFuse3/Internal/C.hsc" #-}
    umask            <- ((\hsc_ptr -> peekByteOff hsc_ptr 20))               ptr
{-# LINE 98 "src/System/LibFuse3/Internal/C.hsc" #-}
    entryTimeout     <- ((\hsc_ptr -> peekByteOff hsc_ptr 24))       ptr
{-# LINE 99 "src/System/LibFuse3/Internal/C.hsc" #-}
    negativeTimeout  <- ((\hsc_ptr -> peekByteOff hsc_ptr 32))    ptr
{-# LINE 100 "src/System/LibFuse3/Internal/C.hsc" #-}
    attrTimeout      <- ((\hsc_ptr -> peekByteOff hsc_ptr 40))        ptr
{-# LINE 101 "src/System/LibFuse3/Internal/C.hsc" #-}
    intr             <- ((\hsc_ptr -> peekByteOff hsc_ptr 48))                ptr
{-# LINE 102 "src/System/LibFuse3/Internal/C.hsc" #-}
    intrSignal       <- ((\hsc_ptr -> peekByteOff hsc_ptr 52))         ptr
{-# LINE 103 "src/System/LibFuse3/Internal/C.hsc" #-}
    remember         <- ((\hsc_ptr -> peekByteOff hsc_ptr 56))            ptr
{-# LINE 104 "src/System/LibFuse3/Internal/C.hsc" #-}
    hardRemove       <- ((\hsc_ptr -> peekByteOff hsc_ptr 60))         ptr
{-# LINE 105 "src/System/LibFuse3/Internal/C.hsc" #-}
    useIno           <- ((\hsc_ptr -> peekByteOff hsc_ptr 64))             ptr
{-# LINE 106 "src/System/LibFuse3/Internal/C.hsc" #-}
    readdirIno       <- ((\hsc_ptr -> peekByteOff hsc_ptr 68))         ptr
{-# LINE 107 "src/System/LibFuse3/Internal/C.hsc" #-}
    directIo         <- ((\hsc_ptr -> peekByteOff hsc_ptr 72))           ptr
{-# LINE 108 "src/System/LibFuse3/Internal/C.hsc" #-}
    kernelCache      <- ((\hsc_ptr -> peekByteOff hsc_ptr 76))        ptr
{-# LINE 109 "src/System/LibFuse3/Internal/C.hsc" #-}
    autoCache        <- ((\hsc_ptr -> peekByteOff hsc_ptr 80))          ptr
{-# LINE 110 "src/System/LibFuse3/Internal/C.hsc" #-}
    acAttrTimeoutSet <- ((\hsc_ptr -> peekByteOff hsc_ptr 88)) ptr
{-# LINE 111 "src/System/LibFuse3/Internal/C.hsc" #-}
    acAttrTimeout    <- ((\hsc_ptr -> peekByteOff hsc_ptr 96))     ptr
{-# LINE 112 "src/System/LibFuse3/Internal/C.hsc" #-}
    nullpathOk       <- ((\hsc_ptr -> peekByteOff hsc_ptr 104))         ptr
{-# LINE 113 "src/System/LibFuse3/Internal/C.hsc" #-}
    pure FuseConfig{..}

  poke :: Ptr FuseConfig -> FuseConfig -> IO ()
poke Ptr FuseConfig
ptr FuseConfig{CUInt
CInt
CDouble
nullpathOk :: CInt
acAttrTimeout :: CDouble
acAttrTimeoutSet :: CInt
autoCache :: CInt
kernelCache :: CInt
directIo :: CInt
readdirIno :: CInt
useIno :: CInt
hardRemove :: CInt
remember :: CInt
intrSignal :: CInt
intr :: CInt
attrTimeout :: CDouble
negativeTimeout :: CDouble
entryTimeout :: CDouble
umask :: CUInt
setMode :: CInt
uid :: CUInt
setUid :: CInt
gid :: CUInt
setGid :: CInt
nullpathOk :: FuseConfig -> CInt
acAttrTimeout :: FuseConfig -> CDouble
acAttrTimeoutSet :: FuseConfig -> CInt
autoCache :: FuseConfig -> CInt
kernelCache :: FuseConfig -> CInt
directIo :: FuseConfig -> CInt
readdirIno :: FuseConfig -> CInt
useIno :: FuseConfig -> CInt
hardRemove :: FuseConfig -> CInt
remember :: FuseConfig -> CInt
intrSignal :: FuseConfig -> CInt
intr :: FuseConfig -> CInt
attrTimeout :: FuseConfig -> CDouble
negativeTimeout :: FuseConfig -> CDouble
entryTimeout :: FuseConfig -> CDouble
umask :: FuseConfig -> CUInt
setMode :: FuseConfig -> CInt
uid :: FuseConfig -> CUInt
setUid :: FuseConfig -> CInt
gid :: FuseConfig -> CUInt
setGid :: FuseConfig -> CInt
..} = do
    ((\Ptr FuseConfig
hsc_ptr -> Ptr FuseConfig -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr FuseConfig
hsc_ptr Int
0))             Ptr FuseConfig
ptr CInt
setGid
{-# LINE 117 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4))                 ptr gid
{-# LINE 118 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8))             ptr setUid
{-# LINE 119 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 12))                 ptr uid
{-# LINE 120 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 16))            ptr setMode
{-# LINE 121 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 20))               ptr umask
{-# LINE 122 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 24))       ptr entryTimeout
{-# LINE 123 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 32))    ptr negativeTimeout
{-# LINE 124 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 40))        ptr attrTimeout
{-# LINE 125 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 48))                ptr intr
{-# LINE 126 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 52))         ptr intrSignal
{-# LINE 127 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 56))            ptr remember
{-# LINE 128 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 60))         ptr hardRemove
{-# LINE 129 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 64))             ptr useIno
{-# LINE 130 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 68))         ptr readdirIno
{-# LINE 131 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 72))           ptr directIo
{-# LINE 132 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 76))        ptr kernelCache
{-# LINE 133 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 80))          ptr autoCache
{-# LINE 134 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 88)) ptr acAttrTimeoutSet
{-# LINE 135 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 96))     ptr acAttrTimeout
{-# LINE 136 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 104))         ptr nullpathOk
{-# LINE 137 "src/System/LibFuse3/Internal/C.hsc" #-}

-- | @struct fuse_conn_info@
data FuseConnInfo

-- | @struct fuse_file_info@
data FuseFileInfo

-- | @typedef fuse_fill_dir_t@
type FuseFillDir = Ptr FuseFillDirBuf -> CString -> Ptr FileStat -> COff -> FuseFillDirFlags -> IO CInt

-- | @Ptr FuseFillDirBuf = void *@, used in `FuseFillDir`.
data FuseFillDirBuf

-- | @enum fuse_fill_dir_flags@
type FuseFillDirFlags = Word32
{-# LINE 152 "src/System/LibFuse3/Internal/C.hsc" #-}

-- | The direct, storable representation of @struct fuse_operations@.
--
-- All operations are optional. NULL indicates undefined operation. You may modify some
-- of the fields to fine-tune the behavior.
--
-- Not to be confused with Haskell-friendly `System.LibFuse3.Internal.FuseOperations`.
-- Also not to be confused with libfuse's low-level API @struct fuse_lowlevel_ops@.
data FuseOperations = FuseOperations
  { FuseOperations -> FunPtr CGetattr
fuseGetattr       :: FunPtr CGetattr
  , FuseOperations -> FunPtr CReadlink
fuseReadlink      :: FunPtr CReadlink
  , FuseOperations -> FunPtr CMknod
fuseMknod         :: FunPtr CMknod
  , FuseOperations -> FunPtr CMkdir
fuseMkdir         :: FunPtr CMkdir
  , FuseOperations -> FunPtr CUnlink
fuseUnlink        :: FunPtr CUnlink
  , FuseOperations -> FunPtr CUnlink
fuseRmdir         :: FunPtr CRmdir
  , FuseOperations -> FunPtr CSymlink
fuseSymlink       :: FunPtr CSymlink
  , FuseOperations -> FunPtr CRename
fuseRename        :: FunPtr CRename
  , FuseOperations -> FunPtr CSymlink
fuseLink          :: FunPtr CLink
  , FuseOperations -> FunPtr CChmod
fuseChmod         :: FunPtr CChmod
  , FuseOperations -> FunPtr CChown
fuseChown         :: FunPtr CChown
  , FuseOperations -> FunPtr CTruncate
fuseTruncate      :: FunPtr CTruncate
  , FuseOperations -> FunPtr COpen
fuseOpen          :: FunPtr COpen
  , FuseOperations -> FunPtr CRead
fuseRead          :: FunPtr CRead
  , FuseOperations -> FunPtr CRead
fuseWrite         :: FunPtr CWrite
  , FuseOperations -> FunPtr CStatfs
fuseStatfs        :: FunPtr CStatfs
  , FuseOperations -> FunPtr COpen
fuseFlush         :: FunPtr CFlush
  , FuseOperations -> FunPtr COpen
fuseRelease       :: FunPtr CRelease
  , FuseOperations -> FunPtr CFsync
fuseFsync         :: FunPtr CFsync
  , FuseOperations -> FunPtr CSetxattr
fuseSetxattr      :: FunPtr CSetxattr
  , FuseOperations -> FunPtr CGetxattr
fuseGetxattr      :: FunPtr CGetxattr
  , FuseOperations -> FunPtr CReadlink
fuseListxattr     :: FunPtr CListxattr
  , FuseOperations -> FunPtr CSymlink
fuseRemovexattr   :: FunPtr CRemovexattr
  , FuseOperations -> FunPtr COpen
fuseOpendir       :: FunPtr COpendir
  , FuseOperations -> FunPtr CReaddir
fuseReaddir       :: FunPtr CReaddir
  , FuseOperations -> FunPtr COpen
fuseReleasedir    :: FunPtr CReleasedir
  , FuseOperations -> FunPtr CFsync
fuseFsyncdir      :: FunPtr CFsyncdir
  , FuseOperations -> FunPtr CInit
fuseInit          :: FunPtr CInit
  , FuseOperations -> FunPtr CDestroy
fuseDestroy       :: FunPtr CDestroy
  , FuseOperations -> FunPtr CAccess
fuseAccess        :: FunPtr CAccess
  , FuseOperations -> FunPtr CChmod
fuseCreate        :: FunPtr CCreate
  , FuseOperations -> FunPtr CLock
fuseLock          :: FunPtr CLock
  , FuseOperations -> FunPtr CUtimens
fuseUtimens       :: FunPtr CUtimens
  , FuseOperations -> FunPtr CBmap
fuseBmap          :: FunPtr CBmap
  , FuseOperations -> FunPtr CIoctl
fuseIoctl         :: FunPtr CIoctl
  , FuseOperations -> FunPtr CPoll
fusePoll          :: FunPtr CPoll
  , FuseOperations -> FunPtr CWriteBuf
fuseWriteBuf      :: FunPtr CWriteBuf
  , FuseOperations -> FunPtr CReadBuf
fuseReadBuf       :: FunPtr CReadBuf
  , FuseOperations -> FunPtr CFlock
fuseFlock         :: FunPtr CFlock
  , FuseOperations -> FunPtr CFallocate
fuseFallocate     :: FunPtr CFallocate
  , FuseOperations -> FunPtr CCopyFileRange
fuseCopyFileRange :: FunPtr CCopyFileRange
  , FuseOperations -> FunPtr CLseek
fuseLseek         :: FunPtr CLseek
  }

instance Storable FuseOperations where
  sizeOf :: FuseOperations -> Int
sizeOf FuseOperations
_ = (Int
336)
{-# LINE 207 "src/System/LibFuse3/Internal/C.hsc" #-}

  alignment :: FuseOperations -> Int
alignment FuseOperations
_ = Int
8
{-# LINE 209 "src/System/LibFuse3/Internal/C.hsc" #-}

  peek :: Ptr FuseOperations -> IO FuseOperations
peek Ptr FuseOperations
ptr = do
    FunPtr CGetattr
fuseGetattr       <- ((\Ptr FuseOperations
hsc_ptr -> Ptr FuseOperations -> Int -> IO (FunPtr CGetattr)
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr FuseOperations
hsc_ptr Int
0))         Ptr FuseOperations
ptr
{-# LINE 212 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseReadlink      <- ((\hsc_ptr -> peekByteOff hsc_ptr 8))        ptr
{-# LINE 213 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseMknod         <- ((\hsc_ptr -> peekByteOff hsc_ptr 16))           ptr
{-# LINE 214 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseMkdir         <- ((\hsc_ptr -> peekByteOff hsc_ptr 24))           ptr
{-# LINE 215 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseUnlink        <- ((\hsc_ptr -> peekByteOff hsc_ptr 32))          ptr
{-# LINE 216 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseRmdir         <- ((\hsc_ptr -> peekByteOff hsc_ptr 40))           ptr
{-# LINE 217 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseSymlink       <- ((\hsc_ptr -> peekByteOff hsc_ptr 48))         ptr
{-# LINE 218 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseRename        <- ((\hsc_ptr -> peekByteOff hsc_ptr 56))          ptr
{-# LINE 219 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseLink          <- ((\hsc_ptr -> peekByteOff hsc_ptr 64))            ptr
{-# LINE 220 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseChmod         <- ((\hsc_ptr -> peekByteOff hsc_ptr 72))           ptr
{-# LINE 221 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseChown         <- ((\hsc_ptr -> peekByteOff hsc_ptr 80))           ptr
{-# LINE 222 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseTruncate      <- ((\hsc_ptr -> peekByteOff hsc_ptr 88))        ptr
{-# LINE 223 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseOpen          <- ((\hsc_ptr -> peekByteOff hsc_ptr 96))            ptr
{-# LINE 224 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseRead          <- ((\hsc_ptr -> peekByteOff hsc_ptr 104))            ptr
{-# LINE 225 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseWrite         <- ((\hsc_ptr -> peekByteOff hsc_ptr 112))           ptr
{-# LINE 226 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseStatfs        <- ((\hsc_ptr -> peekByteOff hsc_ptr 120))          ptr
{-# LINE 227 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseFlush         <- ((\hsc_ptr -> peekByteOff hsc_ptr 128))           ptr
{-# LINE 228 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseRelease       <- ((\hsc_ptr -> peekByteOff hsc_ptr 136))         ptr
{-# LINE 229 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseFsync         <- ((\hsc_ptr -> peekByteOff hsc_ptr 144))           ptr
{-# LINE 230 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseSetxattr      <- ((\hsc_ptr -> peekByteOff hsc_ptr 152))        ptr
{-# LINE 231 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseGetxattr      <- ((\hsc_ptr -> peekByteOff hsc_ptr 160))        ptr
{-# LINE 232 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseListxattr     <- ((\hsc_ptr -> peekByteOff hsc_ptr 168))       ptr
{-# LINE 233 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseRemovexattr   <- ((\hsc_ptr -> peekByteOff hsc_ptr 176))     ptr
{-# LINE 234 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseOpendir       <- ((\hsc_ptr -> peekByteOff hsc_ptr 184))         ptr
{-# LINE 235 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseReaddir       <- ((\hsc_ptr -> peekByteOff hsc_ptr 192))         ptr
{-# LINE 236 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseReleasedir    <- ((\hsc_ptr -> peekByteOff hsc_ptr 200))      ptr
{-# LINE 237 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseFsyncdir      <- ((\hsc_ptr -> peekByteOff hsc_ptr 208))        ptr
{-# LINE 238 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseInit          <- ((\hsc_ptr -> peekByteOff hsc_ptr 216))            ptr
{-# LINE 239 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseDestroy       <- ((\hsc_ptr -> peekByteOff hsc_ptr 224))         ptr
{-# LINE 240 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseAccess        <- ((\hsc_ptr -> peekByteOff hsc_ptr 232))          ptr
{-# LINE 241 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseCreate        <- ((\hsc_ptr -> peekByteOff hsc_ptr 240))          ptr
{-# LINE 242 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseLock          <- ((\hsc_ptr -> peekByteOff hsc_ptr 248))            ptr
{-# LINE 243 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseUtimens       <- ((\hsc_ptr -> peekByteOff hsc_ptr 256))         ptr
{-# LINE 244 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseBmap          <- ((\hsc_ptr -> peekByteOff hsc_ptr 264))            ptr
{-# LINE 245 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseIoctl         <- ((\hsc_ptr -> peekByteOff hsc_ptr 272))           ptr
{-# LINE 246 "src/System/LibFuse3/Internal/C.hsc" #-}
    fusePoll          <- ((\hsc_ptr -> peekByteOff hsc_ptr 280))            ptr
{-# LINE 247 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseWriteBuf      <- ((\hsc_ptr -> peekByteOff hsc_ptr 288))       ptr
{-# LINE 248 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseReadBuf       <- ((\hsc_ptr -> peekByteOff hsc_ptr 296))        ptr
{-# LINE 249 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseFlock         <- ((\hsc_ptr -> peekByteOff hsc_ptr 304))           ptr
{-# LINE 250 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseFallocate     <- ((\hsc_ptr -> peekByteOff hsc_ptr 312))       ptr
{-# LINE 251 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseCopyFileRange <- ((\hsc_ptr -> peekByteOff hsc_ptr 320)) ptr
{-# LINE 252 "src/System/LibFuse3/Internal/C.hsc" #-}

{-# LINE 253 "src/System/LibFuse3/Internal/C.hsc" #-}
    fuseLseek         <- ((\hsc_ptr -> peekByteOff hsc_ptr 328))           ptr
{-# LINE 254 "src/System/LibFuse3/Internal/C.hsc" #-}

{-# LINE 257 "src/System/LibFuse3/Internal/C.hsc" #-}
    FuseOperations -> IO FuseOperations
forall (f :: * -> *) a. Applicative f => a -> f a
pure FuseOperations :: FunPtr CGetattr
-> FunPtr CReadlink
-> FunPtr CMknod
-> FunPtr CMkdir
-> FunPtr CUnlink
-> FunPtr CUnlink
-> FunPtr CSymlink
-> FunPtr CRename
-> FunPtr CSymlink
-> FunPtr CChmod
-> FunPtr CChown
-> FunPtr CTruncate
-> FunPtr COpen
-> FunPtr CRead
-> FunPtr CRead
-> FunPtr CStatfs
-> FunPtr COpen
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CSetxattr
-> FunPtr CGetxattr
-> FunPtr CReadlink
-> FunPtr CSymlink
-> FunPtr COpen
-> FunPtr CReaddir
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CInit
-> FunPtr CDestroy
-> FunPtr CAccess
-> FunPtr CChmod
-> FunPtr CLock
-> FunPtr CUtimens
-> FunPtr CBmap
-> FunPtr CIoctl
-> FunPtr CPoll
-> FunPtr CWriteBuf
-> FunPtr CReadBuf
-> FunPtr CFlock
-> FunPtr CFallocate
-> FunPtr CCopyFileRange
-> FunPtr CLseek
-> FuseOperations
FuseOperations{FunPtr CDestroy
FunPtr CUnlink
FunPtr CReadBuf
FunPtr CSymlink
FunPtr CGetxattr
FunPtr CSetxattr
FunPtr CRename
FunPtr CReadlink
FunPtr CRead
FunPtr CUtimens
FunPtr CGetattr
FunPtr CStatfs
FunPtr CReaddir
FunPtr COpen
FunPtr CPoll
FunPtr CCopyFileRange
FunPtr CFlock
FunPtr CLock
FunPtr CWriteBuf
FunPtr CChown
FunPtr CTruncate
FunPtr CLseek
FunPtr CMkdir
FunPtr CChmod
FunPtr CMknod
FunPtr CIoctl
FunPtr CBmap
FunPtr CAccess
FunPtr CFsync
FunPtr CFallocate
FunPtr CInit
fuseLseek :: FunPtr CLseek
fuseCopyFileRange :: FunPtr CCopyFileRange
fuseFallocate :: FunPtr CFallocate
fuseFlock :: FunPtr CFlock
fuseReadBuf :: FunPtr CReadBuf
fuseWriteBuf :: FunPtr CWriteBuf
fusePoll :: FunPtr CPoll
fuseIoctl :: FunPtr CIoctl
fuseBmap :: FunPtr CBmap
fuseUtimens :: FunPtr CUtimens
fuseLock :: FunPtr CLock
fuseCreate :: FunPtr CChmod
fuseAccess :: FunPtr CAccess
fuseDestroy :: FunPtr CDestroy
fuseInit :: FunPtr CInit
fuseFsyncdir :: FunPtr CFsync
fuseReleasedir :: FunPtr COpen
fuseReaddir :: FunPtr CReaddir
fuseOpendir :: FunPtr COpen
fuseRemovexattr :: FunPtr CSymlink
fuseListxattr :: FunPtr CReadlink
fuseGetxattr :: FunPtr CGetxattr
fuseSetxattr :: FunPtr CSetxattr
fuseFsync :: FunPtr CFsync
fuseRelease :: FunPtr COpen
fuseFlush :: FunPtr COpen
fuseStatfs :: FunPtr CStatfs
fuseWrite :: FunPtr CRead
fuseRead :: FunPtr CRead
fuseOpen :: FunPtr COpen
fuseTruncate :: FunPtr CTruncate
fuseChown :: FunPtr CChown
fuseChmod :: FunPtr CChmod
fuseLink :: FunPtr CSymlink
fuseRename :: FunPtr CRename
fuseSymlink :: FunPtr CSymlink
fuseRmdir :: FunPtr CUnlink
fuseUnlink :: FunPtr CUnlink
fuseMkdir :: FunPtr CMkdir
fuseMknod :: FunPtr CMknod
fuseReadlink :: FunPtr CReadlink
fuseGetattr :: FunPtr CGetattr
fuseLseek :: FunPtr CLseek
fuseCopyFileRange :: FunPtr CCopyFileRange
fuseFallocate :: FunPtr CFallocate
fuseFlock :: FunPtr CFlock
fuseReadBuf :: FunPtr CReadBuf
fuseWriteBuf :: FunPtr CWriteBuf
fusePoll :: FunPtr CPoll
fuseIoctl :: FunPtr CIoctl
fuseBmap :: FunPtr CBmap
fuseUtimens :: FunPtr CUtimens
fuseLock :: FunPtr CLock
fuseCreate :: FunPtr CChmod
fuseAccess :: FunPtr CAccess
fuseDestroy :: FunPtr CDestroy
fuseInit :: FunPtr CInit
fuseFsyncdir :: FunPtr CFsync
fuseReleasedir :: FunPtr COpen
fuseReaddir :: FunPtr CReaddir
fuseOpendir :: FunPtr COpen
fuseRemovexattr :: FunPtr CSymlink
fuseListxattr :: FunPtr CReadlink
fuseGetxattr :: FunPtr CGetxattr
fuseSetxattr :: FunPtr CSetxattr
fuseFsync :: FunPtr CFsync
fuseRelease :: FunPtr COpen
fuseFlush :: FunPtr COpen
fuseStatfs :: FunPtr CStatfs
fuseWrite :: FunPtr CRead
fuseRead :: FunPtr CRead
fuseOpen :: FunPtr COpen
fuseTruncate :: FunPtr CTruncate
fuseChown :: FunPtr CChown
fuseChmod :: FunPtr CChmod
fuseLink :: FunPtr CSymlink
fuseRename :: FunPtr CRename
fuseSymlink :: FunPtr CSymlink
fuseRmdir :: FunPtr CUnlink
fuseUnlink :: FunPtr CUnlink
fuseMkdir :: FunPtr CMkdir
fuseMknod :: FunPtr CMknod
fuseReadlink :: FunPtr CReadlink
fuseGetattr :: FunPtr CGetattr
..}

  poke :: Ptr FuseOperations -> FuseOperations -> IO ()
poke Ptr FuseOperations
ptr FuseOperations{FunPtr CDestroy
FunPtr CUnlink
FunPtr CReadBuf
FunPtr CSymlink
FunPtr CGetxattr
FunPtr CSetxattr
FunPtr CRename
FunPtr CReadlink
FunPtr CRead
FunPtr CUtimens
FunPtr CGetattr
FunPtr CStatfs
FunPtr CReaddir
FunPtr COpen
FunPtr CPoll
FunPtr CCopyFileRange
FunPtr CFlock
FunPtr CLock
FunPtr CWriteBuf
FunPtr CChown
FunPtr CTruncate
FunPtr CLseek
FunPtr CMkdir
FunPtr CChmod
FunPtr CMknod
FunPtr CIoctl
FunPtr CBmap
FunPtr CAccess
FunPtr CFsync
FunPtr CFallocate
FunPtr CInit
fuseLseek :: FunPtr CLseek
fuseCopyFileRange :: FunPtr CCopyFileRange
fuseFallocate :: FunPtr CFallocate
fuseFlock :: FunPtr CFlock
fuseReadBuf :: FunPtr CReadBuf
fuseWriteBuf :: FunPtr CWriteBuf
fusePoll :: FunPtr CPoll
fuseIoctl :: FunPtr CIoctl
fuseBmap :: FunPtr CBmap
fuseUtimens :: FunPtr CUtimens
fuseLock :: FunPtr CLock
fuseCreate :: FunPtr CChmod
fuseAccess :: FunPtr CAccess
fuseDestroy :: FunPtr CDestroy
fuseInit :: FunPtr CInit
fuseFsyncdir :: FunPtr CFsync
fuseReleasedir :: FunPtr COpen
fuseReaddir :: FunPtr CReaddir
fuseOpendir :: FunPtr COpen
fuseRemovexattr :: FunPtr CSymlink
fuseListxattr :: FunPtr CReadlink
fuseGetxattr :: FunPtr CGetxattr
fuseSetxattr :: FunPtr CSetxattr
fuseFsync :: FunPtr CFsync
fuseRelease :: FunPtr COpen
fuseFlush :: FunPtr COpen
fuseStatfs :: FunPtr CStatfs
fuseWrite :: FunPtr CRead
fuseRead :: FunPtr CRead
fuseOpen :: FunPtr COpen
fuseTruncate :: FunPtr CTruncate
fuseChown :: FunPtr CChown
fuseChmod :: FunPtr CChmod
fuseLink :: FunPtr CSymlink
fuseRename :: FunPtr CRename
fuseSymlink :: FunPtr CSymlink
fuseRmdir :: FunPtr CUnlink
fuseUnlink :: FunPtr CUnlink
fuseMkdir :: FunPtr CMkdir
fuseMknod :: FunPtr CMknod
fuseReadlink :: FunPtr CReadlink
fuseGetattr :: FunPtr CGetattr
fuseLseek :: FuseOperations -> FunPtr CLseek
fuseCopyFileRange :: FuseOperations -> FunPtr CCopyFileRange
fuseFallocate :: FuseOperations -> FunPtr CFallocate
fuseFlock :: FuseOperations -> FunPtr CFlock
fuseReadBuf :: FuseOperations -> FunPtr CReadBuf
fuseWriteBuf :: FuseOperations -> FunPtr CWriteBuf
fusePoll :: FuseOperations -> FunPtr CPoll
fuseIoctl :: FuseOperations -> FunPtr CIoctl
fuseBmap :: FuseOperations -> FunPtr CBmap
fuseUtimens :: FuseOperations -> FunPtr CUtimens
fuseLock :: FuseOperations -> FunPtr CLock
fuseCreate :: FuseOperations -> FunPtr CChmod
fuseAccess :: FuseOperations -> FunPtr CAccess
fuseDestroy :: FuseOperations -> FunPtr CDestroy
fuseInit :: FuseOperations -> FunPtr CInit
fuseFsyncdir :: FuseOperations -> FunPtr CFsync
fuseReleasedir :: FuseOperations -> FunPtr COpen
fuseReaddir :: FuseOperations -> FunPtr CReaddir
fuseOpendir :: FuseOperations -> FunPtr COpen
fuseRemovexattr :: FuseOperations -> FunPtr CSymlink
fuseListxattr :: FuseOperations -> FunPtr CReadlink
fuseGetxattr :: FuseOperations -> FunPtr CGetxattr
fuseSetxattr :: FuseOperations -> FunPtr CSetxattr
fuseFsync :: FuseOperations -> FunPtr CFsync
fuseRelease :: FuseOperations -> FunPtr COpen
fuseFlush :: FuseOperations -> FunPtr COpen
fuseStatfs :: FuseOperations -> FunPtr CStatfs
fuseWrite :: FuseOperations -> FunPtr CRead
fuseRead :: FuseOperations -> FunPtr CRead
fuseOpen :: FuseOperations -> FunPtr COpen
fuseTruncate :: FuseOperations -> FunPtr CTruncate
fuseChown :: FuseOperations -> FunPtr CChown
fuseChmod :: FuseOperations -> FunPtr CChmod
fuseLink :: FuseOperations -> FunPtr CSymlink
fuseRename :: FuseOperations -> FunPtr CRename
fuseSymlink :: FuseOperations -> FunPtr CSymlink
fuseRmdir :: FuseOperations -> FunPtr CUnlink
fuseUnlink :: FuseOperations -> FunPtr CUnlink
fuseMkdir :: FuseOperations -> FunPtr CMkdir
fuseMknod :: FuseOperations -> FunPtr CMknod
fuseReadlink :: FuseOperations -> FunPtr CReadlink
fuseGetattr :: FuseOperations -> FunPtr CGetattr
..} = do
    ((\Ptr FuseOperations
hsc_ptr -> Ptr FuseOperations -> Int -> FunPtr CGetattr -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr FuseOperations
hsc_ptr Int
0))         Ptr FuseOperations
ptr FunPtr CGetattr
fuseGetattr
{-# LINE 261 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8))        ptr fuseReadlink
{-# LINE 262 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 16))           ptr fuseMknod
{-# LINE 263 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 24))           ptr fuseMkdir
{-# LINE 264 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 32))          ptr fuseUnlink
{-# LINE 265 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 40))           ptr fuseRmdir
{-# LINE 266 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 48))         ptr fuseSymlink
{-# LINE 267 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 56))          ptr fuseRename
{-# LINE 268 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 64))            ptr fuseLink
{-# LINE 269 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 72))           ptr fuseChmod
{-# LINE 270 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 80))           ptr fuseChown
{-# LINE 271 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 88))        ptr fuseTruncate
{-# LINE 272 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 96))            ptr fuseOpen
{-# LINE 273 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 104))            ptr fuseRead
{-# LINE 274 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 112))           ptr fuseWrite
{-# LINE 275 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 120))          ptr fuseStatfs
{-# LINE 276 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 128))           ptr fuseFlush
{-# LINE 277 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 136))         ptr fuseRelease
{-# LINE 278 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 144))           ptr fuseFsync
{-# LINE 279 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 152))        ptr fuseSetxattr
{-# LINE 280 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 160))        ptr fuseGetxattr
{-# LINE 281 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 168))       ptr fuseListxattr
{-# LINE 282 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 176))     ptr fuseRemovexattr
{-# LINE 283 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 184))         ptr fuseOpendir
{-# LINE 284 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 192))         ptr fuseReaddir
{-# LINE 285 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 200))      ptr fuseReleasedir
{-# LINE 286 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 208))        ptr fuseFsyncdir
{-# LINE 287 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 216))            ptr fuseInit
{-# LINE 288 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 224))         ptr fuseDestroy
{-# LINE 289 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 232))          ptr fuseAccess
{-# LINE 290 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 240))          ptr fuseCreate
{-# LINE 291 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 248))            ptr fuseLock
{-# LINE 292 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 256))         ptr fuseUtimens
{-# LINE 293 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 264))            ptr fuseBmap
{-# LINE 294 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 272))           ptr fuseIoctl
{-# LINE 295 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 280))            ptr fusePoll
{-# LINE 296 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 288))       ptr fuseWriteBuf
{-# LINE 297 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 296))        ptr fuseReadBuf
{-# LINE 298 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 304))           ptr fuseFlock
{-# LINE 299 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 312))       ptr fuseFallocate
{-# LINE 300 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 320)) ptr fuseCopyFileRange
{-# LINE 301 "src/System/LibFuse3/Internal/C.hsc" #-}

{-# LINE 302 "src/System/LibFuse3/Internal/C.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 328))           ptr fuseLseek
{-# LINE 303 "src/System/LibFuse3/Internal/C.hsc" #-}

{-# LINE 304 "src/System/LibFuse3/Internal/C.hsc" #-}

-- | An empty set of operations whose fields are @nullFunPtr@.
defaultFuseOperations :: FuseOperations
defaultFuseOperations :: FuseOperations
defaultFuseOperations = FunPtr CGetattr
-> FunPtr CReadlink
-> FunPtr CMknod
-> FunPtr CMkdir
-> FunPtr CUnlink
-> FunPtr CUnlink
-> FunPtr CSymlink
-> FunPtr CRename
-> FunPtr CSymlink
-> FunPtr CChmod
-> FunPtr CChown
-> FunPtr CTruncate
-> FunPtr COpen
-> FunPtr CRead
-> FunPtr CRead
-> FunPtr CStatfs
-> FunPtr COpen
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CSetxattr
-> FunPtr CGetxattr
-> FunPtr CReadlink
-> FunPtr CSymlink
-> FunPtr COpen
-> FunPtr CReaddir
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CInit
-> FunPtr CDestroy
-> FunPtr CAccess
-> FunPtr CChmod
-> FunPtr CLock
-> FunPtr CUtimens
-> FunPtr CBmap
-> FunPtr CIoctl
-> FunPtr CPoll
-> FunPtr CWriteBuf
-> FunPtr CReadBuf
-> FunPtr CFlock
-> FunPtr CFallocate
-> FunPtr CCopyFileRange
-> FunPtr CLseek
-> FuseOperations
FuseOperations FunPtr CGetattr
forall a. FunPtr a
nullFunPtr FunPtr CReadlink
forall a. FunPtr a
nullFunPtr FunPtr CMknod
forall a. FunPtr a
nullFunPtr FunPtr CMkdir
forall a. FunPtr a
nullFunPtr FunPtr CUnlink
forall a. FunPtr a
nullFunPtr FunPtr CUnlink
forall a. FunPtr a
nullFunPtr FunPtr CSymlink
forall a. FunPtr a
nullFunPtr FunPtr CRename
forall a. FunPtr a
nullFunPtr FunPtr CSymlink
forall a. FunPtr a
nullFunPtr FunPtr CChmod
forall a. FunPtr a
nullFunPtr FunPtr CChown
forall a. FunPtr a
nullFunPtr FunPtr CTruncate
forall a. FunPtr a
nullFunPtr FunPtr COpen
forall a. FunPtr a
nullFunPtr FunPtr CRead
forall a. FunPtr a
nullFunPtr FunPtr CRead
forall a. FunPtr a
nullFunPtr FunPtr CStatfs
forall a. FunPtr a
nullFunPtr FunPtr COpen
forall a. FunPtr a
nullFunPtr FunPtr COpen
forall a. FunPtr a
nullFunPtr FunPtr CFsync
forall a. FunPtr a
nullFunPtr FunPtr CSetxattr
forall a. FunPtr a
nullFunPtr FunPtr CGetxattr
forall a. FunPtr a
nullFunPtr FunPtr CReadlink
forall a. FunPtr a
nullFunPtr FunPtr CSymlink
forall a. FunPtr a
nullFunPtr FunPtr COpen
forall a. FunPtr a
nullFunPtr FunPtr CReaddir
forall a. FunPtr a
nullFunPtr FunPtr COpen
forall a. FunPtr a
nullFunPtr FunPtr CFsync
forall a. FunPtr a
nullFunPtr FunPtr CInit
forall a. FunPtr a
nullFunPtr FunPtr CDestroy
forall a. FunPtr a
nullFunPtr FunPtr CAccess
forall a. FunPtr a
nullFunPtr FunPtr CChmod
forall a. FunPtr a
nullFunPtr FunPtr CLock
forall a. FunPtr a
nullFunPtr FunPtr CUtimens
forall a. FunPtr a
nullFunPtr FunPtr CBmap
forall a. FunPtr a
nullFunPtr FunPtr CIoctl
forall a. FunPtr a
nullFunPtr FunPtr CPoll
forall a. FunPtr a
nullFunPtr FunPtr CWriteBuf
forall a. FunPtr a
nullFunPtr FunPtr CReadBuf
forall a. FunPtr a
nullFunPtr FunPtr CFlock
forall a. FunPtr a
nullFunPtr FunPtr CFallocate
forall a. FunPtr a
nullFunPtr FunPtr CCopyFileRange
forall a. FunPtr a
nullFunPtr FunPtr CLseek
forall a. FunPtr a
nullFunPtr

-- | Merges two `FuseOperations` in a left-biased manner.
mergeLFuseOperations :: FuseOperations -> FuseOperations -> FuseOperations
mergeLFuseOperations :: FuseOperations -> FuseOperations -> FuseOperations
mergeLFuseOperations
  (FuseOperations FunPtr CGetattr
a1 FunPtr CReadlink
a2 FunPtr CMknod
a3 FunPtr CMkdir
a4 FunPtr CUnlink
a5 FunPtr CUnlink
a6 FunPtr CSymlink
a7 FunPtr CRename
a8 FunPtr CSymlink
a9 FunPtr CChmod
a10 FunPtr CChown
a11 FunPtr CTruncate
a12 FunPtr COpen
a13 FunPtr CRead
a14 FunPtr CRead
a15 FunPtr CStatfs
a16 FunPtr COpen
a17 FunPtr COpen
a18 FunPtr CFsync
a19 FunPtr CSetxattr
a20 FunPtr CGetxattr
a21 FunPtr CReadlink
a22 FunPtr CSymlink
a23 FunPtr COpen
a24 FunPtr CReaddir
a25 FunPtr COpen
a26 FunPtr CFsync
a27 FunPtr CInit
a28 FunPtr CDestroy
a29 FunPtr CAccess
a30 FunPtr CChmod
a31 FunPtr CLock
a32 FunPtr CUtimens
a33 FunPtr CBmap
a34 FunPtr CIoctl
a35 FunPtr CPoll
a36 FunPtr CWriteBuf
a37 FunPtr CReadBuf
a38 FunPtr CFlock
a39 FunPtr CFallocate
a40 FunPtr CCopyFileRange
a41 FunPtr CLseek
a42)
  (FuseOperations FunPtr CGetattr
b1 FunPtr CReadlink
b2 FunPtr CMknod
b3 FunPtr CMkdir
b4 FunPtr CUnlink
b5 FunPtr CUnlink
b6 FunPtr CSymlink
b7 FunPtr CRename
b8 FunPtr CSymlink
b9 FunPtr CChmod
b10 FunPtr CChown
b11 FunPtr CTruncate
b12 FunPtr COpen
b13 FunPtr CRead
b14 FunPtr CRead
b15 FunPtr CStatfs
b16 FunPtr COpen
b17 FunPtr COpen
b18 FunPtr CFsync
b19 FunPtr CSetxattr
b20 FunPtr CGetxattr
b21 FunPtr CReadlink
b22 FunPtr CSymlink
b23 FunPtr COpen
b24 FunPtr CReaddir
b25 FunPtr COpen
b26 FunPtr CFsync
b27 FunPtr CInit
b28 FunPtr CDestroy
b29 FunPtr CAccess
b30 FunPtr CChmod
b31 FunPtr CLock
b32 FunPtr CUtimens
b33 FunPtr CBmap
b34 FunPtr CIoctl
b35 FunPtr CPoll
b36 FunPtr CWriteBuf
b37 FunPtr CReadBuf
b38 FunPtr CFlock
b39 FunPtr CFallocate
b40 FunPtr CCopyFileRange
b41 FunPtr CLseek
b42)
  = FunPtr CGetattr
-> FunPtr CReadlink
-> FunPtr CMknod
-> FunPtr CMkdir
-> FunPtr CUnlink
-> FunPtr CUnlink
-> FunPtr CSymlink
-> FunPtr CRename
-> FunPtr CSymlink
-> FunPtr CChmod
-> FunPtr CChown
-> FunPtr CTruncate
-> FunPtr COpen
-> FunPtr CRead
-> FunPtr CRead
-> FunPtr CStatfs
-> FunPtr COpen
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CSetxattr
-> FunPtr CGetxattr
-> FunPtr CReadlink
-> FunPtr CSymlink
-> FunPtr COpen
-> FunPtr CReaddir
-> FunPtr COpen
-> FunPtr CFsync
-> FunPtr CInit
-> FunPtr CDestroy
-> FunPtr CAccess
-> FunPtr CChmod
-> FunPtr CLock
-> FunPtr CUtimens
-> FunPtr CBmap
-> FunPtr CIoctl
-> FunPtr CPoll
-> FunPtr CWriteBuf
-> FunPtr CReadBuf
-> FunPtr CFlock
-> FunPtr CFallocate
-> FunPtr CCopyFileRange
-> FunPtr CLseek
-> FuseOperations
FuseOperations (FunPtr CGetattr
a1 FunPtr CGetattr -> FunPtr CGetattr -> FunPtr CGetattr
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CGetattr
b1) (FunPtr CReadlink
a2 FunPtr CReadlink -> FunPtr CReadlink -> FunPtr CReadlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CReadlink
b2) (FunPtr CMknod
a3 FunPtr CMknod -> FunPtr CMknod -> FunPtr CMknod
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CMknod
b3) (FunPtr CMkdir
a4 FunPtr CMkdir -> FunPtr CMkdir -> FunPtr CMkdir
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CMkdir
b4) (FunPtr CUnlink
a5 FunPtr CUnlink -> FunPtr CUnlink -> FunPtr CUnlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CUnlink
b5) (FunPtr CUnlink
a6 FunPtr CUnlink -> FunPtr CUnlink -> FunPtr CUnlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CUnlink
b6) (FunPtr CSymlink
a7 FunPtr CSymlink -> FunPtr CSymlink -> FunPtr CSymlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CSymlink
b7) (FunPtr CRename
a8 FunPtr CRename -> FunPtr CRename -> FunPtr CRename
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CRename
b8) (FunPtr CSymlink
a9 FunPtr CSymlink -> FunPtr CSymlink -> FunPtr CSymlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CSymlink
b9) (FunPtr CChmod
a10 FunPtr CChmod -> FunPtr CChmod -> FunPtr CChmod
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CChmod
b10) (FunPtr CChown
a11 FunPtr CChown -> FunPtr CChown -> FunPtr CChown
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CChown
b11) (FunPtr CTruncate
a12 FunPtr CTruncate -> FunPtr CTruncate -> FunPtr CTruncate
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CTruncate
b12) (FunPtr COpen
a13 FunPtr COpen -> FunPtr COpen -> FunPtr COpen
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr COpen
b13) (FunPtr CRead
a14 FunPtr CRead -> FunPtr CRead -> FunPtr CRead
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CRead
b14) (FunPtr CRead
a15 FunPtr CRead -> FunPtr CRead -> FunPtr CRead
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CRead
b15) (FunPtr CStatfs
a16 FunPtr CStatfs -> FunPtr CStatfs -> FunPtr CStatfs
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CStatfs
b16) (FunPtr COpen
a17 FunPtr COpen -> FunPtr COpen -> FunPtr COpen
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr COpen
b17) (FunPtr COpen
a18 FunPtr COpen -> FunPtr COpen -> FunPtr COpen
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr COpen
b18) (FunPtr CFsync
a19 FunPtr CFsync -> FunPtr CFsync -> FunPtr CFsync
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CFsync
b19) (FunPtr CSetxattr
a20 FunPtr CSetxattr -> FunPtr CSetxattr -> FunPtr CSetxattr
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CSetxattr
b20) (FunPtr CGetxattr
a21 FunPtr CGetxattr -> FunPtr CGetxattr -> FunPtr CGetxattr
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CGetxattr
b21) (FunPtr CReadlink
a22 FunPtr CReadlink -> FunPtr CReadlink -> FunPtr CReadlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CReadlink
b22) (FunPtr CSymlink
a23 FunPtr CSymlink -> FunPtr CSymlink -> FunPtr CSymlink
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CSymlink
b23) (FunPtr COpen
a24 FunPtr COpen -> FunPtr COpen -> FunPtr COpen
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr COpen
b24) (FunPtr CReaddir
a25 FunPtr CReaddir -> FunPtr CReaddir -> FunPtr CReaddir
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CReaddir
b25) (FunPtr COpen
a26 FunPtr COpen -> FunPtr COpen -> FunPtr COpen
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr COpen
b26) (FunPtr CFsync
a27 FunPtr CFsync -> FunPtr CFsync -> FunPtr CFsync
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CFsync
b27) (FunPtr CInit
a28 FunPtr CInit -> FunPtr CInit -> FunPtr CInit
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CInit
b28) (FunPtr CDestroy
a29 FunPtr CDestroy -> FunPtr CDestroy -> FunPtr CDestroy
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CDestroy
b29) (FunPtr CAccess
a30 FunPtr CAccess -> FunPtr CAccess -> FunPtr CAccess
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CAccess
b30) (FunPtr CChmod
a31 FunPtr CChmod -> FunPtr CChmod -> FunPtr CChmod
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CChmod
b31) (FunPtr CLock
a32 FunPtr CLock -> FunPtr CLock -> FunPtr CLock
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CLock
b32) (FunPtr CUtimens
a33 FunPtr CUtimens -> FunPtr CUtimens -> FunPtr CUtimens
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CUtimens
b33) (FunPtr CBmap
a34 FunPtr CBmap -> FunPtr CBmap -> FunPtr CBmap
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CBmap
b34) (FunPtr CIoctl
a35 FunPtr CIoctl -> FunPtr CIoctl -> FunPtr CIoctl
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CIoctl
b35) (FunPtr CPoll
a36 FunPtr CPoll -> FunPtr CPoll -> FunPtr CPoll
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CPoll
b36) (FunPtr CWriteBuf
a37 FunPtr CWriteBuf -> FunPtr CWriteBuf -> FunPtr CWriteBuf
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CWriteBuf
b37) (FunPtr CReadBuf
a38 FunPtr CReadBuf -> FunPtr CReadBuf -> FunPtr CReadBuf
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CReadBuf
b38) (FunPtr CFlock
a39 FunPtr CFlock -> FunPtr CFlock -> FunPtr CFlock
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CFlock
b39) (FunPtr CFallocate
a40 FunPtr CFallocate -> FunPtr CFallocate -> FunPtr CFallocate
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CFallocate
b40) (FunPtr CCopyFileRange
a41 FunPtr CCopyFileRange
-> FunPtr CCopyFileRange -> FunPtr CCopyFileRange
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CCopyFileRange
b41) (FunPtr CLseek
a42 FunPtr CLseek -> FunPtr CLseek -> FunPtr CLseek
forall {a}. FunPtr a -> FunPtr a -> FunPtr a
`mergeL` FunPtr CLseek
b42)
  where
  mergeL :: FunPtr a -> FunPtr a -> FunPtr a
mergeL FunPtr a
a FunPtr a
b = if FunPtr a
a FunPtr a -> FunPtr a -> Bool
forall a. Eq a => a -> a -> Bool
== FunPtr a
forall a. FunPtr a
nullFunPtr then FunPtr a
b else FunPtr a
a

-- | @struct fuse_pollhandle@
data FusePollhandle

-- | @enum fuse_readdir_flags@
type FuseReaddirFlags = Word32
{-# LINE 323 "src/System/LibFuse3/Internal/C.hsc" #-}

-- | @struct fuse_session@
data FuseSession

-- | @struct fuse@
data StructFuse

foreign import ccall safe "fuse_cmdline_help"
  fuse_cmdline_help :: IO ()

foreign import ccall safe "fuse_destroy"
  fuse_destroy :: Ptr StructFuse -> IO ()

foreign import ccall safe "fuse_get_session"
  fuse_get_session :: Ptr StructFuse -> IO (Ptr FuseSession)

foreign import ccall safe "fuse_lib_help"
  fuse_lib_help :: Ptr FuseArgs -> IO ()

foreign import ccall safe "fuse_loop_mt_31"
  fuse_loop_mt_31 :: Ptr StructFuse -> CInt -> IO Int

foreign import ccall safe "fuse_lowlevel_help"
  fuse_lowlevel_help :: IO ()

foreign import ccall safe "fuse_lowlevel_version"
  fuse_lowlevel_version :: IO ()

foreign import ccall safe "fuse_mount"
  fuse_mount :: Ptr StructFuse -> CString -> IO CInt

foreign import ccall safe "fuse_new"
  fuse_new :: Ptr FuseArgs -> Ptr FuseOperations -> CSize -> Ptr a -> IO (Ptr StructFuse)

foreign import ccall safe "fuse_opt_free_args"
  fuse_opt_free_args :: Ptr FuseArgs -> IO ()

foreign import ccall safe "fuse_parse_cmdline"
  fuse_parse_cmdline :: Ptr FuseArgs -> Ptr FuseCmdlineOpts -> IO CInt

foreign import ccall safe "fuse_pkgversion"
  fuse_pkgversion :: IO CString

foreign import ccall safe "fuse_session_exit"
  fuse_session_exit :: Ptr FuseSession -> IO ()

foreign import ccall safe "fuse_unmount"
  fuse_unmount :: Ptr StructFuse -> IO ()

type CGetattr = CString -> Ptr FileStat -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkGetattr :: CGetattr -> IO (FunPtr CGetattr)

type CReadlink = CString -> CString -> CSize -> IO CInt
foreign import ccall "wrapper"
  mkReadlink :: CReadlink -> IO (FunPtr CReadlink)

type CMknod = CString -> CMode -> CDev -> IO CInt
foreign import ccall "wrapper"
  mkMknod :: CMknod -> IO (FunPtr CMknod)

type CMkdir = CString -> CMode -> IO CInt
foreign import ccall "wrapper"
  mkMkdir :: CMkdir -> IO (FunPtr CMkdir)

type CUnlink = CString -> IO CInt
foreign import ccall "wrapper"
  mkUnlink :: CUnlink -> IO (FunPtr CUnlink)

type CRmdir = CString -> IO CInt
foreign import ccall "wrapper"
  mkRmdir :: CRmdir -> IO (FunPtr CRmdir)

type CSymlink = CString -> CString -> IO CInt
foreign import ccall "wrapper"
  mkSymlink :: CSymlink -> IO (FunPtr CSymlink)

type CRename = CString -> CString -> CUInt -> IO CInt
foreign import ccall "wrapper"
  mkRename :: CRename -> IO (FunPtr CRename)

type CLink = CString -> CString -> IO CInt
foreign import ccall "wrapper"
  mkLink :: CLink -> IO (FunPtr CLink)

type CChmod = CString -> CMode -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkChmod :: CChmod -> IO (FunPtr CChmod)

type CChown = CString -> CUid -> CGid -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkChown :: CChown -> IO (FunPtr CChown)

type CTruncate = CString -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkTruncate :: CTruncate -> IO (FunPtr CTruncate)

type COpen = CString -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkOpen :: COpen -> IO (FunPtr COpen)

type CRead = CString -> CString -> CSize -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkRead :: CRead -> IO (FunPtr CRead)

type CWrite = CString -> CString -> CSize -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkWrite :: CWrite -> IO (FunPtr CWrite)

type CStatfs = CString -> Ptr FileSystemStats -> IO CInt
foreign import ccall "wrapper"
  mkStatfs :: CStatfs -> IO (FunPtr CStatfs)

type CFlush = CString -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkFlush :: CFlush -> IO (FunPtr CFlush)

type CRelease = CString -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkRelease :: CRelease -> IO (FunPtr CRelease)

type CFsync = CString -> CInt -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkFsync :: CFsync -> IO (FunPtr CFsync)

type CSetxattr = CString -> CString -> CString -> CSize -> CInt -> IO CInt
foreign import ccall "wrapper"
  mkSetxattr :: CSetxattr -> IO (FunPtr CSetxattr)

type CGetxattr = CString -> CString -> CString -> CSize -> IO CInt
foreign import ccall "wrapper"
  mkGetxattr :: CGetxattr -> IO (FunPtr CGetxattr)

type CListxattr = CString -> CString -> CSize -> IO CInt
foreign import ccall "wrapper"
  mkListxattr :: CListxattr -> IO (FunPtr CListxattr)

type CRemovexattr = CString -> CString -> IO CInt
foreign import ccall "wrapper"
  mkRemovexattr :: CRemovexattr -> IO (FunPtr CRemovexattr)

type COpendir = CString -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkOpendir :: COpendir -> IO (FunPtr COpendir)

type CReaddir = CString -> Ptr FuseFillDirBuf -> FunPtr FuseFillDir -> COff -> Ptr FuseFileInfo -> FuseReaddirFlags -> IO CInt
foreign import ccall "wrapper"
  mkReaddir :: CReaddir -> IO (FunPtr CReaddir)

type CReleasedir = CString -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkReleasedir :: CReleasedir -> IO (FunPtr CReleasedir)

type CFsyncdir = CString -> CInt -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkFsyncdir :: CFsyncdir -> IO (FunPtr CFsyncdir)

type CInit = Ptr FuseConnInfo -> Ptr FuseConfig -> IO (Ptr ())
foreign import ccall "wrapper"
  mkInit :: CInit -> IO (FunPtr CInit)

type CDestroy = Ptr () -> IO ()
foreign import ccall "wrapper"
  mkDestroy :: CDestroy -> IO (FunPtr CDestroy)

type CAccess = CString -> CInt -> IO CInt
foreign import ccall "wrapper"
  mkAccess :: CAccess -> IO (FunPtr CAccess)

type CCreate = CString -> CMode -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkCreate :: CCreate -> IO (FunPtr CCreate)

type CLock = CString -> Ptr FuseFileInfo -> CInt -> Ptr Posix.CFLock
foreign import ccall "wrapper"
  mkLock :: CLock -> IO (FunPtr CLock)

-- actual signature:
-- int(*utimens)(const char *, const struct timespec tv[2], struct fuse_file_info *fi)
-- We treat @struct timespec [2]@ as if it is @struct timespec *@ because they are compatible in
-- function parameter lists:
-- https://en.cppreference.com/w/c/language/type#Compatible_types
type CUtimens = CString -> Ptr TimeSpec -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkUtimens :: CUtimens -> IO (FunPtr CUtimens)

type CBmap = CString -> CSize -> Ptr Word64 -> IO CInt
foreign import ccall "wrapper"
  mkBmap :: CBmap -> IO (FunPtr CBmap)

type CIoctl = CString -> CUInt -> Ptr () -> Ptr FuseFileInfo -> CUInt -> Ptr () -> IO CInt
foreign import ccall "wrapper"
  mkIoctl :: CIoctl -> IO (FunPtr CIoctl)

type CPoll = CString -> Ptr FuseFileInfo -> Ptr FusePollhandle -> Ptr CUInt -> IO CInt
foreign import ccall "wrapper"
  mkPoll :: CPoll -> IO (FunPtr CPoll)

type CWriteBuf = CString -> Ptr FuseBufvec -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkWriteBuf :: CWriteBuf -> IO (FunPtr CWriteBuf)

type CReadBuf = CString -> Ptr (Ptr FuseBufvec) -> CSize -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkReadBuf :: CReadBuf -> IO (FunPtr CReadBuf)

type CFlock = CString -> Ptr FuseFileInfo -> CInt -> IO CInt
foreign import ccall "wrapper"
  mkFlock :: CFlock -> IO (FunPtr CFlock)

type CFallocate = CString -> CInt -> COff -> COff -> Ptr FuseFileInfo -> IO CInt
foreign import ccall "wrapper"
  mkFallocate :: CFallocate -> IO (FunPtr CFallocate)

type CCopyFileRange = CString -> Ptr FuseFileInfo -> COff -> CString -> Ptr FuseFileInfo -> COff -> CSize -> CInt -> IO CSsize
foreign import ccall "wrapper"
  mkCopyFileRange :: CCopyFileRange -> IO (FunPtr CCopyFileRange)

type CLseek = CString -> COff -> CInt -> Ptr FuseFileInfo -> IO COff
foreign import ccall "wrapper"
  mkLseek :: CLseek -> IO (FunPtr CLseek)