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

    module Bindings.HDF5.Raw.H5O where

    import Data.Int
    import Data.Word
    import Foreign.C.String
    import Foreign.C.Types
    import Foreign.Ptr
    import Foreign.Storable

    import Bindings.HDF5.Raw.H5     -- Generic Functions
    import Bindings.HDF5.Raw.H5I    -- IDs
    import Foreign.Ptr.Conventions

    -- * Constants

    -- ** Flags for object copy ('h5o_copy')

    -- |Copy only immediate members
    h5o_COPY_SHALLOW_HIERARCHY_FLAG :: forall a. Num a => a
    h5o_COPY_SHALLOW_HIERARCHY_FLAG = a
    1
    h5o_COPY_SHALLOW_HIERARCHY_FLAG :: (Num a) => a

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

    -- |Expand soft links into new objects
    h5o_COPY_EXPAND_SOFT_LINK_FLAG = 2
    h5o_COPY_EXPAND_SOFT_LINK_FLAG :: (Num a) => a

    {-# LINE 26 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Expand external links into new objects
    h5o_COPY_EXPAND_EXT_LINK_FLAG = 4
    h5o_COPY_EXPAND_EXT_LINK_FLAG :: (Num a) => a

    {-# LINE 29 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Copy objects that are pointed by references
    h5o_COPY_EXPAND_REFERENCE_FLAG = 8
    h5o_COPY_EXPAND_REFERENCE_FLAG :: (Num a) => a

    {-# LINE 32 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Copy object without copying attributes
    h5o_COPY_WITHOUT_ATTR_FLAG = 16
    h5o_COPY_WITHOUT_ATTR_FLAG :: (Num a) => a

    {-# LINE 35 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Copy NULL messages (empty space)
    h5o_COPY_PRESERVE_NULL_FLAG = 32
    h5o_COPY_PRESERVE_NULL_FLAG :: (Num a) => a

    {-# LINE 38 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Merge committed datatypes in dest file
    h5o_COPY_MERGE_COMMITTED_DTYPE_FLAG = 64
    h5o_COPY_MERGE_COMMITTED_DTYPE_FLAG :: (Num a) => a

    {-# LINE 41 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |All object copying flags (for internal checking)
    h5o_COPY_ALL = 127
    h5o_COPY_ALL :: (Num a) => a

    {-# LINE 44 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- ** Flags for shared message indexes
    -- Pass these flags in using the mesg_type_flags parameter in
    -- H5P_set_shared_mesg_index.

    -- | No shared messages
    h5o_SHMESG_NONE_FLAG :: forall a. Num a => a
    h5o_SHMESG_NONE_FLAG = a
    0
    h5o_SHMESG_NONE_FLAG :: (Num a) => a

    {-# LINE 52 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- | Simple Dataspace Message
    h5o_SHMESG_SDSPACE_FLAG = 2
    h5o_SHMESG_SDSPACE_FLAG :: (Num a) => a

    {-# LINE 55 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- | Datatype Message
    h5o_SHMESG_DTYPE_FLAG = 8
    h5o_SHMESG_DTYPE_FLAG :: (Num a) => a

    {-# LINE 58 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- | Fill Value Message
    h5o_SHMESG_FILL_FLAG = 32
    h5o_SHMESG_FILL_FLAG :: (Num a) => a

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

    -- | Filter pipeline message
    h5o_SHMESG_PLINE_FLAG = 2048
    h5o_SHMESG_PLINE_FLAG :: (Num a) => a

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

    -- | Attribute Message
    h5o_SHMESG_ATTR_FLAG = 4096
    h5o_SHMESG_ATTR_FLAG :: (Num a) => a

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

    h5o_SHMESG_ALL_FLAG = 6186
    h5o_SHMESG_ALL_FLAG :: (Num a) => a

    {-# LINE 69 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- ** Object header status flag definitions

    -- |2-bit field indicating # of bytes to store the size of chunk 0's data
    h5o_HDR_CHUNK0_SIZE :: forall a. Num a => a
    h5o_HDR_CHUNK0_SIZE = a
    3
    h5o_HDR_CHUNK0_SIZE :: (Num a) => a

    {-# LINE 74 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Attribute creation order is tracked
    h5o_HDR_ATTR_CRT_ORDER_TRACKED = 4
    h5o_HDR_ATTR_CRT_ORDER_TRACKED :: (Num a) => a

    {-# LINE 77 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Attribute creation order has index
    h5o_HDR_ATTR_CRT_ORDER_INDEXED = 8
    h5o_HDR_ATTR_CRT_ORDER_INDEXED :: (Num a) => a

    {-# LINE 80 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Non-default attribute storage phase change values stored
    h5o_HDR_ATTR_STORE_PHASE_CHANGE = 16
    h5o_HDR_ATTR_STORE_PHASE_CHANGE :: (Num a) => a

    {-# LINE 83 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Store access, modification, change & birth times for object
    h5o_HDR_STORE_TIMES = 32
    h5o_HDR_STORE_TIMES :: (Num a) => a

    {-# LINE 86 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    h5o_HDR_ALL_FLAGS = 63
    h5o_HDR_ALL_FLAGS :: (Num a) => a

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

    -- ** Maximum shared message values

    h5o_SHMESG_MAX_NINDEXES :: forall a. Num a => a
    h5o_SHMESG_MAX_NINDEXES = a
    8
    h5o_SHMESG_MAX_NINDEXES :: (Num a) => a

    {-# LINE 92 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_SHMESG_MAX_LIST_SIZE = 5000
    h5o_SHMESG_MAX_LIST_SIZE :: (Num a) => a

    {-# LINE 93 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- * Types

    -- |Types of objects in file
    newtype H5O_type_t = H5O_type_t Int32 deriving (Ptr H5O_type_t -> IO H5O_type_t
    Ptr H5O_type_t -> Int -> IO H5O_type_t
    Ptr H5O_type_t -> Int -> H5O_type_t -> IO ()
    Ptr H5O_type_t -> H5O_type_t -> IO ()
    H5O_type_t -> Int
    (H5O_type_t -> Int)
    -> (H5O_type_t -> Int)
    -> (Ptr H5O_type_t -> Int -> IO H5O_type_t)
    -> (Ptr H5O_type_t -> Int -> H5O_type_t -> IO ())
    -> (forall b. Ptr b -> Int -> IO H5O_type_t)
    -> (forall b. Ptr b -> Int -> H5O_type_t -> IO ())
    -> (Ptr H5O_type_t -> IO H5O_type_t)
    -> (Ptr H5O_type_t -> H5O_type_t -> IO ())
    -> Storable H5O_type_t
    forall b. Ptr b -> Int -> IO H5O_type_t
    forall b. Ptr b -> Int -> H5O_type_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 :: H5O_type_t -> Int
    sizeOf :: H5O_type_t -> Int
    $calignment :: H5O_type_t -> Int
    alignment :: H5O_type_t -> Int
    $cpeekElemOff :: Ptr H5O_type_t -> Int -> IO H5O_type_t
    peekElemOff :: Ptr H5O_type_t -> Int -> IO H5O_type_t
    $cpokeElemOff :: Ptr H5O_type_t -> Int -> H5O_type_t -> IO ()
    pokeElemOff :: Ptr H5O_type_t -> Int -> H5O_type_t -> IO ()
    $cpeekByteOff :: forall b. Ptr b -> Int -> IO H5O_type_t
    peekByteOff :: forall b. Ptr b -> Int -> IO H5O_type_t
    $cpokeByteOff :: forall b. Ptr b -> Int -> H5O_type_t -> IO ()
    pokeByteOff :: forall b. Ptr b -> Int -> H5O_type_t -> IO ()
    $cpeek :: Ptr H5O_type_t -> IO H5O_type_t
    peek :: Ptr H5O_type_t -> IO H5O_type_t
    $cpoke :: Ptr H5O_type_t -> H5O_type_t -> IO ()
    poke :: Ptr H5O_type_t -> H5O_type_t -> IO ()
    Storable, Int -> H5O_type_t -> ShowS
    [H5O_type_t] -> ShowS
    H5O_type_t -> String
    (Int -> H5O_type_t -> ShowS)
    -> (H5O_type_t -> String)
    -> ([H5O_type_t] -> ShowS)
    -> Show H5O_type_t
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> H5O_type_t -> ShowS
    showsPrec :: Int -> H5O_type_t -> ShowS
    $cshow :: H5O_type_t -> String
    show :: H5O_type_t -> String
    $cshowList :: [H5O_type_t] -> ShowS
    showList :: [H5O_type_t] -> ShowS
    Show, H5O_type_t -> H5O_type_t -> Bool
    (H5O_type_t -> H5O_type_t -> Bool)
    -> (H5O_type_t -> H5O_type_t -> Bool) -> Eq H5O_type_t
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: H5O_type_t -> H5O_type_t -> Bool
    == :: H5O_type_t -> H5O_type_t -> Bool
    $c/= :: H5O_type_t -> H5O_type_t -> Bool
    /= :: H5O_type_t -> H5O_type_t -> Bool
    Eq)

    {-# LINE 98 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Unknown object type
    h5o_TYPE_UNKNOWN :: H5O_type_t
    h5o_TYPE_UNKNOWN :: H5O_type_t
    h5o_TYPE_UNKNOWN = Int32 -> H5O_type_t
    H5O_type_t (-Int32
    1)

    {-# LINE 101 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Object is a group
    h5o_TYPE_GROUP :: H5O_type_t
    h5o_TYPE_GROUP :: H5O_type_t
    h5o_TYPE_GROUP = Int32 -> H5O_type_t
    H5O_type_t (Int32
    0)

    {-# LINE 104 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Object is a dataset
    h5o_TYPE_DATASET :: H5O_type_t
    h5o_TYPE_DATASET :: H5O_type_t
    h5o_TYPE_DATASET = Int32 -> H5O_type_t
    H5O_type_t (Int32
    1)

    {-# LINE 107 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Object is a named data type
    h5o_TYPE_NAMED_DATATYPE :: H5O_type_t
    h5o_TYPE_NAMED_DATATYPE :: H5O_type_t
    h5o_TYPE_NAMED_DATATYPE = Int32 -> H5O_type_t
    H5O_type_t (Int32
    2)

    {-# LINE 110 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Number of different object types
    h5o_TYPE_NTYPES = 4
    h5o_TYPE_NTYPES :: (Num a) => a

    {-# LINE 113 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 116 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 117 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 119 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 120 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 122 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 123 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 125 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    data H5O_hdr_info_t = H5O_hdr_info_t{
      h5o_hdr_info_t'version :: CUInt,
      h5o_hdr_info_t'nmesgs :: CUInt,
      h5o_hdr_info_t'nchunks :: CUInt,
      h5o_hdr_info_t'flags :: CUInt,
      h5o_hdr_info_t'space'total :: HSize_t,
      h5o_hdr_info_t'space'meta :: HSize_t,
      h5o_hdr_info_t'space'mesg :: HSize_t,
      h5o_hdr_info_t'space'free :: HSize_t,
      h5o_hdr_info_t'mesg'present :: Word64,
      h5o_hdr_info_t'mesg'shared :: Word64
    } deriving (Eq,Show)
    p'H5O_hdr_info_t'version :: Ptr H5O_hdr_info_t -> Ptr CUInt
    p'H5O_hdr_info_t'version Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr CUInt
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    0
    p'H5O_hdr_info_t'version :: Ptr (H5O_hdr_info_t) -> Ptr (CUInt)
    p'H5O_hdr_info_t'nmesgs :: Ptr H5O_hdr_info_t -> Ptr CUInt
    p'H5O_hdr_info_t'nmesgs Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr CUInt
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    4
    p'H5O_hdr_info_t'nmesgs :: Ptr (H5O_hdr_info_t) -> Ptr (CUInt)
    p'H5O_hdr_info_t'nchunks :: Ptr H5O_hdr_info_t -> Ptr CUInt
    p'H5O_hdr_info_t'nchunks Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr CUInt
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    8
    p'H5O_hdr_info_t'nchunks :: Ptr (H5O_hdr_info_t) -> Ptr (CUInt)
    p'H5O_hdr_info_t'flags :: Ptr H5O_hdr_info_t -> Ptr CUInt
    p'H5O_hdr_info_t'flags Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr CUInt
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    12
    p'H5O_hdr_info_t'flags :: Ptr (H5O_hdr_info_t) -> Ptr (CUInt)
    p'H5O_hdr_info_t'space'total :: Ptr H5O_hdr_info_t -> Ptr HSize_t
    p'H5O_hdr_info_t'space'total Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr HSize_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    16
    p'H5O_hdr_info_t'space'total :: Ptr (H5O_hdr_info_t) -> Ptr (HSize_t)
    p'H5O_hdr_info_t'space'meta :: Ptr H5O_hdr_info_t -> Ptr HSize_t
    p'H5O_hdr_info_t'space'meta Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr HSize_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    24
    p'H5O_hdr_info_t'space'meta :: Ptr (H5O_hdr_info_t) -> Ptr (HSize_t)
    p'H5O_hdr_info_t'space'mesg :: Ptr H5O_hdr_info_t -> Ptr HSize_t
    p'H5O_hdr_info_t'space'mesg Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr HSize_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    32
    p'H5O_hdr_info_t'space'mesg :: Ptr (H5O_hdr_info_t) -> Ptr (HSize_t)
    p'H5O_hdr_info_t'space'free :: Ptr H5O_hdr_info_t -> Ptr HSize_t
    p'H5O_hdr_info_t'space'free Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr HSize_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    40
    p'H5O_hdr_info_t'space'free :: Ptr (H5O_hdr_info_t) -> Ptr (HSize_t)
    p'H5O_hdr_info_t'mesg'present :: Ptr H5O_hdr_info_t -> Ptr Word64
    p'H5O_hdr_info_t'mesg'present Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr Word64
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    48
    p'H5O_hdr_info_t'mesg'present :: Ptr (H5O_hdr_info_t) -> Ptr (Word64)
    p'H5O_hdr_info_t'mesg'shared :: Ptr H5O_hdr_info_t -> Ptr Word64
    p'H5O_hdr_info_t'mesg'shared Ptr H5O_hdr_info_t
    p = Ptr H5O_hdr_info_t -> Int -> Ptr Word64
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_hdr_info_t
    p Int
    56
    p'H5O_hdr_info_t'mesg'shared :: Ptr (H5O_hdr_info_t) -> Ptr (Word64)
    instance Storable H5O_hdr_info_t where
      sizeOf _ = 64
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 4
        v2 <- peekByteOff _p 8
        v3 <- peekByteOff _p 12
        v4 <- peekByteOff _p 16
        v5 <- peekByteOff _p 24
        v6 <- peekByteOff _p 32
        v7 <- peekByteOff _p 40
        v8 <- peekByteOff _p 48
        v9 <- peekByteOff _p 56
        return $ H5O_hdr_info_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
      poke _p (H5O_hdr_info_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 4 v1
        pokeByteOff _p 8 v2
        pokeByteOff _p 12 v3
        pokeByteOff _p 16 v4
        pokeByteOff _p 24 v5
        pokeByteOff _p 32 v6
        pokeByteOff _p 40 v7
        pokeByteOff _p 48 v8
        pokeByteOff _p 56 v9
        return ()

    {-# LINE 126 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 128 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 129 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 131 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 132 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    data H5O_stat_t = H5O_stat_t{
      h5o_stat_t'size :: HSize_t,
      h5o_stat_t'free :: HSize_t,
      h5o_stat_t'nmesgs :: CUInt,
      h5o_stat_t'nchunks :: CUInt
    } deriving (Eq,Show)
    p'H5O_stat_t'size p = plusPtr p 0
    p'H5O_stat_t'size :: Ptr (H5O_stat_t) -> Ptr (HSize_t)
    p'H5O_stat_t'free p = plusPtr p 8
    p'H5O_stat_t'free :: Ptr (H5O_stat_t) -> Ptr (HSize_t)
    p'H5O_stat_t'nmesgs p = plusPtr p 16
    p'H5O_stat_t'nmesgs :: Ptr (H5O_stat_t) -> Ptr (CUInt)
    p'H5O_stat_t'nchunks p = plusPtr p 20
    p'H5O_stat_t'nchunks :: Ptr (H5O_stat_t) -> Ptr (CUInt)
    instance Storable H5O_stat_t where
      sizeOf _ = 24
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 8
        v2 <- peekByteOff _p 16
        v3 <- peekByteOff _p 20
        return $ H5O_stat_t v0 v1 v2 v3
      poke _p (H5O_stat_t v0 v1 v2 v3) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 8 v1
        pokeByteOff _p 16 v2
        pokeByteOff _p 20 v3
        return ()

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

    -- |Typedef for message creation indexes
    newtype H5O_msg_crt_idx_t = H5O_msg_crt_idx_t Word32 deriving (Storable, Show, Eq, Ord, Read)

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

    newtype H5O_mcdt_search_ret_t = H5O_mcdt_search_ret_t Int32 deriving (Storable, Show)

    {-# LINE 138 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Abort H5Ocopy
    h5o_MCDT_SEARCH_ERROR :: H5O_mcdt_search_ret_t
    h5o_MCDT_SEARCH_ERROR = H5O_mcdt_search_ret_t (-1)

    {-# LINE 141 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Continue the global search of all committed datatypes in the destination file
    h5o_MCDT_SEARCH_CONT :: H5O_mcdt_search_ret_t
    h5o_MCDT_SEARCH_CONT = H5O_mcdt_search_ret_t (0)

    {-# LINE 144 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Stop the search, but continue copying.  The committed datatype will be copied but not merged.
    h5o_MCDT_SEARCH_STOP :: H5O_mcdt_search_ret_t
    h5o_MCDT_SEARCH_STOP = H5O_mcdt_search_ret_t (1)

    {-# LINE 147 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Callback to invoke when completing the search for a matching committed datatype from the committed dtype list
    --
    -- > typedef H5O_mcdt_search_ret_t (*H5O_mcdt_search_cb_t)(void *op_data);
    type H5O_mcdt_search_cb_t a = FunPtr (InOut a -> IO H5O_mcdt_search_ret_t)

    -- * Functions

    -- |Opens an object within an HDF5 file.
    --
    -- This function opens an object in the same way that 'h5g_open2',
    -- 'h5t_open2', and 'h5d_open2' do. However, 'h5o_open' doesn't require
    -- the type of object to be known beforehand. This can be
    -- useful in user-defined links, for instance, when only a
    -- path is known.
    --
    -- The opened object should be closed again with 'h5o_close'
    -- or 'h5g_close', 'h5t_close', or 'h5d_close'.
    --
    -- On success, returns an open object identifier
    -- On failure, returns a negative value.
    --
    -- > hid_t H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id);
    foreign import ccall "H5Oopen" h5o_open
      :: HId_t -> CString -> HId_t -> IO HId_t
    foreign import ccall "&H5Oopen" p_H5Oopen
      :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

    {-# LINE 171 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Warning! This function is EXTREMELY DANGEROUS!
    --
    -- Improper use can lead to FILE CORRUPTION, INACCESSIBLE DATA,
    -- and other VERY BAD THINGS!
    --
    -- This function opens an object using its address within the
    -- HDF5 file, similar to an HDF5 hard link. The open object
    -- is identical to an object opened with 'h5o_open' and should
    -- be closed with 'h5o_close' or a type-specific closing
    -- function (such as 'h5g_close').
    --
    -- This function is very dangerous if called on an invalid
    -- address. For this reason, 'h5o_incr_refcount' should be
    -- used to prevent HDF5 from deleting any object that is
    -- referenced by address (e.g. by a user-defined link).
    -- 'h5o_decr_refcount' should be used when the object is
    -- no longer being referenced by address (e.g. when the UD link
    -- is deleted).
    --
    -- The address of the HDF5 file on disk has no effect on
    -- 'h5o_open_by_addr', nor does the use of any unusual file
    -- drivers. The \"address\" is really the offset within the
    -- HDF5 file, and HDF5's file drivers will transparently
    -- map this to an address on disk for the filesystem.
    --
    -- On success, returns an open object identifier
    -- On failure, returns a negative value.
    --
    -- > hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr);
    foreign import ccall "H5Oopen_by_addr" h5o_open_by_addr
      :: HId_t -> HAddr_t -> IO HId_t
    foreign import ccall "&H5Oopen_by_addr" p_H5Oopen_by_addr
      :: FunPtr (HId_t -> HAddr_t -> IO HId_t)

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

    -- |Opens an object within an HDF5 file, according to the offset
    -- within an index.
    --
    -- This function opens an object in the same way that 'h5g_open',
    -- 'h5t_open', and 'h5d_open' do. However, 'h5o_open' doesn't require
    -- the type of object to be known beforehand. This can be
    -- useful in user-defined links, for instance, when only a
    -- path is known.
    --
    -- The opened object should be closed again with 'h5o_close'
    -- or 'h5g_close', 'h5t_close', or 'h5d_close'.
    --
    -- On success, returns an open object identifier
    -- On failure, returns a negative value.
    --
    -- > hid_t H5Oopen_by_idx(hid_t loc_id, const char *group_name,
    -- >     H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id);
    foreign import ccall "H5Oopen_by_idx" h5o_open_by_idx
      :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HId_t
    foreign import ccall "&H5Oopen_by_idx" p_H5Oopen_by_idx
      :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HId_t)

    {-# LINE 221 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Determine if a linked-to object exists
    --
    -- > htri_t H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id);
    foreign import ccall "H5Oexists_by_name" h5o_exists_by_name
      :: HId_t -> CString -> HId_t -> IO HTri_t
    foreign import ccall "&H5Oexists_by_name" p_H5Oexists_by_name
      :: FunPtr (HId_t -> CString -> HId_t -> IO HTri_t)

    {-# LINE 226 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Creates a hard link from 'new_name' to the object specified
    -- by 'obj_id' using properties defined in the Link Creation
    -- Property List 'lcpl'.
    --
    -- This function should be used to link objects that have just
    -- been created.
    --
    -- 'new_name' is interpreted relative to 'new_loc_id', which
    -- is either a file ID or a group ID.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name,
    -- >     hid_t lcpl_id, hid_t lapl_id);
    foreign import ccall "H5Olink" h5o_link
      :: HId_t -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
    foreign import ccall "&H5Olink" p_H5Olink
      :: FunPtr (HId_t -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

    {-# LINE 242 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Warning! This function is EXTREMELY DANGEROUS!
    -- Improper use can lead to FILE CORRUPTION, INACCESSIBLE DATA,
    -- and other VERY BAD THINGS!
    --
    -- This function increments the \"hard link\" reference count
    -- for an object. It should be used when a user-defined link
    -- that references an object by address is created. When the
    -- link is deleted, 'h5o_decr_refcount' should be used.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Oincr_refcount(hid_t object_id);
    foreign import ccall "H5Oincr_refcount" h5o_incr_refcount
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Oincr_refcount" p_H5Oincr_refcount
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 256 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Warning! This function is EXTREMELY DANGEROUS!
    -- Improper use can lead to FILE CORRUPTION, INACCESSIBLE DATA,
    -- and other VERY BAD THINGS!
    --
    -- This function decrements the \"hard link\" reference count
    -- for an object. It should be used when user-defined links
    -- that reference an object by address are deleted, and only
    -- after 'h5o_incr_refcount' has already been used.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Odecr_refcount(hid_t object_id);
    foreign import ccall "H5Odecr_refcount" h5o_decr_refcount
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Odecr_refcount" p_H5Odecr_refcount
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 270 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Copy an object (group or dataset) to destination location
    -- within a file or cross files. 'plist_id' is a property list
    -- which is used to pass user options and properties to the
    -- copy. The name, 'dst_name', must not already be taken by some
    -- other object in the destination group.
    --
    -- 'h5o_copy' will fail if the name of the destination object
    --     exists in the destination group.  For example,
    --     @H5Ocopy(fid_src, \"/dset\", fid_dst, \"/dset\", ...)@
    --     will fail if \"/dset\" exists in the destination file
    --
    -- OPTIONS THAT HAVE BEEN IMPLEMENTED:
    --
    --     ['h5o_COPY_SHALLOW_HIERARCHY_FLAG']
    --         If this flag is specified, only immediate members of
    --         the group are copied. Otherwise (default), it will
    --         recursively copy all objects below the group
    --
    --     ['h5o_COPY_EXPAND_SOFT_LINK_FLAG']
    --         If this flag is specified, it will copy the objects
    --         pointed by the soft links. Otherwise (default), it
    --         will copy the soft link as they are
    --
    --     ['h5o_COPY_WITHOUT_ATTR_FLAG']
    --         If this flag is specified, it will copy object without
    --         copying attributes. Otherwise (default), it will
    --         copy object along with all its attributes
    --
    --     ['h5o_COPY_EXPAND_REFERENCE_FLAG']
    --         1. Copy object between two different files:
    --             When this flag is specified, it will copy objects that
    --             are pointed by the references and update the values of
    --             references in the destination file.  Otherwise (default)
    --             the values of references in the destination will set to
    --             zero
    --             The current implementation does not handle references
    --             inside of other datatype structure. For example, if
    --             a member of compound datatype is reference, H5Ocopy()
    --             will copy that field as it is. It will not set the
    --             value to zero as default is used nor copy the object
    --             pointed by that field the flag is set
    --         2. Copy object within the same file:
    --             This flag does not have any effect to the 'h5o_copy'.
    --             Datasets or attributes of references are copied as they
    --             are, i.e. values of references of the destination object
    --             are the same as the values of the source object
    --
    -- OPTIONS THAT MAY APPLY TO COPY IN THE FUTURE:
    --
    --     ['h5o_COPY_EXPAND_EXT_LINK_FLAG']
    --         If this flag is specified, it will expand the external links
    --         into new objects, Otherwise (default), it will keep external
    --         links as they are (default)
    --
    -- PROPERTIES THAT MAY APPLY TO COPY IN FUTURE:
    --
    --   * Change data layout such as chunk size
    --
    --   * Add filter such as data compression.
    --
    --   * Add an attribute to the copied object(s) that say the date/time
    --     for the copy or other information about the source file.
    --
    -- The intermediate group creation property should be passed in
    -- using the lcpl instead of the ocpypl.
    --
    -- Parameters:
    --
    -- [@ src_loc_id :: HId_t   @]  Source file or group identifier.
    --
    -- [@ src_name   :: CString @]  Name of the source object to be copied
    --
    -- [@ dst_loc_id :: HId_t   @]  Destination file or group identifier
    --
    -- [@ dst_name   :: CString @]  Name of the destination object
    --
    -- [@ ocpypl_id  :: HId_t   @]  Properties which apply to the copy
    --
    -- [@ lcpl_id    :: HId_t   @]  Properties which apply to the new hard link
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Ocopy(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id,
    -- >     const char *dst_name, hid_t ocpypl_id, hid_t lcpl_id);
    foreign import ccall "H5Ocopy" h5o_copy
      :: HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
    foreign import ccall "&H5Ocopy" p_H5Ocopy
      :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

    {-# LINE 356 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Gives the specified object a comment.  The 'comment' string
    -- should be a null terminated string.  An object can have only
    -- one comment at a time.  Passing NULL for the 'comment' argument
    -- will remove the comment property from the object.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Oset_comment(hid_t obj_id, const char *comment);
    foreign import ccall "H5Oset_comment" h5o_set_comment
      :: HId_t -> CString -> IO HErr_t
    foreign import ccall "&H5Oset_comment" p_H5Oset_comment
      :: FunPtr (HId_t -> CString -> IO HErr_t)

    {-# LINE 366 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Gives the specified object a comment.  The 'comment' string
    -- should be a null terminated string.  An object can have only
    -- one comment at a time.  Passing NULL for the 'comment' argument
    -- will remove the comment property from the object.
    --
    -- Note:  Deprecated in favor of using attributes on objects.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Oset_comment_by_name(hid_t loc_id, const char *name,
    -- >     const char *comment, hid_t lapl_id);
    foreign import ccall "H5Oset_comment_by_name" h5o_set_comment_by_name
      :: HId_t -> CString -> CString -> HId_t -> IO HErr_t
    foreign import ccall "&H5Oset_comment_by_name" p_H5Oset_comment_by_name
      :: FunPtr (HId_t -> CString -> CString -> HId_t -> IO HErr_t)

    {-# LINE 379 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Retrieve comment for an object.
    --
    -- On success, returns the number of bytes in the comment including the
    -- null terminator, or zero if the object has no comment.  On failure
    -- returns a negative value.
    --
    -- > ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize);
    foreign import ccall "H5Oget_comment" h5o_get_comment
      :: HId_t -> OutArray CChar -> CSize -> IO CSSize
    foreign import ccall "&H5Oget_comment" p_H5Oget_comment
      :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

    {-# LINE 388 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Retrieve comment for an object.
    --
    -- On success, returns the number of bytes in the comment including the
    -- null terminator, or zero if the object has no comment.  On failure
    -- returns a negative value.
    --
    -- > ssize_t H5Oget_comment_by_name(hid_t loc_id, const char *name,
    -- >     char *comment, size_t bufsize, hid_t lapl_id);
    foreign import ccall "H5Oget_comment_by_name" h5o_get_comment_by_name
      :: HId_t -> CString -> OutArray CChar -> CSize -> HId_t -> IO CSSize
    foreign import ccall "&H5Oget_comment_by_name" p_H5Oget_comment_by_name
      :: FunPtr (HId_t -> CString -> OutArray CChar -> CSize -> HId_t -> IO CSSize)

    {-# LINE 398 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- |Close an open file object.
    --
    -- This is the companion to 'h5o_open'. It is used to close any
    -- open object in an HDF5 file (but not IDs are that not file
    -- objects, such as property lists and dataspaces). It has
    -- the same effect as calling 'h5g_close', 'h5d_close', or 'h5t_close'.
    --
    -- Returns non-negative on success, negative on failure.
    --
    -- > herr_t H5Oclose(hid_t object_id);
    foreign import ccall "H5Oclose" h5o_close
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Oclose" p_H5Oclose
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 410 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    foreign import ccall "H5Oare_mdc_flushes_disabled" h5o_are_mdc_flushes_disabled
      :: HId_t -> Out hbool_t -> IO HErr_t
    foreign import ccall "&H5Oare_mdc_flushes_disabled" p_H5Oare_mdc_flushes_disabled
      :: FunPtr (HId_t -> Out hbool_t -> IO HErr_t)

    {-# LINE 412 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Odisable_mdc_flushes" h5o_disable_mdc_flushes
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Odisable_mdc_flushes" p_H5Odisable_mdc_flushes
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 413 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oenable_mdc_flushes" h5o_enable_mdc_flushes
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Oenable_mdc_flushes" p_H5Oenable_mdc_flushes
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 414 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oflush" h5o_flush
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Oflush" p_H5Oflush
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 415 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Orefresh" h5o_refresh
      :: HId_t -> IO HErr_t
    foreign import ccall "&H5Orefresh" p_H5Orefresh
      :: FunPtr (HId_t -> IO HErr_t)

    {-# LINE 416 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 418 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    h5o_INFO_BASIC = 1
    h5o_INFO_BASIC :: (Num a) => a

    {-# LINE 420 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_INFO_TIME = 2
    h5o_INFO_TIME :: (Num a) => a

    {-# LINE 421 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_INFO_NUM_ATTRS = 4
    h5o_INFO_NUM_ATTRS :: (Num a) => a

    {-# LINE 422 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_INFO_HDR = 8
    h5o_INFO_HDR :: (Num a) => a

    {-# LINE 423 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_INFO_META_SIZE = 16
    h5o_INFO_META_SIZE :: (Num a) => a

    {-# LINE 424 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_INFO_ALL = 31
    h5o_INFO_ALL :: (Num a) => a

    {-# LINE 425 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 427 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    --------------------------
    -- Compatibility Macros --
    --------------------------

    -- H5O_info_t

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

    {-# LINE 437 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 438 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 439 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 440 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 441 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 443 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 444 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 445 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 446 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 447 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 448 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 449 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    data H5O_info1_t = H5O_info1_t{
      H5O_info1_t -> CULong
    h5o_info1_t'fileno :: CULong,
      H5O_info1_t -> HAddr_t
    h5o_info1_t'addr :: HAddr_t,
      H5O_info1_t -> H5O_type_t
    h5o_info1_t'type :: H5O_type_t,
      h5o_info1_t'rc :: CUInt,
      h5o_info1_t'atime :: CTime,
      h5o_info1_t'mtime :: CTime,
      h5o_info1_t'ctime :: CTime,
      h5o_info1_t'btime :: CTime,
      H5O_info1_t -> HSize_t
    h5o_info1_t'num_attrs :: HSize_t,
      H5O_info1_t -> H5O_hdr_info_t
    h5o_info1_t'hdr :: H5O_hdr_info_t,
      H5O_info1_t -> H5_ih_info_t
    h5o_info1_t'meta_size'obj :: H5_ih_info_t,
      H5O_info1_t -> H5_ih_info_t
    h5o_info1_t'meta_size'attr :: H5_ih_info_t
    } deriving (H5O_info1_t -> H5O_info1_t -> Bool
    (H5O_info1_t -> H5O_info1_t -> Bool)
    -> (H5O_info1_t -> H5O_info1_t -> Bool) -> Eq H5O_info1_t
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: H5O_info1_t -> H5O_info1_t -> Bool
    == :: H5O_info1_t -> H5O_info1_t -> Bool
    $c/= :: H5O_info1_t -> H5O_info1_t -> Bool
    /= :: H5O_info1_t -> H5O_info1_t -> Bool
    Eq,Int -> H5O_info1_t -> ShowS
    [H5O_info1_t] -> ShowS
    H5O_info1_t -> String
    (Int -> H5O_info1_t -> ShowS)
    -> (H5O_info1_t -> String)
    -> ([H5O_info1_t] -> ShowS)
    -> Show H5O_info1_t
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> H5O_info1_t -> ShowS
    showsPrec :: Int -> H5O_info1_t -> ShowS
    $cshow :: H5O_info1_t -> String
    show :: H5O_info1_t -> String
    $cshowList :: [H5O_info1_t] -> ShowS
    showList :: [H5O_info1_t] -> ShowS
    Show)
    p'H5O_info1_t'fileno :: Ptr H5O_info1_t -> Ptr CULong
    p'H5O_info1_t'fileno Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr CULong
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    0
    p'H5O_info1_t'fileno :: Ptr (H5O_info1_t) -> Ptr (CULong)
    p'H5O_info1_t'addr p = plusPtr p 8
    p'H5O_info1_t'addr :: Ptr (H5O_info1_t) -> Ptr (HAddr_t)
    p'H5O_info1_t'type :: Ptr H5O_info1_t -> Ptr H5O_type_t
    p'H5O_info1_t'type Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr H5O_type_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    16
    p'H5O_info1_t'type :: Ptr (H5O_info1_t) -> Ptr (H5O_type_t)
    p'H5O_info1_t'rc :: Ptr H5O_info1_t -> Ptr CUInt
    p'H5O_info1_t'rc Ptr H5O_info1_t
    p = plusPtr Ptr H5O_info1_t
    p Int
    20
    p'H5O_info1_t'rc :: Ptr (H5O_info1_t) -> Ptr (CUInt)
    p'H5O_info1_t'atime :: Ptr H5O_info1_t -> Ptr CTime
    p'H5O_info1_t'atime Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr CTime
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    24
    p'H5O_info1_t'atime :: Ptr (H5O_info1_t) -> Ptr (CTime)
    p'H5O_info1_t'mtime :: Ptr H5O_info1_t -> Ptr CTime
    p'H5O_info1_t'mtime Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr CTime
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    32
    p'H5O_info1_t'mtime :: Ptr (H5O_info1_t) -> Ptr (CTime)
    p'H5O_info1_t'ctime :: Ptr H5O_info1_t -> Ptr CTime
    p'H5O_info1_t'ctime Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr CTime
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    40
    p'H5O_info1_t'ctime :: Ptr (H5O_info1_t) -> Ptr (CTime)
    p'H5O_info1_t'btime :: Ptr H5O_info1_t -> Ptr CTime
    p'H5O_info1_t'btime Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr CTime
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    48
    p'H5O_info2_t'token :: Ptr H5O_info2_t -> Ptr H5O_token_t
    p'H5O_info1_t'btime :: Ptr (H5O_info1_t) -> Ptr (CTime)
    p'H5O_info1_t'num_attrs :: Ptr H5O_info1_t -> Ptr HSize_t
    p'H5O_info1_t'num_attrs Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr HSize_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    56
    p'H5O_info1_t'num_attrs :: Ptr (H5O_info1_t) -> Ptr (HSize_t)
    p'H5O_info1_t'hdr :: Ptr H5O_info1_t -> Ptr H5O_hdr_info_t
    p'H5O_info1_t'hdr Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr H5O_hdr_info_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    64
    p'H5O_info1_t'hdr :: Ptr (H5O_info1_t) -> Ptr (H5O_hdr_info_t)
    p'H5O_info1_t'meta_size'obj :: Ptr H5O_info1_t -> Ptr H5_ih_info_t
    p'H5O_info1_t'meta_size'obj Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr H5_ih_info_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    128
    p'H5O_info1_t'meta_size'obj :: Ptr (H5O_info1_t) -> Ptr (H5_ih_info_t)
    p'H5O_info1_t'meta_size'attr :: Ptr H5O_info1_t -> Ptr H5_ih_info_t
    p'H5O_info1_t'meta_size'attr Ptr H5O_info1_t
    p = Ptr H5O_info1_t -> Int -> Ptr H5_ih_info_t
    forall a b. Ptr a -> Int -> Ptr b
    plusPtr Ptr H5O_info1_t
    p Int
    144
    p'H5O_info1_t'meta_size'attr :: Ptr (H5O_info1_t) -> Ptr (H5_ih_info_t)
    instance Storable H5O_info1_t where
      sizeOf _ = 160
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 8
        v2 <- peekByteOff _p 16
        v3 <- peekByteOff _p 20
        v4 <- peekByteOff _p 24
        v5 <- peekByteOff _p 32
        v6 <- peekByteOff _p 40
        v7 <- peekByteOff _p 48
        v8 <- peekByteOff _p 56
        v9 <- peekByteOff _p 64
        v10 <- peekByteOff _p 128
        v11 <- peekByteOff _p 144
        return $ H5O_info1_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
      poke _p (H5O_info1_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 8 v1
        pokeByteOff _p 16 v2
        pokeByteOff _p 20 v3
        pokeByteOff _p 24 v4
        pokeByteOff _p 32 v5
        pokeByteOff _p 40 v6
        pokeByteOff _p 48 v7
        pokeByteOff _p 56 v8
        pokeByteOff _p 64 v9
        pokeByteOff _p 128 v10
        pokeByteOff _p 144 v11
        return ()

    {-# LINE 450 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 452 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 453 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    data H5O_token_t = H5O_token_t{
      h5o_token_t'__data :: CUChar
    } deriving (Eq,Show)
    p'H5O_token_t'__data p = plusPtr p 0
    p'H5O_token_t'__data :: Ptr (H5O_token_t) -> Ptr (CUChar)
    instance Storable H5O_token_t where
      sizeOf _ = 16
      alignment _ = 1
      peek _p = do
        v0 <- peekByteOff _p 0
        return $ H5O_token_t v0
      poke _p (H5O_token_t v0) = do
        pokeByteOff _p 0 v0
        return ()

    {-# LINE 454 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 457 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 458 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 459 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 460 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 461 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 462 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

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

    {-# LINE 464 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 465 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    data H5O_info2_t = H5O_info2_t{
      h5o_info2_t'fileno :: CULong,
      h5o_info2_t'token :: H5O_token_t,
      h5o_info2_t'type :: H5O_type_t,
      h5o_info2_t'rc :: CUInt,
      h5o_info2_t'atime :: CTime,
      h5o_info2_t'mtime :: CTime,
      h5o_info2_t'ctime :: CTime,
      h5o_info2_t'btime :: CTime,
      h5o_info2_t'num_attrs :: HSize_t
    } deriving (Eq,Show)
    p'H5O_info2_t'fileno p = plusPtr p 0
    p'H5O_info2_t'fileno :: Ptr (H5O_info2_t) -> Ptr (CULong)
    p'H5O_info2_t'token p = plusPtr p 8
    p'H5O_info2_t'token :: Ptr (H5O_info2_t) -> Ptr (H5O_token_t)
    p'H5O_info2_t'type p = plusPtr p 24
    p'H5O_info2_t'type :: Ptr (H5O_info2_t) -> Ptr (H5O_type_t)
    p'H5O_info2_t'rc p = plusPtr p 28
    p'H5O_info2_t'rc :: Ptr (H5O_info2_t) -> Ptr (CUInt)
    p'H5O_info2_t'atime p = plusPtr p 32
    p'H5O_info2_t'atime :: Ptr (H5O_info2_t) -> Ptr (CTime)
    p'H5O_info2_t'mtime p = plusPtr p 40
    p'H5O_info2_t'mtime :: Ptr (H5O_info2_t) -> Ptr (CTime)
    p'H5O_info2_t'ctime p = plusPtr p 48
    p'H5O_info2_t'ctime :: Ptr (H5O_info2_t) -> Ptr (CTime)
    p'H5O_info2_t'btime p = plusPtr p 56
    p'H5O_info2_t'btime :: Ptr (H5O_info2_t) -> Ptr (CTime)
    p'H5O_info2_t'num_attrs p = plusPtr p 64
    p'H5O_info2_t'num_attrs :: Ptr (H5O_info2_t) -> Ptr (HSize_t)
    instance Storable H5O_info2_t where
      sizeOf _ = 72
      alignment _ = 8
      peek _p = do
        v0 <- peekByteOff _p 0
        v1 <- peekByteOff _p 8
        v2 <- peekByteOff _p 24
        v3 <- peekByteOff _p 28
        v4 <- peekByteOff _p 32
        v5 <- peekByteOff _p 40
        v6 <- peekByteOff _p 48
        v7 <- peekByteOff _p 56
        v8 <- peekByteOff _p 64
        return $ H5O_info2_t v0 v1 v2 v3 v4 v5 v6 v7 v8
      poke _p (H5O_info2_t v0 v1 v2 v3 v4 v5 v6 v7 v8) = do
        pokeByteOff _p 0 v0
        pokeByteOff _p 8 v1
        pokeByteOff _p 24 v2
        pokeByteOff _p 28 v3
        pokeByteOff _p 32 v4
        pokeByteOff _p 40 v5
        pokeByteOff _p 48 v6
        pokeByteOff _p 56 v7
        pokeByteOff _p 64 v8
        return ()

    {-# LINE 466 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 468 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    type H5O_info_t = H5O_info1_t

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

    {-# LINE 476 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 495 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5O_iterate_t

    {-# LINE 499 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    type H5O_iterate1_t a = FunPtr (HId_t -> CString -> In H5O_info1_t -> InOut a -> IO HErr_t)
    type H5O_iterate2_t a = FunPtr (HId_t -> CString -> In H5O_info2_t -> InOut a -> IO HErr_t)

    {-# LINE 502 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    type H5O_iterate_t  a = FunPtr (HId_t -> CString -> In H5O_info_t ->  InOut a -> IO HErr_t)

    {-# LINE 508 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 512 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5Oget_info

    {-# LINE 516 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info1" h5o_get_info1
      :: HId_t -> Out H5O_info1_t -> IO HErr_t
    foreign import ccall "&H5Oget_info1" p_H5Oget_info1
      :: FunPtr (HId_t -> Out H5O_info1_t -> IO HErr_t)

    {-# LINE 517 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info2" h5o_get_info2
      :: HId_t -> Out H5O_info1_t -> CUInt -> IO HErr_t
    foreign import ccall "&H5Oget_info2" p_H5Oget_info2
      :: FunPtr (HId_t -> Out H5O_info1_t -> CUInt -> IO HErr_t)

    {-# LINE 518 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 519 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_get_info :: HId_t -> Out H5O_info_t -> IO HErr_t
    h5o_get_info = h5o_get_info1

    {-# LINE 531 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 536 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5Oget_info_by_idx

    {-# LINE 541 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info_by_idx1" h5o_get_info_by_idx1
      :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5O_info1_t -> HId_t -> IO HErr_t
    foreign import ccall "&H5Oget_info_by_idx1" p_H5Oget_info_by_idx1
      :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5O_info1_t -> HId_t -> IO HErr_t)

    {-# LINE 542 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info_by_idx2" h5o_get_info_by_idx2
      :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t
    foreign import ccall "&H5Oget_info_by_idx2" p_H5Oget_info_by_idx2
      :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t)

    {-# LINE 543 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 544 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_get_info_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5O_info_t -> HId_t -> IO HErr_t
    h5o_get_info_by_idx = h5o_get_info_by_idx1

    {-# LINE 556 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 561 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5Oget_info_by_name

    {-# LINE 565 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info_by_name1" h5o_get_info_by_name1
      :: HId_t -> CString -> Out H5O_info1_t -> HId_t -> IO HErr_t
    foreign import ccall "&H5Oget_info_by_name1" p_H5Oget_info_by_name1
      :: FunPtr (HId_t -> CString -> Out H5O_info1_t -> HId_t -> IO HErr_t)

    {-# LINE 566 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Oget_info_by_name2" h5o_get_info_by_name2
      :: HId_t -> CString -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t
    foreign import ccall "&H5Oget_info_by_name2" p_H5Oget_info_by_name2
      :: FunPtr (HId_t -> CString -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t)

    {-# LINE 567 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 568 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_get_info_by_name :: HId_t -> CString -> Out H5O_info_t -> HId_t -> IO HErr_t
    h5o_get_info_by_name = h5o_get_info_by_name1

    {-# LINE 580 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 585 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5Ovisit

    -- |Recursively visit an object and all the objects reachable
    -- from it.  If the starting object is a group, all the objects
    -- linked to from that group will be visited.  Links within
    -- each group are visited according to the order within the
    -- specified index (unless the specified index does not exist for
    -- a particular group, then the "name" index is used).
    --
    -- NOTE: Soft links and user-defined links are ignored during
    -- this operation.
    --
    -- NOTE: Each _object_ reachable from the initial group will only
    -- be visited once.  If multiple hard links point to the same
    -- object, the first link to the object's path (according to the
    -- iteration index and iteration order given) will be used to in
    -- the callback about the object.
    --
    -- On success, returns the return value of the first operator that
    -- returns non-zero, or zero if all members were processed with no
    -- operator returning non-zero.
    --
    -- Returns negative if something goes wrong within the library, or
    -- the negative value returned by one of the operators.
    --
    -- > herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
    -- >     H5O_iterate_t op, void *op_data);

    {-# LINE 615 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Ovisit1" h5o_visit1
      :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> IO HErr_t
    foreign import ccall "&H5Ovisit1" p_H5Ovisit1
      :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> IO HErr_t)

    {-# LINE 616 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Ovisit2" h5o_visit2
      :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> IO HErr_t
    foreign import ccall "&H5Ovisit2" p_H5Ovisit2
      :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> IO HErr_t)

    {-# LINE 617 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 618 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_visit :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate_t a -> InOut a -> IO HErr_t
    h5o_visit = h5o_visit1

    {-# LINE 630 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 635 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    -- H5Ovisit_by_name

    -- |Recursively visit an object and all the objects reachable
    -- from it.  If the starting object is a group, all the objects
    -- linked to from that group will be visited.  Links within
    -- each group are visited according to the order within the
    -- specified index (unless the specified index does not exist for
    -- a particular group, then the "name" index is used).
    --
    -- NOTE: Soft links and user-defined links are ignored during
    -- this operation.
    --
    -- NOTE: Each _object_ reachable from the initial group will only
    -- be visited once.  If multiple hard links point to the same
    -- object, the first link to the object's path (according to the
    -- iteration index and iteration order given) will be used to in
    -- the callback about the object.
    --
    -- On success, returns the return value of the first operator that
    -- returns non-zero, or zero if all members were processed with no
    -- operator returning non-zero.
    --
    -- Returns negative if something goes wrong within the library, or
    -- the negative value returned by one of the operators.
    --
    -- > herr_t H5Ovisit_by_name(hid_t loc_id, const char *obj_name,
    -- >     H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op,
    -- >     void *op_data, hid_t lapl_id);

    {-# LINE 666 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Ovisit_by_name1" h5o_visit_by_name1
      :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> HId_t -> IO HErr_t
    foreign import ccall "&H5Ovisit_by_name1" p_H5Ovisit_by_name1
      :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> HId_t -> IO HErr_t)

    {-# LINE 667 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    foreign import ccall "H5Ovisit_by_name2" h5o_visit_by_name2
      :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> HId_t -> IO HErr_t
    foreign import ccall "&H5Ovisit_by_name2" p_H5Ovisit_by_name2
      :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> HId_t -> IO HErr_t)

    {-# LINE 668 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 669 "src/Bindings/HDF5/Raw/H5O.hsc" #-}
    h5o_visit_by_name :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5O_iterate_t a -> InOut a -> HId_t -> IO HErr_t
    h5o_visit_by_name = h5o_visit_by_name1

    {-# LINE 681 "src/Bindings/HDF5/Raw/H5O.hsc" #-}

    {-# LINE 686 "src/Bindings/HDF5/Raw/H5O.hsc" #-}