    {-# LINE 1 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    module Bindings.HDF5.Raw.H5E where

    import Data.Int
    import Data.Word
    import Foreign.C.String
    import Foreign.C.Types
    import Foreign.Marshal.Alloc
    import Control.Monad
    import Foreign.Ptr
    import Foreign.Storable

    import Foreign.LibFFI

    import Bindings.HDF5.Raw.H5
    import Bindings.HDF5.Raw.H5I
    import Foreign.Ptr.Conventions

    -- |Value for the default error stack
    h5e_DEFAULT :: HId_t
    h5e_DEFAULT :: HId_t
    h5e_DEFAULT = Int64 -> HId_t
    HId_t (Int64
    0)

    {-# LINE 23 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Different kinds of error information
    newtype H5E_type_t = H5E_type_t Word32 deriving (Storable, Show)

    {-# LINE 26 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    h5e_MAJOR :: H5E_type_t
    h5e_MAJOR = H5E_type_t (0)

    {-# LINE 27 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    h5e_MINOR :: H5E_type_t
    h5e_MINOR = H5E_type_t (1)

    {-# LINE 28 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Information about an error; element of error stack

    {-# LINE 31 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | class ID

    {-# LINE 34 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | major error ID

    {-# LINE 37 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | minor error number

    {-# LINE 40 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | line in file where error occurs

    {-# LINE 43 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | function in which error occurred

    {-# LINE 46 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | file in which error occurred

    {-# LINE 49 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | optional supplied description

    {-# LINE 52 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    data H5E_error2_t = H5E_error2_t{
      h5e_error2_t'cls_id :: HId_t,
      h5e_error2_t'maj_num :: HId_t,
      h5e_error2_t'min_num :: HId_t,
      h5e_error2_t'line :: CUInt,
      h5e_error2_t'func_name :: CString,
      h5e_error2_t'file_name :: CString,
      h5e_error2_t'desc :: CString
    } deriving (Eq,Show)
    p'H5E_error2_t'cls_id :: Ptr H5E_error2_t -> Ptr HId_t
    p'H5E_error2_t'cls_id Ptr H5E_error2_t
    p = Ptr H5E_error2_t -> Int -> Ptr HId_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error2_t
    p Int
    0
    p'H5E_error2_t'cls_id :: Ptr (H5E_error2_t) -> Ptr (HId_t)
    p'H5E_error2_t'maj_num :: Ptr H5E_error2_t -> Ptr HId_t
    p'H5E_error2_t'maj_num Ptr H5E_error2_t
    p = Ptr H5E_error2_t -> Int -> Ptr HId_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error2_t
    p Int
    8
    p'H5E_error2_t'maj_num :: Ptr (H5E_error2_t) -> Ptr (HId_t)
    p'H5E_error2_t'min_num :: Ptr H5E_error2_t -> Ptr HId_t
    p'H5E_error2_t'min_num Ptr H5E_error2_t
    p = Ptr H5E_error2_t -> Int -> Ptr HId_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error2_t
    p Int
    16
    p'H5E_error2_t'min_num :: Ptr (H5E_error2_t) -> Ptr (HId_t)
    p'H5E_error2_t'line p = plusPtr p 24
    p'H5E_error2_t'line :: Ptr (H5E_error2_t) -> Ptr (CUInt)
    p'H5E_error2_t'func_name :: Ptr H5E_error2_t -> Ptr CString
    p'H5E_error2_t'func_name Ptr H5E_error2_t
    p = Ptr H5E_error2_t -> Int -> Ptr CString
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error2_t
    p Int
    32
    p'H5E_error2_t'func_name :: Ptr (H5E_error2_t) -> Ptr (CString)
    p'H5E_error2_t'file_name :: Ptr H5E_error2_t -> Ptr CString
    p'H5E_error2_t'file_name Ptr H5E_error2_t
    p = Ptr H5E_error2_t -> Int -> Ptr CString
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error2_t
    p Int
    40
    p'H5E_error2_t'file_name :: Ptr (H5E_error2_t) -> Ptr (CString)
    p'H5E_error2_t'desc p = plusPtr p 48
    p'H5E_error2_t'desc :: Ptr (H5E_error2_t) -> Ptr (CString)
    instance Storable H5E_error2_t where
      sizeOf _ = 56
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 8
        v2 <- peekByteOff _p 16
        v3 <- peekByteOff _p 24
        v4 <- peekByteOff _p 32
        v5 <- peekByteOff _p 40
        v6 <- peekByteOff _p 48
        return $ H5E_error2_t v0 v1 v2 v3 v4 v5 v6
      poke _p (H5E_error2_t v0 v1 v2 v3 v4 v5 v6) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 8 v1
        pokeByteOff _p 16 v2
        pokeByteOff _p 24 v3
        pokeByteOff _p 32 v4
        pokeByteOff _p 40 v5
        pokeByteOff _p 48 v6
        return ()

    {-# LINE 53 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |HDF5 error class
    foreign import ccall "inline_H5E_ERR_CLS" h5e_ERR_CLS
      :: HId_t

    {-# LINE 56 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- * Major error codes

    -- |Dataset
    foreign import ccall "inline_H5E_DATASET" h5e_DATASET
      :: HId_t

    {-# LINE 61 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Function entry/exit
    foreign import ccall "inline_H5E_FUNC" h5e_FUNC
      :: HId_t

    {-# LINE 64 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Data storage
    foreign import ccall "inline_H5E_STORAGE" h5e_STORAGE
      :: HId_t

    {-# LINE 67 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |File accessibility
    foreign import ccall "inline_H5E_FILE" h5e_FILE
      :: HId_t

    {-# LINE 70 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Shared Object Header Messages
    foreign import ccall "inline_H5E_SOHM" h5e_SOHM
      :: HId_t

    {-# LINE 73 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Symbol table
    foreign import ccall "inline_H5E_SYM" h5e_SYM
      :: HId_t

    {-# LINE 76 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Plugin for dynamically loaded library
    foreign import ccall "inline_H5E_PLUGIN" h5e_PLUGIN
      :: HId_t

    {-# LINE 79 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Virtual File Layer
    foreign import ccall "inline_H5E_VFL" h5e_VFL
      :: HId_t

    {-# LINE 82 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Internal error (too specific to document in detail)
    foreign import ccall "inline_H5E_INTERNAL" h5e_INTERNAL
      :: HId_t

    {-# LINE 85 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |B-Tree node
    foreign import ccall "inline_H5E_BTREE" h5e_BTREE
      :: HId_t

    {-# LINE 88 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |References
    foreign import ccall "inline_H5E_REFERENCE" h5e_REFERENCE
      :: HId_t

    {-# LINE 91 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Dataspace
    foreign import ccall "inline_H5E_DATASPACE" h5e_DATASPACE
      :: HId_t

    {-# LINE 94 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Resource unavailable
    foreign import ccall "inline_H5E_RESOURCE" h5e_RESOURCE
      :: HId_t

    {-# LINE 97 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Property lists
    foreign import ccall "inline_H5E_PLIST" h5e_PLIST
      :: HId_t

    {-# LINE 100 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Links
    foreign import ccall "inline_H5E_LINK" h5e_LINK
      :: HId_t

    {-# LINE 103 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Datatype
    foreign import ccall "inline_H5E_DATATYPE" h5e_DATATYPE
      :: HId_t

    {-# LINE 106 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Reference Counted Strings
    foreign import ccall "inline_H5E_RS" h5e_RS
      :: HId_t

    {-# LINE 109 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Heap
    foreign import ccall "inline_H5E_HEAP" h5e_HEAP
      :: HId_t

    {-# LINE 112 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Object header
    foreign import ccall "inline_H5E_OHDR" h5e_OHDR
      :: HId_t

    {-# LINE 115 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Attribute
    foreign import ccall "inline_H5E_ATTR" h5e_ATTR
      :: HId_t

    {-# LINE 118 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |No error
    foreign import ccall "inline_H5E_NONE_MAJOR" h5e_NONE_MAJOR
      :: HId_t

    {-# LINE 121 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Low-level I/O
    foreign import ccall "inline_H5E_IO" h5e_IO
      :: HId_t

    {-# LINE 124 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Skip Lists
    foreign import ccall "inline_H5E_SLIST" h5e_SLIST
      :: HId_t

    {-# LINE 127 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |External file list
    foreign import ccall "inline_H5E_EFL" h5e_EFL
      :: HId_t

    {-# LINE 130 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Ternary Search Trees
    foreign import ccall "inline_H5E_TST" h5e_TST
      :: HId_t

    {-# LINE 133 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Invalid arguments to routine
    foreign import ccall "inline_H5E_ARGS" h5e_ARGS
      :: HId_t

    {-# LINE 136 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Error API
    foreign import ccall "inline_H5E_ERROR" h5e_ERROR
      :: HId_t

    {-# LINE 139 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Data filters
    foreign import ccall "inline_H5E_PLINE" h5e_PLINE
      :: HId_t

    {-# LINE 142 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Free Space Manager
    foreign import ccall "inline_H5E_FSPACE" h5e_FSPACE
      :: HId_t

    {-# LINE 145 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Object cache
    foreign import ccall "inline_H5E_CACHE" h5e_CACHE
      :: HId_t

    {-# LINE 148 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- * Minor error codes

    -- ** Generic low-level file I/O errors

    -- |Seek failed
    foreign import ccall "inline_H5E_SEEKERROR" h5e_SEEKERROR
      :: HId_t

    {-# LINE 155 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Read failed
    foreign import ccall "inline_H5E_READERROR" h5e_READERROR
      :: HId_t

    {-# LINE 158 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Write failed
    foreign import ccall "inline_H5E_WRITEERROR" h5e_WRITEERROR
      :: HId_t

    {-# LINE 161 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Close failed
    foreign import ccall "inline_H5E_CLOSEERROR" h5e_CLOSEERROR
      :: HId_t

    {-# LINE 164 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Address overflowed
    foreign import ccall "inline_H5E_OVERFLOW" h5e_OVERFLOW
      :: HId_t

    {-# LINE 167 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |File control (fcntl) failed
    foreign import ccall "inline_H5E_FCNTL" h5e_FCNTL
      :: HId_t

    {-# LINE 170 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Resource errors

    -- |No space available for allocation
    foreign import ccall "inline_H5E_NOSPACE" h5e_NOSPACE
      :: HId_t

    {-# LINE 175 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Can't allocate space
    foreign import ccall "inline_H5E_CANTALLOC" h5e_CANTALLOC
      :: HId_t

    {-# LINE 178 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to copy object
    foreign import ccall "inline_H5E_CANTCOPY" h5e_CANTCOPY
      :: HId_t

    {-# LINE 181 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to free object
    foreign import ccall "inline_H5E_CANTFREE" h5e_CANTFREE
      :: HId_t

    {-# LINE 184 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Object already exists
    foreign import ccall "inline_H5E_ALREADYEXISTS" h5e_ALREADYEXISTS
      :: HId_t

    {-# LINE 187 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to lock object
    foreign import ccall "inline_H5E_CANTLOCK" h5e_CANTLOCK
      :: HId_t

    {-# LINE 190 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to unlock object
    foreign import ccall "inline_H5E_CANTUNLOCK" h5e_CANTUNLOCK
      :: HId_t

    {-# LINE 193 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to garbage collect
    foreign import ccall "inline_H5E_CANTGC" h5e_CANTGC
      :: HId_t

    {-# LINE 196 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Unable to compute size
    foreign import ccall "inline_H5E_CANTGETSIZE" h5e_CANTGETSIZE
      :: HId_t

    {-# LINE 199 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Object is already open
    foreign import ccall "inline_H5E_OBJOPEN" h5e_OBJOPEN
      :: HId_t

    {-# LINE 202 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Heap errors
    foreign import ccall "inline_H5E_CANTRESTORE" h5e_CANTRESTORE
      :: HId_t

    {-# LINE 205 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCOMPUTE" h5e_CANTCOMPUTE
      :: HId_t

    {-# LINE 206 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTEXTEND" h5e_CANTEXTEND
      :: HId_t

    {-# LINE 207 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTATTACH" h5e_CANTATTACH
      :: HId_t

    {-# LINE 208 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTUPDATE" h5e_CANTUPDATE
      :: HId_t

    {-# LINE 209 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTOPERATE" h5e_CANTOPERATE
      :: HId_t

    {-# LINE 210 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Function entry/exit interface errors
    foreign import ccall "inline_H5E_CANTINIT" h5e_CANTINIT
      :: HId_t

    {-# LINE 213 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_ALREADYINIT" h5e_ALREADYINIT
      :: HId_t

    {-# LINE 214 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTRELEASE" h5e_CANTRELEASE
      :: HId_t

    {-# LINE 215 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Property list errors
    foreign import ccall "inline_H5E_CANTGET" h5e_CANTGET
      :: HId_t

    {-# LINE 218 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSET" h5e_CANTSET
      :: HId_t

    {-# LINE 219 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_DUPCLASS" h5e_DUPCLASS
      :: HId_t

    {-# LINE 220 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    foreign import ccall "inline_H5E_SETDISALLOWED" h5e_SETDISALLOWED
      :: HId_t

    {-# LINE 222 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Free space errors
    foreign import ccall "inline_H5E_CANTMERGE" h5e_CANTMERGE
      :: HId_t

    {-# LINE 225 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTREVIVE" h5e_CANTREVIVE
      :: HId_t

    {-# LINE 226 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSHRINK" h5e_CANTSHRINK
      :: HId_t

    {-# LINE 227 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Object header related errors
    foreign import ccall "inline_H5E_LINKCOUNT" h5e_LINKCOUNT
      :: HId_t

    {-# LINE 230 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_VERSION" h5e_VERSION
      :: HId_t

    {-# LINE 231 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_ALIGNMENT" h5e_ALIGNMENT
      :: HId_t

    {-# LINE 232 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADMESG" h5e_BADMESG
      :: HId_t

    {-# LINE 233 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTDELETE" h5e_CANTDELETE
      :: HId_t

    {-# LINE 234 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADITER" h5e_BADITER
      :: HId_t

    {-# LINE 235 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTPACK" h5e_CANTPACK
      :: HId_t

    {-# LINE 236 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTRESET" h5e_CANTRESET
      :: HId_t

    {-# LINE 237 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTRENAME" h5e_CANTRENAME
      :: HId_t

    {-# LINE 238 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** System level errors
    foreign import ccall "inline_H5E_SYSERRSTR" h5e_SYSERRSTR
      :: HId_t

    {-# LINE 241 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** I/O pipeline errors
    foreign import ccall "inline_H5E_NOFILTER" h5e_NOFILTER
      :: HId_t

    {-# LINE 244 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CALLBACK" h5e_CALLBACK
      :: HId_t

    {-# LINE 245 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANAPPLY" h5e_CANAPPLY
      :: HId_t

    {-# LINE 246 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_SETLOCAL" h5e_SETLOCAL
      :: HId_t

    {-# LINE 247 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NOENCODER" h5e_NOENCODER
      :: HId_t

    {-# LINE 248 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTFILTER" h5e_CANTFILTER
      :: HId_t

    {-# LINE 249 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Group related errors
    foreign import ccall "inline_H5E_CANTOPENOBJ" h5e_CANTOPENOBJ
      :: HId_t

    {-# LINE 252 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCLOSEOBJ" h5e_CANTCLOSEOBJ
      :: HId_t

    {-# LINE 253 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_COMPLEN" h5e_COMPLEN
      :: HId_t

    {-# LINE 254 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_PATH" h5e_PATH
      :: HId_t

    {-# LINE 255 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** No error
    foreign import ccall "inline_H5E_NONE_MINOR" h5e_NONE_MINOR
      :: HId_t

    {-# LINE 258 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Plugin errors
    foreign import ccall "inline_H5E_OPENERROR" h5e_OPENERROR
      :: HId_t

    {-# LINE 261 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** File accessibility errors
    foreign import ccall "inline_H5E_FILEEXISTS" h5e_FILEEXISTS
      :: HId_t

    {-# LINE 264 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_FILEOPEN" h5e_FILEOPEN
      :: HId_t

    {-# LINE 265 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCREATE" h5e_CANTCREATE
      :: HId_t

    {-# LINE 266 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTOPENFILE" h5e_CANTOPENFILE
      :: HId_t

    {-# LINE 267 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCLOSEFILE" h5e_CANTCLOSEFILE
      :: HId_t

    {-# LINE 268 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NOTHDF5" h5e_NOTHDF5
      :: HId_t

    {-# LINE 269 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADFILE" h5e_BADFILE
      :: HId_t

    {-# LINE 270 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_TRUNCATED" h5e_TRUNCATED
      :: HId_t

    {-# LINE 271 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_MOUNT" h5e_MOUNT
      :: HId_t

    {-# LINE 272 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Object atom related errors
    foreign import ccall "inline_H5E_BADGROUP" h5e_BADGROUP
      :: HId_t

    {-# LINE 275 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTREGISTER" h5e_CANTREGISTER
      :: HId_t

    {-# LINE 276 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTINC" h5e_CANTINC
      :: HId_t

    {-# LINE 277 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTDEC" h5e_CANTDEC
      :: HId_t

    {-# LINE 278 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NOIDS" h5e_NOIDS
      :: HId_t

    {-# LINE 279 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Cache related errors
    foreign import ccall "inline_H5E_CANTFLUSH" h5e_CANTFLUSH
      :: HId_t

    {-# LINE 282 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSERIALIZE" h5e_CANTSERIALIZE
      :: HId_t

    {-# LINE 283 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTLOAD" h5e_CANTLOAD
      :: HId_t

    {-# LINE 284 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_PROTECT" h5e_PROTECT
      :: HId_t

    {-# LINE 285 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NOTCACHED" h5e_NOTCACHED
      :: HId_t

    {-# LINE 286 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_SYSTEM" h5e_SYSTEM
      :: HId_t

    {-# LINE 287 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTINS" h5e_CANTINS
      :: HId_t

    {-# LINE 288 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTPROTECT" h5e_CANTPROTECT
      :: HId_t

    {-# LINE 289 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTUNPROTECT" h5e_CANTUNPROTECT
      :: HId_t

    {-# LINE 290 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTPIN" h5e_CANTPIN
      :: HId_t

    {-# LINE 291 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTUNPIN" h5e_CANTUNPIN
      :: HId_t

    {-# LINE 292 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTMARKDIRTY" h5e_CANTMARKDIRTY
      :: HId_t

    {-# LINE 293 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTDIRTY" h5e_CANTDIRTY
      :: HId_t

    {-# LINE 294 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTEXPUNGE" h5e_CANTEXPUNGE
      :: HId_t

    {-# LINE 295 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTRESIZE" h5e_CANTRESIZE
      :: HId_t

    {-# LINE 296 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Link related errors
    foreign import ccall "inline_H5E_TRAVERSE" h5e_TRAVERSE
      :: HId_t

    {-# LINE 299 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NLINKS" h5e_NLINKS
      :: HId_t

    {-# LINE 300 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_NOTREGISTERED" h5e_NOTREGISTERED
      :: HId_t

    {-# LINE 301 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTMOVE" h5e_CANTMOVE
      :: HId_t

    {-# LINE 302 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSORT" h5e_CANTSORT
      :: HId_t

    {-# LINE 303 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Parallel MPI errors
    foreign import ccall "inline_H5E_MPI" h5e_MPI
      :: HId_t

    {-# LINE 306 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_MPIERRSTR" h5e_MPIERRSTR
      :: HId_t

    {-# LINE 307 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTRECV" h5e_CANTRECV
      :: HId_t

    {-# LINE 308 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Dataspace errors
    foreign import ccall "inline_H5E_CANTCLIP" h5e_CANTCLIP
      :: HId_t

    {-# LINE 311 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCOUNT" h5e_CANTCOUNT
      :: HId_t

    {-# LINE 312 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSELECT" h5e_CANTSELECT
      :: HId_t

    {-# LINE 313 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTNEXT" h5e_CANTNEXT
      :: HId_t

    {-# LINE 314 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADSELECT" h5e_BADSELECT
      :: HId_t

    {-# LINE 315 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTCOMPARE" h5e_CANTCOMPARE
      :: HId_t

    {-# LINE 316 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Argument errors
    foreign import ccall "inline_H5E_UNINITIALIZED" h5e_UNINITIALIZED
      :: HId_t

    {-# LINE 319 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_UNSUPPORTED" h5e_UNSUPPORTED
      :: HId_t

    {-# LINE 320 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADTYPE" h5e_BADTYPE
      :: HId_t

    {-# LINE 321 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADRANGE" h5e_BADRANGE
      :: HId_t

    {-# LINE 322 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADVALUE" h5e_BADVALUE
      :: HId_t

    {-# LINE 323 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** B-tree related errors
    foreign import ccall "inline_H5E_NOTFOUND" h5e_NOTFOUND
      :: HId_t

    {-# LINE 326 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_EXISTS" h5e_EXISTS
      :: HId_t

    {-# LINE 327 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTENCODE" h5e_CANTENCODE
      :: HId_t

    {-# LINE 328 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTDECODE" h5e_CANTDECODE
      :: HId_t

    {-# LINE 329 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSPLIT" h5e_CANTSPLIT
      :: HId_t

    {-# LINE 330 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTREDISTRIBUTE" h5e_CANTREDISTRIBUTE
      :: HId_t

    {-# LINE 331 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTSWAP" h5e_CANTSWAP
      :: HId_t

    {-# LINE 332 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTINSERT" h5e_CANTINSERT
      :: HId_t

    {-# LINE 333 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTLIST" h5e_CANTLIST
      :: HId_t

    {-# LINE 334 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTMODIFY" h5e_CANTMODIFY
      :: HId_t

    {-# LINE 335 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_CANTREMOVE" h5e_CANTREMOVE
      :: HId_t

    {-# LINE 336 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- ** Datatype conversion errors
    foreign import ccall "inline_H5E_CANTCONVERT" h5e_CANTCONVERT
      :: HId_t

    {-# LINE 339 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    foreign import ccall "inline_H5E_BADSIZE" h5e_BADSIZE
      :: HId_t

    {-# LINE 340 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    newtype H5E_TRY_STATE
        = H5E_TRY_STATE (Either (H5E_auto1_t ()) (H5E_auto2_t ()), InOut ())

    h5e_BEGIN_TRY :: IO H5E_TRY_STATE
    h5e_BEGIN_TRY :: IO H5E_TRY_STATE
    h5e_BEGIN_TRY = do
        isV2 <- (Ptr CUInt -> IO CUInt) -> IO CUInt
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr CUInt -> IO CUInt) -> IO CUInt)
    -> (Ptr CUInt -> IO CUInt) -> IO CUInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr CUInt
    isV2 -> do
            IO HErr_t -> IO ()
    forall (f :: * -> *) a. Functor f => f a -> f ()
    void (IO HErr_t -> IO ()) -> IO HErr_t -> IO ()
    forall a b. (a -> b) -> a -> b
    $ HId_t -> Out CUInt -> IO HErr_t
    h5e_auto_is_v2 HId_t
    h5e_DEFAULT (Ptr CUInt -> Out CUInt
    forall a. Ptr a -> Out a
    Out Ptr CUInt
    isV2)
            Ptr CUInt -> IO CUInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CUInt
    isV2

        alloca $ \Ptr (InOut ())
    cdata -> if CUInt
    isV2 CUInt -> CUInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CUInt
    0
            then (Ptr (H5E_auto2_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (H5E_auto2_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE)
    -> (Ptr (H5E_auto2_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE
    forall a b. (a -> b) -> a -> b
    $ \Ptr (H5E_auto2_t ())
    func -> do
                IO HErr_t -> IO ()
    forall (f :: * -> *) a. Functor f => f a -> f ()
    void (IO HErr_t -> IO ()) -> IO HErr_t -> IO ()
    forall a b. (a -> b) -> a -> b
    $ HId_t -> Out (H5E_auto2_t ()) -> Out (InOut ()) -> IO HErr_t
    forall a.
    HId_t -> Out (H5E_auto2_t a) -> Out (InOut a) -> IO HErr_t
    h5e_get_auto2 HId_t
    h5e_DEFAULT (Ptr (H5E_auto2_t ()) -> Out (H5E_auto2_t ())
    forall a. Ptr a -> Out a
    Out Ptr (H5E_auto2_t ())
    func) (Ptr (InOut ()) -> Out (InOut ())
    forall a. Ptr a -> Out a
    Out Ptr (InOut ())
    cdata)
                IO HErr_t -> IO ()
    forall (f :: * -> *) a. Functor f => f a -> f ()
    void (IO HErr_t -> IO ()) -> IO HErr_t -> IO ()
    forall a b. (a -> b) -> a -> b
    $ HId_t -> H5E_auto2_t (ZonkAny 0) -> InOut (ZonkAny 0) -> IO HErr_t
    forall a. HId_t -> H5E_auto2_t a -> InOut a -> IO HErr_t
    h5e_set_auto2 HId_t
    h5e_DEFAULT H5E_auto2_t (ZonkAny 0)
    forall a. FunPtr a
    nullFunPtr (Ptr (ZonkAny 0) -> InOut (ZonkAny 0)
    forall a. Ptr a -> InOut a
    InOut Ptr (ZonkAny 0)
    forall a. Ptr a
    nullPtr)

                func_ <- Ptr (H5E_auto2_t ()) -> IO (H5E_auto2_t ())
    forall a. Storable a => Ptr a -> IO a
    peek Ptr (H5E_auto2_t ())
    func
                cdata_ <- peek cdata
                return (H5E_TRY_STATE (Right func_, cdata_))
            else (Ptr (H5E_auto1_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE
    forall a b. Storable a => (Ptr a -> IO b) -> IO b
    alloca ((Ptr (H5E_auto1_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE)
    -> (Ptr (H5E_auto1_t ()) -> IO H5E_TRY_STATE) -> IO H5E_TRY_STATE
    forall a b. (a -> b) -> a -> b
    $ \Ptr (H5E_auto1_t ())
    func -> do
                IO HErr_t -> IO ()
    forall (f :: * -> *) a. Functor f => f a -> f ()
    void (IO HErr_t -> IO ()) -> IO HErr_t -> IO ()
    forall a b. (a -> b) -> a -> b
    $ Out (H5E_auto1_t ()) -> Out (InOut ()) -> IO HErr_t
    forall a. Out (H5E_auto1_t a) -> Out (InOut a) -> IO HErr_t
    h5e_get_auto1 (Ptr (H5E_auto1_t ()) -> Out (H5E_auto1_t ())
    forall a. Ptr a -> Out a
    Out Ptr (H5E_auto1_t ())
    func) (Ptr (InOut ()) -> Out (InOut ())
    forall a. Ptr a -> Out a
    Out Ptr (InOut ())
    cdata)
                IO HErr_t -> IO ()
    forall (f :: * -> *) a. Functor f => f a -> f ()
    void (IO HErr_t -> IO ()) -> IO HErr_t -> IO ()
    forall a b. (a -> b) -> a -> b
    $ H5E_auto1_t (ZonkAny 1) -> InOut (ZonkAny 1) -> IO HErr_t
    forall a. H5E_auto1_t a -> InOut a -> IO HErr_t
    h5e_set_auto1 H5E_auto1_t (ZonkAny 1)
    forall a. FunPtr a
    nullFunPtr (Ptr (ZonkAny 1) -> InOut (ZonkAny 1)
    forall a. Ptr a -> InOut a
    InOut Ptr (ZonkAny 1)
    forall a. Ptr a
    nullPtr)

                func_ <- Ptr (H5E_auto1_t ()) -> IO (H5E_auto1_t ())
    forall a. Storable a => Ptr a -> IO a
    peek Ptr (H5E_auto1_t ())
    func
                cdata_ <- peek cdata
                return (H5E_TRY_STATE (Left func_, cdata_))

    h5e_END_TRY :: H5E_TRY_STATE -> IO HErr_t
    h5e_END_TRY :: H5E_TRY_STATE -> IO HErr_t
    h5e_END_TRY (H5E_TRY_STATE (Right H5E_auto2_t ()
    func, InOut ()
    cdata)) = HId_t -> H5E_auto2_t () -> InOut () -> IO HErr_t
    forall a. HId_t -> H5E_auto2_t a -> InOut a -> IO HErr_t
    h5e_set_auto2 HId_t
    h5e_DEFAULT H5E_auto2_t ()
    func InOut ()
    cdata
    h5e_END_TRY (H5E_TRY_STATE (Left  H5E_auto1_t ()
    func, InOut ()
    cdata)) = H5E_auto1_t () -> InOut () -> IO HErr_t
    forall a. H5E_auto1_t a -> InOut a -> IO HErr_t
    h5e_set_auto1 H5E_auto1_t ()
    func InOut ()
    cdata

    -- |This is not a standard HDF5 function or macro, but rather a wrapper
    -- to the paired macros H5E_BEGIN_TRY and H5E_END_TRY, wrapping a simple action.
    h5e_try :: IO a -> IO a
    h5e_try :: forall a. IO a -> IO a
    h5e_try IO a
    action = do
        tryState <- IO H5E_TRY_STATE
    h5e_BEGIN_TRY
        result <- action
        void $ h5e_END_TRY tryState
        return result

    -- TODO: wrap these up in an exported header file (something like "Bindings.HDF5.Raw.H5E.h") as macros for use in haskell code, or maybe as TH macros
    -- /*
    --  * Public API Convenience Macros for Error reporting - Documented
    --  */
    -- /* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */
    -- #define H5Epush_sim(func, cls, maj, min, str) H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str)
    --
    -- /*
    --  * Public API Convenience Macros for Error reporting - Undocumented
    --  */
    -- /* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in */
    -- /*  And return after pushing error onto stack */
    -- #define H5Epush_ret(func, cls, maj, min, str, ret) {			      \
    --     H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str);      \
    --     return(ret);							      \
    -- }
    --
    -- /* Use the Standard C __FILE__ & __LINE__ macros instead of typing them in
    --  * And goto a label after pushing error onto stack.
    --  */
    -- #define H5Epush_goto(func, cls, maj, min, str, label) {			      \
    --     H5Epush2(H5E_DEFAULT, __FILE__, func, __LINE__, cls, maj, min, str);      \
    --     goto label;								      \
    -- }

    -- |Error stack traversal direction
    newtype H5E_direction_t = H5E_direction_t Word32 deriving (Ptr H5E_direction_t -> IO H5E_direction_t
    Ptr H5E_direction_t -> Int -> IO H5E_direction_t
    Ptr H5E_direction_t -> Int -> H5E_direction_t -> IO ()
    Ptr H5E_direction_t -> H5E_direction_t -> IO ()
    H5E_direction_t -> Int
    (H5E_direction_t -> Int)
    -> (H5E_direction_t -> Int)
    -> (Ptr H5E_direction_t -> Int -> IO H5E_direction_t)
    -> (Ptr H5E_direction_t -> Int -> H5E_direction_t -> IO ())
    -> (forall b. Ptr b -> Int -> IO H5E_direction_t)
    -> (forall b. Ptr b -> Int -> H5E_direction_t -> IO ())
    -> (Ptr H5E_direction_t -> IO H5E_direction_t)
    -> (Ptr H5E_direction_t -> H5E_direction_t -> IO ())
    -> Storable H5E_direction_t
    forall b. Ptr b -> Int -> IO H5E_direction_t
    forall b. Ptr b -> Int -> H5E_direction_t -> IO ()
    forall a.
    (a -> Int)
    -> (a -> Int)
    -> (Ptr a -> Int -> IO a)
    -> (Ptr a -> Int -> a -> IO ())
    -> (forall b. Ptr b -> Int -> IO a)
    -> (forall b. Ptr b -> Int -> a -> IO ())
    -> (Ptr a -> IO a)
    -> (Ptr a -> a -> IO ())
    -> Storable a
    $csizeOf :: H5E_direction_t -> Int
    sizeOf :: H5E_direction_t -> Int
    $calignment :: H5E_direction_t -> Int
    alignment :: H5E_direction_t -> Int
    $cpeekElemOff :: Ptr H5E_direction_t -> Int -> IO H5E_direction_t
    peekElemOff :: Ptr H5E_direction_t -> Int -> IO H5E_direction_t
    $cpokeElemOff :: Ptr H5E_direction_t -> Int -> H5E_direction_t -> IO ()
    pokeElemOff :: Ptr H5E_direction_t -> Int -> H5E_direction_t -> IO ()
    $cpeekByteOff :: forall b. Ptr b -> Int -> IO H5E_direction_t
    peekByteOff :: forall b. Ptr b -> Int -> IO H5E_direction_t
    $cpokeByteOff :: forall b. Ptr b -> Int -> H5E_direction_t -> IO ()
    pokeByteOff :: forall b. Ptr b -> Int -> H5E_direction_t -> IO ()
    $cpeek :: Ptr H5E_direction_t -> IO H5E_direction_t
    peek :: Ptr H5E_direction_t -> IO H5E_direction_t
    $cpoke :: Ptr H5E_direction_t -> H5E_direction_t -> IO ()
    poke :: Ptr H5E_direction_t -> H5E_direction_t -> IO ()
    Storable, Int -> H5E_direction_t -> ShowS
    [H5E_direction_t] -> ShowS
    H5E_direction_t -> String
    (Int -> H5E_direction_t -> ShowS)
    -> (H5E_direction_t -> String)
    -> ([H5E_direction_t] -> ShowS)
    -> Show H5E_direction_t
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> H5E_direction_t -> ShowS
    showsPrec :: Int -> H5E_direction_t -> ShowS
    $cshow :: H5E_direction_t -> String
    show :: H5E_direction_t -> String
    $cshowList :: [H5E_direction_t] -> ShowS
    showList :: [H5E_direction_t] -> ShowS
    Show)

    {-# LINE 406 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |begin deep, end at API function
    h5e_WALK_UPWARD :: H5E_direction_t
    h5e_WALK_UPWARD :: H5E_direction_t
    h5e_WALK_UPWARD = Word32 -> H5E_direction_t
    H5E_direction_t (Word32
    0)

    {-# LINE 409 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |begin at API function, end deep
    h5e_WALK_DOWNWARD :: H5E_direction_t
    h5e_WALK_DOWNWARD :: H5E_direction_t
    h5e_WALK_DOWNWARD = Word32 -> H5E_direction_t
    H5E_direction_t (Word32
    1)

    {-# LINE 412 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- * Error stack traversal callback function types

    -- |Callback type for 'h5e_walk2'
    --
    -- > typedef herr_t (*H5E_walk2_t)(unsigned n, const H5E_error2_t *err_desc,
    -- >     void *client_data);
    type H5E_walk2_t a = FunPtr (CUInt -> In H5E_error2_t -> InOut a -> IO HErr_t)

    -- |Callback type for 'h5e_set_auto2'
    --
    -- > typedef herr_t (*H5E_auto2_t)(hid_t estack, void *client_data);
    type H5E_auto2_t a = FunPtr (HId_t -> InOut a -> IO HErr_t)

    -- * Public API functions

    -- |Registers an error class.
    --
    -- Returns non-negative value as class ID on success / negative on failure
    --
    -- > hid_t  H5Eregister_class(const char *cls_name, const char *lib_name,
    -- >     const char *version);
    foreign import ccall "H5Eregister_class" h5e_register_class
      :: CString -> CString -> CString -> IO HId_t
    foreign import ccall "&H5Eregister_class" p_H5Eregister_class
      :: FunPtr (CString -> CString -> CString -> IO HId_t)

    {-# LINE 435 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Closes an error class.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Eunregister_class(hid_t class_id);
    foreign import ccall "H5Eunregister_class" h5e_unregister_class
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Eunregister_class" p_H5Eunregister_class
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 442 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Closes a major or minor error.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Eclose_msg(hid_t err_id);
    foreign import ccall "H5Eclose_msg" h5e_close_msg
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Eclose_msg" p_H5Eclose_msg
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 449 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Creates a major or minor error, returns an ID.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > hid_t  H5Ecreate_msg(hid_t cls, H5E_type_t msg_type, const char *msg);
    foreign import ccall "H5Ecreate_msg" h5e_create_msg
      :: HId_t -> H5E_type_t -> CString -> IO HId_t
    foreign import ccall "&H5Ecreate_msg" p_H5Ecreate_msg
      :: FunPtr (HId_t -> H5E_type_t -> CString -> IO HId_t)

    {-# LINE 456 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Creates a new, empty, error stack.
    --
    -- Returns non-negative value as stack ID on success / negative on failure
    --
    -- > hid_t  H5Ecreate_stack(void);
    foreign import ccall "H5Ecreate_stack" h5e_create_stack
      :: IO HId_t
    foreign import ccall "&H5Ecreate_stack" p_H5Ecreate_stack
      :: FunPtr (IO HId_t)

    {-# LINE 463 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Registers current error stack, returns object handle for it, clears it.
    --
    -- Returns non-negative value as stack ID on success / negative on failure
    --
    -- > hid_t  H5Eget_current_stack(void);
    foreign import ccall "H5Eget_current_stack" h5e_get_current_stack
      :: IO HId_t
    foreign import ccall "&H5Eget_current_stack" p_H5Eget_current_stack
      :: FunPtr (IO HId_t)

    {-# LINE 470 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Closes an error stack.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Eclose_stack(hid_t stack_id);
    foreign import ccall "H5Eclose_stack" h5e_close_stack
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Eclose_stack" p_H5Eclose_stack
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 477 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Retrieves error class name.
    --
    -- Returns non-negative for name length if succeeds(zero means no name);
    -- otherwise returns negative value.
    --
    -- On successful return, 'name' will always be zero-terminated.
    --
    -- NB: The return value is the length of the name, not the length copied
    -- to the buffer.
    --
    -- > ssize_t H5Eget_class_name(hid_t class_id, char *name, size_t size);
    foreign import ccall "H5Eget_class_name" h5e_get_class_name
      :: HId_t -> OutArray CChar -> CSize -> IO CSSize
    foreign import ccall "&H5Eget_class_name" p_H5Eget_class_name
      :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

    {-# LINE 490 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Replaces current stack with specified stack.  This closes the
    -- stack ID also.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Eset_current_stack(hid_t err_stack_id);
    foreign import ccall "H5Eset_current_stack" h5e_set_current_stack
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Eset_current_stack" p_H5Eset_current_stack
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 498 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- libffi to the rescue!  I have no idea how I'd wrap this without it, and there
    -- doesn't appear to be a non-deprecated non-private non-varargs equivalent.
    --
    -- |Pushes a new error record onto error stack for the current
    -- thread.  The error has major and minor IDs 'maj_id' and
    -- 'min_id', the name of a function where the error was detected,
    -- the name of the file where the error was detected, the
    -- line within that file, and an error description string.  The
    -- function name, file name, and error description strings must
    -- be statically allocated.
    --
    -- Returns non-negative on success/Negative on failure.
    --
    -- > herr_t H5Epush2(hid_t err_stack, const char *file, const char *func, unsigned line,
    -- >     hid_t cls_id, hid_t maj_id, hid_t min_id, const char *msg, ...);
    --
    -- (msg is a printf format string, the varargs are the format parameters)
    h5e_push2 :: HId_t -> CString -> CString -> CUInt -> HId_t -> HId_t -> HId_t -> CString -> [Arg] -> IO HErr_t
    h5e_push2 :: HId_t
    -> CString
    -> CString
    -> CUInt
    -> HId_t
    -> HId_t
    -> HId_t
    -> CString
    -> [Arg]
    -> IO HErr_t
    h5e_push2 HId_t
    err_stack CString
    file CString
    func CUInt
    line HId_t
    cls_id HId_t
    maj_id HId_t
    min_id CString
    fmt [] =
        HId_t
    -> CString
    -> CString
    -> CUInt
    -> HId_t
    -> HId_t
    -> HId_t
    -> CString
    -> IO HErr_t
    h5e_push2_no_varargs HId_t
    err_stack CString
    file CString
    func CUInt
    line HId_t
    cls_id HId_t
    maj_id HId_t
    min_id CString
    fmt
    h5e_push2 (HId_t Int64
    err_stack) CString
    file CString
    func CUInt
    line (HId_t Int64
    cls_id) (HId_t Int64
    maj_id) (HId_t Int64
    min_id) CString
    fmt [Arg]
    varargs =
        FunPtr
      (HId_t
       -> CString
       -> CString
       -> CUInt
       -> HId_t
       -> HId_t
       -> HId_t
       -> CString
       -> IO HErr_t)
    -> RetType HErr_t -> [Arg] -> IO HErr_t
    forall a b. FunPtr a -> RetType b -> [Arg] -> IO b
    callFFI FunPtr
      (HId_t
       -> CString
       -> CString
       -> CUInt
       -> HId_t
       -> HId_t
       -> HId_t
       -> CString
       -> IO HErr_t)
    p_H5Epush2 RetType HErr_t
    retHErr_t [Arg]
    args
        where
            argHId_t :: Int64 -> Arg
    argHId_t = Int64 -> Arg
    argInt64
    {-# LINE 523 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
            retHErr_t :: RetType HErr_t
    retHErr_t = (Int32 -> HErr_t) -> RetType Int32 -> RetType HErr_t
    forall a b. (a -> b) -> RetType a -> RetType b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap Int32 -> HErr_t
    HErr_t (RetType Int32
    retInt32)
    {-# LINE 524 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

            args :: [Arg]
    args = Int64 -> Arg
    argHId_t Int64
    err_stack Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : CString -> Arg
    forall a. Ptr a -> Arg
    argPtr CString
    file Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : CString -> Arg
    forall a. Ptr a -> Arg
    argPtr CString
    func Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : CUInt -> Arg
    argCUInt CUInt
    line
                 Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : Int64 -> Arg
    argHId_t Int64
    cls_id Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : Int64 -> Arg
    argHId_t Int64
    maj_id Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : Int64 -> Arg
    argHId_t Int64
    min_id Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : CString -> Arg
    forall a. Ptr a -> Arg
    argPtr CString
    fmt
                 Arg -> [Arg] -> [Arg]
    forall a. a -> [a] -> [a]
    : [Arg]
    varargs

    foreign import ccall "H5Epush2"
        h5e_push2_no_varargs :: HId_t -> CString -> CString -> CUInt -> HId_t -> HId_t -> HId_t -> CString -> IO HErr_t
    foreign import ccall "&H5Epush2"
        p_H5Epush2 :: FunPtr (HId_t -> CString -> CString -> CUInt -> HId_t -> HId_t -> HId_t -> CString -> IO HErr_t)

    -- |Deletes some error messages from the top of error stack.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Epop(hid_t err_stack, size_t count);
    foreign import ccall "H5Epop" h5e_pop
      :: HId_t -> CSize -> IO HErr_t
    foreign import ccall "&H5Epop" p_H5Epop
      :: FunPtr (HId_t -> CSize -> IO HErr_t)

    {-# LINE 540 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Prints the error stack in some default way.  This is just a
    -- convenience function for 'h5e_walk' with a function that
    -- prints error messages.  Users are encouraged to write their
    -- own more specific error handlers.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eprint2(hid_t err_stack, FILE *stream);
    foreign import ccall "H5Eprint2" h5e_print2
      :: HId_t -> InOut CFile -> IO HErr_t
    foreign import ccall "&H5Eprint2" p_H5Eprint2
      :: FunPtr (HId_t -> InOut CFile -> IO HErr_t)

    {-# LINE 550 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Walks the error stack for the current thread and calls some
    -- function for each error along the way.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t func,
    -- >     void *client_data);
    foreign import ccall "H5Ewalk2" h5e_walk2
      :: HId_t -> H5E_direction_t -> H5E_walk2_t a -> InOut a -> IO HErr_t
    foreign import ccall "&H5Ewalk2" p_H5Ewalk2
      :: FunPtr (HId_t -> H5E_direction_t -> H5E_walk2_t a -> InOut a -> IO HErr_t)

    {-# LINE 559 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Returns the current settings for the automatic error stack
    -- traversal function and its data for specific error stack.
    -- Either (or both) arguments may be null in which case the
    -- value is not returned.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func, void **client_data);
    --
    -- NB: the @a@ type here should be existentially quantified, not universally, but
    -- Haskell doesn't have a convenient way to say so in a foreign import.
    foreign import ccall "H5Eget_auto2" h5e_get_auto2
      :: HId_t -> Out (H5E_auto2_t a) -> Out (InOut a) -> IO HErr_t
    foreign import ccall "&H5Eget_auto2" p_H5Eget_auto2
      :: FunPtr (HId_t -> Out (H5E_auto2_t a) -> Out (InOut a) -> IO HErr_t)

    {-# LINE 572 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Turns on or off automatic printing of errors for certain
    -- error stack.  When turned on (non-null 'func' pointer) any
    -- API function which returns an error indication will first
    -- call 'func' passing it 'client_data' as an argument.
    --
    -- The default values before this function is called are
    -- 'h5e_print2' with client data being the standard error stream,
    -- 'stderr'.
    --
    -- Automatic stack traversal is always in the 'h5e_WALK_DOWNWARD'
    -- direction.
    --
    -- > herr_t H5Eset_auto2(hid_t estack_id, H5E_auto2_t func, void *client_data);
    foreign import ccall "H5Eset_auto2" h5e_set_auto2
      :: HId_t -> H5E_auto2_t a -> InOut a -> IO HErr_t
    foreign import ccall "&H5Eset_auto2" p_H5Eset_auto2
      :: FunPtr (HId_t -> H5E_auto2_t a -> InOut a -> IO HErr_t)

    {-# LINE 587 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Clears the error stack for the specified error stack.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > herr_t H5Eclear2(hid_t err_stack);
    foreign import ccall "H5Eclear2" h5e_clear2
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Eclear2" p_H5Eclear2
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 594 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- TODO: I think the type names mentioned here are wrong.  Sort them out.
    -- |Determines if the error auto reporting function for an
    -- error stack conforms to the 'H5E_auto_stack_t' typedef
    -- or the 'H5E_auto_t' typedef.  The 'is_stack' parameter is set
    -- to 1 for the first case and 0 for the latter case.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eauto_is_v2(hid_t err_stack, unsigned *is_stack);
    foreign import ccall "H5Eauto_is_v2" h5e_auto_is_v2
      :: HId_t -> Out CUInt -> IO HErr_t
    foreign import ccall "&H5Eauto_is_v2" p_H5Eauto_is_v2
      :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

    {-# LINE 605 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Retrieves an error message.
    --
    -- Returns non-negative for message length if succeeds(zero means no message);
    -- otherwise returns negative value.
    --
    -- > ssize_t H5Eget_msg(hid_t msg_id, H5E_type_t *type, char *msg,
    -- >     size_t size);
    foreign import ccall "H5Eget_msg" h5e_get_msg
      :: HId_t -> Out H5E_type_t -> OutArray CChar -> CSize -> IO CSSize
    foreign import ccall "&H5Eget_msg" p_H5Eget_msg
      :: FunPtr (HId_t -> Out H5E_type_t -> OutArray CChar -> CSize -> IO CSSize)

    {-# LINE 614 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Retrieves the number of error message.
    --
    -- Returns non-negative value on success / negative on failure
    --
    -- > ssize_t H5Eget_num(hid_t error_stack_id);
    foreign import ccall "H5Eget_num" h5e_get_num
      :: HId_t -> IO CSSize
    foreign import ccall "&H5Eget_num" p_H5Eget_num
      :: FunPtr (HId_t -> IO CSSize)

    {-# LINE 621 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    {-# LINE 623 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- * Deprecated symbols

    newtype H5E_major_t = H5E_major_t Int64 deriving (Ptr H5E_major_t -> IO H5E_major_t
    Ptr H5E_major_t -> Int -> IO H5E_major_t
    Ptr H5E_major_t -> Int -> H5E_major_t -> IO ()
    Ptr H5E_major_t -> H5E_major_t -> IO ()
    H5E_major_t -> Int
    (H5E_major_t -> Int)
    -> (H5E_major_t -> Int)
    -> (Ptr H5E_major_t -> Int -> IO H5E_major_t)
    -> (Ptr H5E_major_t -> Int -> H5E_major_t -> IO ())
    -> (forall b. Ptr b -> Int -> IO H5E_major_t)
    -> (forall b. Ptr b -> Int -> H5E_major_t -> IO ())
    -> (Ptr H5E_major_t -> IO H5E_major_t)
    -> (Ptr H5E_major_t -> H5E_major_t -> IO ())
    -> Storable H5E_major_t
    forall b. Ptr b -> Int -> IO H5E_major_t
    forall b. Ptr b -> Int -> H5E_major_t -> IO ()
    forall a.
    (a -> Int)
    -> (a -> Int)
    -> (Ptr a -> Int -> IO a)
    -> (Ptr a -> Int -> a -> IO ())
    -> (forall b. Ptr b -> Int -> IO a)
    -> (forall b. Ptr b -> Int -> a -> IO ())
    -> (Ptr a -> IO a)
    -> (Ptr a -> a -> IO ())
    -> Storable a
    $csizeOf :: H5E_major_t -> Int
    sizeOf :: H5E_major_t -> Int
    $calignment :: H5E_major_t -> Int
    alignment :: H5E_major_t -> Int
    $cpeekElemOff :: Ptr H5E_major_t -> Int -> IO H5E_major_t
    peekElemOff :: Ptr H5E_major_t -> Int -> IO H5E_major_t
    $cpokeElemOff :: Ptr H5E_major_t -> Int -> H5E_major_t -> IO ()
    pokeElemOff :: Ptr H5E_major_t -> Int -> H5E_major_t -> IO ()
    $cpeekByteOff :: forall b. Ptr b -> Int -> IO H5E_major_t
    peekByteOff :: forall b. Ptr b -> Int -> IO H5E_major_t
    $cpokeByteOff :: forall b. Ptr b -> Int -> H5E_major_t -> IO ()
    pokeByteOff :: forall b. Ptr b -> Int -> H5E_major_t -> IO ()
    $cpeek :: Ptr H5E_major_t -> IO H5E_major_t
    peek :: Ptr H5E_major_t -> IO H5E_major_t
    $cpoke :: Ptr H5E_major_t -> H5E_major_t -> IO ()
    poke :: Ptr H5E_major_t -> H5E_major_t -> IO ()
    Storable, Int -> H5E_major_t -> ShowS
    [H5E_major_t] -> ShowS
    H5E_major_t -> String
    (Int -> H5E_major_t -> ShowS)
    -> (H5E_major_t -> String)
    -> ([H5E_major_t] -> ShowS)
    -> Show H5E_major_t
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> H5E_major_t -> ShowS
    showsPrec :: Int -> H5E_major_t -> ShowS
    $cshow :: H5E_major_t -> String
    show :: H5E_major_t -> String
    $cshowList :: [H5E_major_t] -> ShowS
    showList :: [H5E_major_t] -> ShowS
    Show, H5E_major_t -> H5E_major_t -> Bool
    (H5E_major_t -> H5E_major_t -> Bool)
    -> (H5E_major_t -> H5E_major_t -> Bool) -> Eq H5E_major_t
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: H5E_major_t -> H5E_major_t -> Bool
    == :: H5E_major_t -> H5E_major_t -> Bool
    $c/= :: H5E_major_t -> H5E_major_t -> Bool
    /= :: H5E_major_t -> H5E_major_t -> Bool
    Eq)

    {-# LINE 627 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    newtype H5E_minor_t = H5E_minor_t Int64 deriving (Storable, Show, Eq)

    {-# LINE 628 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | Information about an error element of error stack

    {-# LINE 631 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |major error number

    {-# LINE 634 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |minor error number

    {-# LINE 637 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |function in which error occurred

    {-# LINE 640 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |file in which error occurred

    {-# LINE 643 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |line in file where error occurs

    {-# LINE 646 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |optional supplied description

    {-# LINE 649 "src/Bindings/HDF5/Raw/H5E.hsc" #-}
    data H5E_error1_t = H5E_error1_t{
      h5e_error1_t'maj_num :: H5E_major_t,
      h5e_error1_t'min_num :: H5E_minor_t,
      h5e_error1_t'func_name :: CString,
      h5e_error1_t'file_name :: CString,
      h5e_error1_t'line :: CUInt,
      h5e_error1_t'desc :: CString
    } deriving (Eq,Show)
    p'H5E_error1_t'maj_num :: Ptr H5E_error1_t -> Ptr H5E_major_t
    p'H5E_error1_t'maj_num Ptr H5E_error1_t
    p = plusPtr p Int
    0
    p'H5E_error1_t'maj_num :: Ptr (H5E_error1_t) -> Ptr (H5E_major_t)
    p'H5E_error1_t'min_num :: Ptr H5E_error1_t -> Ptr H5E_minor_t
    p'H5E_error1_t'min_num Ptr H5E_error1_t
    p = Ptr H5E_error1_t -> Int -> Ptr H5E_minor_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error1_t
    p Int
    8
    p'H5E_error1_t'min_num :: Ptr (H5E_error1_t) -> Ptr (H5E_minor_t)
    p'H5E_error1_t'func_name :: Ptr H5E_error1_t -> Ptr CString
    p'H5E_error1_t'func_name Ptr H5E_error1_t
    p = Ptr H5E_error1_t -> Int -> Ptr CString
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error1_t
    p Int
    16
    p'H5E_error1_t'func_name :: Ptr (H5E_error1_t) -> Ptr (CString)
    p'H5E_error1_t'file_name :: Ptr H5E_error1_t -> Ptr CString
    p'H5E_error1_t'file_name Ptr H5E_error1_t
    p = Ptr H5E_error1_t -> Int -> Ptr CString
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error1_t
    p Int
    24
    p'H5E_error1_t'file_name :: Ptr (H5E_error1_t) -> Ptr (CString)
    p'H5E_error1_t'line :: Ptr H5E_error1_t -> Ptr CUInt
    p'H5E_error1_t'line Ptr H5E_error1_t
    p = Ptr H5E_error1_t -> Int -> Ptr CUInt
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error1_t
    p Int
    32
    p'H5E_error1_t'line :: Ptr (H5E_error1_t) -> Ptr (CUInt)
    p'H5E_error1_t'desc :: Ptr H5E_error1_t -> Ptr CString
    p'H5E_error1_t'desc Ptr H5E_error1_t
    p = Ptr H5E_error1_t -> Int -> Ptr CString
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5E_error1_t
    p Int
    40
    p'H5E_error1_t'desc :: Ptr (H5E_error1_t) -> Ptr (CString)
    instance Storable H5E_error1_t where
      sizeOf _ = 48
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 8
        v2 <- peekByteOff _p 16
        v3 <- peekByteOff _p 24
        v4 <- peekByteOff _p 32
        v5 <- peekByteOff _p 40
        return $ H5E_error1_t v0 v1 v2 v3 v4 v5
      poke _p (H5E_error1_t v0 v1 v2 v3 v4 v5) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 8 v1
        pokeByteOff _p 16 v2
        pokeByteOff _p 24 v3
        pokeByteOff _p 32 v4
        pokeByteOff _p 40 v5
        return ()

    {-# LINE 650 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- | Callback type for 'h5e_walk1'
    --
    -- > typedef herr_t (*H5E_walk1_t)(int n, H5E_error1_t *err_desc, void *client_data);
    type H5E_walk1_t a = FunPtr (CInt -> In H5E_error1_t -> InOut a -> IO HErr_t)

    -- | Callback type for 'h5e_set_auto1'
    --
    -- > typedef herr_t (*H5E_auto1_t)(void *client_data);
    type H5E_auto1_t a = FunPtr (InOut a -> IO HErr_t)

    -- ** Function prototypes

    -- |This function is for backward compatbility.
    -- Clears the error stack for the specified error stack.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eclear1(void);
    foreign import ccall "H5Eclear1" h5e_clear1
      :: IO HErr_t
    foreign import ccall "&H5Eclear1" p_H5Eclear1
      :: FunPtr (IO HErr_t)

    {-# LINE 671 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |This function is for backward compatbility.
    -- Returns the current settings for the automatic error stack
    -- traversal function and its data for specific error stack.
    -- Either (or both) arguments may be null in which case the
    -- value is not returned.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eget_auto1(H5E_auto1_t *func, void **client_data);
    --
    -- NB: the @a@ type here should be existentially quantified, not universally, but
    -- Haskell doesn't have a convenient way to say so in a foreign import.
    foreign import ccall "H5Eget_auto1" h5e_get_auto1
      :: Out (H5E_auto1_t a) -> Out (InOut a) -> IO HErr_t
    foreign import ccall "&H5Eget_auto1" p_H5Eget_auto1
      :: FunPtr (Out (H5E_auto1_t a) -> Out (InOut a) -> IO HErr_t)

    {-# LINE 685 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |This function definition is for backward compatibility only.
    -- It doesn't have error stack and error class as parameters.
    -- The old definition of major and minor is casted as HID_T
    -- in H5Epublic.h
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Epush1(const char *file, const char *func, unsigned line,
    -- >     H5E_major_t maj, H5E_minor_t min, const char *str);
    foreign import ccall "H5Epush1" h5e_push1
      :: CString -> CString -> CUInt -> H5E_major_t -> H5E_minor_t -> CString -> IO HErr_t
    foreign import ccall "&H5Epush1" p_H5Epush1
      :: FunPtr (CString -> CString -> CUInt -> H5E_major_t -> H5E_minor_t -> CString -> IO HErr_t)

    {-# LINE 696 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |This function is for backward compatbility.
    -- Prints the error stack in some default way.  This is just a
    -- convenience function for 'h5e_walk1' with a function that
    -- prints error messages.  Users are encouraged to write there
    -- own more specific error handlers.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eprint1(FILE *stream);
    --
    -- NB: The first parameter is declared as 'InOut' to match 'H5E_auto1_t',
    -- but I'm quite sure it never modifies the passed value.
    foreign import ccall "H5Eprint1" h5e_print1
      :: InOut CFile -> IO HErr_t
    foreign import ccall "&H5Eprint1" p_H5Eprint1
      :: FunPtr (InOut CFile -> IO HErr_t)

    {-# LINE 710 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |This function is for backward compatbility.
    -- Turns on or off automatic printing of errors for certain
    -- error stack.  When turned on (non-null 'func' pointer) any
    -- API function which returns an error indication will first
    -- call 'func' passing it 'client_data' as an argument.
    --
    -- The default values before this function is called are
    -- 'h5e_print1' with client data being the standard error stream,
    -- 'stderr'.
    --
    -- Automatic stack traversal is always in the 'h5e_WALK_DOWNWARD'
    -- direction.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Eset_auto1(H5E_auto1_t func, void *client_data);
    foreign import ccall "H5Eset_auto1" h5e_set_auto1
      :: H5E_auto1_t a -> InOut a -> IO HErr_t
    foreign import ccall "&H5Eset_auto1" p_H5Eset_auto1
      :: FunPtr (H5E_auto1_t a -> InOut a -> IO HErr_t)

    {-# LINE 728 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |This function is for backward compatbility.
    -- Walks the error stack for the current thread and calls some
    -- function for each error along the way.
    --
    -- Returns non-negative on success / negative on failure
    --
    -- > herr_t H5Ewalk1(H5E_direction_t direction, H5E_walk1_t func,
    -- >     void *client_data);
    foreign import ccall "H5Ewalk1" h5e_walk1
      :: H5E_direction_t -> H5E_walk1_t a -> InOut a -> IO HErr_t
    foreign import ccall "&H5Ewalk1" p_H5Ewalk1
      :: FunPtr (H5E_direction_t -> H5E_walk1_t a -> InOut a -> IO HErr_t)

    {-# LINE 738 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Retrieves a major error message.
    --
    -- Returns message if succeeds, otherwise returns NULL.
    --
    -- > char *H5Eget_major(H5E_major_t maj);
    foreign import ccall "H5Eget_major" h5e_get_major
      :: H5E_major_t -> IO CString
    foreign import ccall "&H5Eget_major" p_H5Eget_major
      :: FunPtr (H5E_major_t -> IO CString)

    {-# LINE 745 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    -- |Retrieves a minor error message.
    --
    -- Returns message if succeeds, otherwise returns NULL.
    --
    -- > char *H5Eget_minor(H5E_minor_t min);
    foreign import ccall "H5Eget_minor" h5e_get_minor
      :: H5E_minor_t -> IO CString
    foreign import ccall "&H5Eget_minor" p_H5Eget_minor
      :: FunPtr (H5E_minor_t -> IO CString)

    {-# LINE 752 "src/Bindings/HDF5/Raw/H5E.hsc" #-}

    {-# LINE 754 "src/Bindings/HDF5/Raw/H5E.hsc" #-}